환경
- 디바이스: TOPST D3-G
- OS: Ubuntu GNOME Desktop v1.3.0 (보드 제공 이미지)
- 테스트 기기: JBL Go 3 (Bluetooth A2DP)
증상
- Bluetooth 스피커를 페어링 후 연결(connect) 시도해도 오디오 출력이 되지 않음
- pactl list sinks 실행 시 Bluetooth sink가 나타나지 않음
원인
/etc/pulse/default.pa 파일이 이미지 빌드 시 아래 한 줄만 포함된 상태로 배포됨:
set-sink-volume 0 6556
이 파일은 PulseAudio 데몬이 시작될 때 실행되는 초기화 스크립트인데, 오디오 드라이버 및 Bluetooth 모듈을 로드하는 구문이 전혀 없고 볼륨 설정만 존재함.
PulseAudio는 sink가 초기화되기 전에 set-sink-volume을 실행하려다 즉시 종료됨 (No sink found by this name or index). 결과적으로 module-bluetooth-discover,
module-bluetooth-policy 등 Bluetooth 오디오 모듈이 로드되지 않아 Bluetooth 오디오 장치를 사용할 수 없음.
재현 방법
- 이미지 기본 상태에서 cat /etc/pulse/default.pa 확인 → set-sink-volume 0 6556 한 줄만 존재
- systemctl --user status pulseaudio → Active: failed
- Bluetooth 스피커 페어링 후 connect 시도 → 연결은 되나 오디오 출력 없음
해결 방법
/etc/pulse/default.pa를 아래 내용으로 교체:
#!/usr/bin/pulseaudio -nF
load-module module-udev-detect
load-module module-default-device-restore
load-module module-rescue-streams
load-module module-always-sink
load-module module-suspend-on-idle
load-module module-position-event-sounds
load-module module-bluetooth-policy
load-module module-bluetooth-discover
load-module module-native-protocol-unix
교체 후 systemctl --user restart pulseaudio 실행하면 정상 동작함.
요청 사항
- 이미지 빌드 시 /etc/pulse/default.pa에 표준 모듈 로드 구문을 포함할 것
- 볼륨 기본값 설정이 필요하다면 모듈 로드 이후에 set-sink-volume 구문을 추가할 것