
[rpi] CM4 USB 인식 안될 때 (Waveshare CM4-IO-BASE-A)
Raspberry Pi CM4에 Recalbox를 설치했다.
HDMI 출력과 Recalbox 부팅은 정상인데 USB 키보드와 게임패드가 전혀 인식되지 않았다.
이번 글은 Waveshare CM4-IO-BASE-A 확장보드에서 USB 호스트 모드를 활성화한 과정을 정리한 것이다.
사용 환경
- Raspberry Pi Compute Module 4
- Waveshare CM4-IO-BASE-A
- Recalbox
- Linux PC에서 RECALBOX 부트 파티션 수정
이번 환경에서는 부트 파티션이 다음 경로로 연결되었다.
/media/maduinos/RECALBOX
사용자 이름과 운영체제에 따라 실제 연결 경로는 달라질 수 있다.
문제 상황
Recalbox 이미지를 설치한 뒤 다음 항목은 정상이었다.
- CM4 부팅 정상
- HDMI 화면 출력 정상
- Recalbox 메뉴 진입 정상
하지만 USB 포트에 키보드나 게임패드를 연결해도 반응이 없었다.
단순히 특정 게임패드의 호환성 문제가 아니라 USB 장치 전체가 인식되지 않는 상황이었다.
원인
CM4의 USB 2.0 인터페이스는 기본 상태에서 비활성화될 수 있다.
Waveshare CM4-IO-BASE-A에는 FE1.1S USB 허브 칩이 있으며, CM4의 USB 2.0 인터페이스 하나를 여러 포트로 확장한다.
따라서 운영체제에서 CM4의 USB 컨트롤러를 호스트 모드로 활성화하지 않으면 확장보드의 USB 포트도 사용할 수 없다.
Waveshare 공식 문서에서는 이 보드의 USB 호스트 활성화를 위해 다음 설정을 안내한다.
dtoverlay=dwc2,dr_mode=host
수정할 파일
Recalbox의 기본 config.txt에는 다음 경고가 있다.
Warning: do not edit this file as it will be overwritten when upgrading!
따라서 업데이트 시 덮어쓸 수 있는 config.txt를 직접 수정하지 않고 사용자 설정 파일을 수정한다.
recalbox-user-config.txt
Recalbox가 실행 중일 때의 경로는 다음과 같다.
/boot/recalbox-user-config.txt
부트 파티션을 Linux PC에 연결한 이번 환경에서는 다음 경로였다.
/media/maduinos/RECALBOX/recalbox-user-config.txt
현재 USB 설정 확인
설정을 추가하기 전에 기존 otg_mode 또는 dwc2 설정이 있는지 확인했다.
grep -nE 'otg_mode|dwc2|dr_mode' \
/media/maduinos/RECALBOX/config.txt \
/media/maduinos/RECALBOX/recalbox-user-config.txt
이번 Recalbox 이미지에는 관련 설정이 없었다.
다른 이미지에서 otg_mode=1이 발견된다면 Waveshare 공식 안내에 따라 해당 설정을 제거하거나 주석 처리한 뒤 dwc2 호스트 설정을 사용하는 것이 좋다.
두 방식을 동시에 넣지 않는다.
해결 방법
1. 원본 설정 백업
cp /media/maduinos/RECALBOX/recalbox-user-config.txt \
/media/maduinos/RECALBOX/recalbox-user-config.txt.bak
2. 사용자 설정 파일 열기
nano /media/maduinos/RECALBOX/recalbox-user-config.txt
3. 파일 맨 끝에 USB 호스트 설정 추가
# Waveshare CM4-IO-BASE-A USB host
dtoverlay=dwc2,dr_mode=host
현재 Recalbox의 config.txt는 [all] 구간에서 recalbox-user-config.txt를 불러오므로 이번 환경에서는 [all]을 다시 추가할 필요가 없었다.
저장 후 설정이 들어갔는지 확인한다.
grep -nE 'otg_mode|dwc2|dr_mode' \
/media/maduinos/RECALBOX/recalbox-user-config.txt
예상 결과:
dtoverlay=dwc2,dr_mode=host
안전하게 제거하고 재부팅
설정을 저장한 뒤 디스크 캐시를 반영한다.
sync
그다음 파일 관리자에서 RECALBOX 드라이브를 안전하게 꺼낸다.
CM4에 다시 연결한 뒤 전원을 완전히 껐다가 켠다.
단순 재시작보다 전원을 완전히 차단한 뒤 다시 인가하는 것이 확실하다.
그래도 USB가 인식되지 않을 때
otg_mode=1 중복 확인
grep -nE 'otg_mode|dwc2|dr_mode' \
/boot/config.txt \
/boot/recalbox-user-config.txt
otg_mode=1과 dtoverlay=dwc2,dr_mode=host가 함께 들어가 있다면 otg_mode=1을 제거하거나 주석 처리한다.
BOOT 점퍼 확인
CM4-IO-BASE-A의 BOOT 점퍼는 정상 부팅 상태인 OPEN이어야 한다.
- 점퍼 Short: USB-C를 통한 eMMC 프로그램 모드
- 점퍼 Open: eMMC 또는 SD 카드 정상 부팅
전원 확인
PC의 USB 포트 대신 안정적인 5V/2.5A 이상 전원 어댑터를 사용한다.
USB 저장장치처럼 소비전력이 큰 장치보다 저전력 유선 키보드로 먼저 확인하는 것이 좋다.
완전한 전원 재인가
설정 변경 후 CM4 전원을 완전히 끄고 잠시 기다린 뒤 다시 켠다.
설정 되돌리기
문제가 생기면 백업 파일을 원래 이름으로 복원한다.
cp /media/maduinos/RECALBOX/recalbox-user-config.txt.bak \
/media/maduinos/RECALBOX/recalbox-user-config.txt
또는 다음 한 줄만 제거하면 된다.
dtoverlay=dwc2,dr_mode=host
정리
문제는 Recalbox 자체의 게임패드 설정이 아니라 CM4의 USB 호스트 컨트롤러가 활성화되지 않은 것이었다.
Waveshare CM4-IO-BASE-A에서는 Recalbox의 recalbox-user-config.txt에 다음 한 줄을 추가하면 된다.
dtoverlay=dwc2,dr_mode=host
핵심은 config.txt가 아니라 업데이트 후에도 유지되는 recalbox-user-config.txt를 수정하는 것이다.
끝 :)
0 댓글