Files
Radxa_MIXER/README.md
T

12 KiB
Raw Blame History

Radxa 무선 오디오 믹서

AirPlay 2와 블루투스 오디오 입력을 동시에 섞어 USB DAC 또는 블루투스 헤드폰·스피커 한 대로 출력하는 설치 자료입니다.

검증 기준은 Radxa Zero 3W / RAM 1 GB / Armbian 26.8.3 / Debian 13 trixie / 커널 6.1.115-vendor-rk35xx입니다. 다른 Radxa도 같은 OS와 오디오·블루투스 지원이 있으면 이 구성으로 시도할 수 있지만, 모든 보드의 무선 드라이버를 검증한 것은 아닙니다. 설치기는 Debian 13 외의 OS에서는 작업을 중단합니다.

구성

Mac/iPhone의 AirPlay 2 ── Shairport Sync ─┐
                                        ├─ ALSA 스테레오 믹서 ─ USB DAC
휴대폰 등의 Bluetooth ── BlueALSA ───────┘                  또는
                                                Loopback → Bluetooth 헤드폰/스피커
  • AirPlay 2: Shairport Sync 5.5.2, NQPTP 1.2.8, 공유 메모리 규격 smi10. 웹 제어용 D-Bus 지원과 네이티브 볼륨 패치를 포함합니다.
  • Bluetooth: Debian의 BlueALSA 패키지. 기준 보드 버전 4.3.1.
  • 수신과 송신은 A2DP 음악 프로필을 사용합니다. 기준 보드에서는 SBC로 연결됐습니다.
  • SBC 송신 품질은 medium입니다. 기준 보드에서 high로 동시 수신·송신 시 끊겨 전송량을 줄였습니다. 송신 버퍼는 500 ms이며 안정성은 청취 검증이 필요합니다.
  • DAC 출력은 44.1 kHz / 스테레오 / 16비트, 블루투스용 가상 믹서는 48 kHz입니다.
  • 각 입력을 3 dB 낮춥니다. 여러 입력의 큰 소리가 겹쳐 찢어지면 입력 볼륨을 낮추세요. 지연 없는 실시간 녹음/악기 모니터링용 구성은 아닙니다.
  • 각 송신 기기의 볼륨으로 믹스 비율을 바꿉니다.
  • 출력은 DAC 또는 블루투스 중 하나를 선택합니다. 양쪽 동시 출력은 구현하지 않았습니다.

웹 믹서

설치 후 브라우저에서 **http://보드IP:8088**을 여세요. 현재 보드는 http://192.168.10.83:8088이며, USB 관리 연결에서는 주소가 유지돼 있다면 http://10.55.0.1:8088을 사용합니다.

  • AirPlay 및 연결된 Bluetooth 입력별 볼륨·음소거.
  • AirPlay는 Shairport Sync의 기존 네이티브 볼륨을 사용합니다. 별도 ALSA softvol이나 추가 감쇠 단계는 만들지 않았습니다.
  • Bluetooth 볼륨 API는 A2DP 입력 PCM만 허용하며 DAC/헤드폰 출력 볼륨을 거부합니다.
  • DAC 선택, 등록한 Bluetooth 헤드폰·스피커 선택, 새 출력 장비 검색·페어링.
  • 출력 전환은 비동기로 실행하고 결과를 화면에 표시합니다.
  • LAN용 화면입니다. 인터넷 포트 개방은 하지 않습니다. 같은 네트워크의 접속자는 화면에서 제어할 수 있으며 별도 로그인은 없습니다. 상태 변경에는 요청 토큰과 동일 출처 검증을 사용합니다.
  • 새 휴대폰을 Bluetooth 입력으로 페어링하는 절차는 아래의 기존 CLI를 사용합니다.
  • 웹 서버는 radxa-mixer-web.service로 자동 시작합니다.

명령어도 계속 사용할 수 있습니다:

sudo radxa-audio inputs
sudo radxa-audio volume airplay 60
sudo radxa-audio mute airplay on
sudo radxa-audio mute airplay off
sudo radxa-audio volume AA:BB:CC:DD:EE:FF 70
sudo radxa-audio mute AA:BB:CC:DD:EE:FF on
sudo radxa-audio output dac --pcm hw:CARD=Audio,DEV=0

AirPlay의 볼륨은 원래 프로토콜 범위 −300 및 음소거 −144를 0100으로 표시합니다. Bluetooth는 원래 입력 PCM의 볼륨을 사용합니다. 송신 기기의 볼륨 변경도 같은 입력에 적용됩니다. 출력 장비 볼륨과 이퀄라이저는 웹 화면에 제공하지 않습니다.

sudo radxa-audio apply는 출력 장비가 꺼져 있어도 이미 저장한 출력 경로를 다시 적용할 수 있습니다. 새 출력 장비 선택에는 여전히 연결 확인이 필요합니다.

기존 보드에서 웹 기능을 추가하려면 전체 install.sh로 D-Bus 빌드를 설치하거나, 이미 D-Bus 지원 바이너리가 설치돼 있다면 sudo bash scripts/install-web.sh 후 sudo radxa-audio apply를 실행합니다. 전체 설치는 기본 DAC 출력으로 설정하므로 이후 원하는 Bluetooth 출력을 다시 선택하세요.

1. 새 보드 준비

  1. Debian 13 기반 Armbian을 설치하고 인터넷에 연결합니다.
  2. USB DAC를 꽂고 aplay -l에서 카드 이름을 확인합니다.
  3. 이 폴더 전체를 보드에 복사합니다. sources/도 필요합니다.

맥에서 실행할 예:

scp -r /Users/jsahn/Personal_works/Radxa_MIXER root@새보드IP:/root/
ssh root@새보드IP

그다음 보드에서:

cd /root/Radxa_MIXER
aplay -l
sudo bash install.sh --name "Radxa Desk" --dac hw:CARD=Audio,DEV=0

Audio는 현재 Realtek USB DAC의 ALSA 카드 ID입니다. 새 DAC가 Device라면 --dac hw:CARD=Device,DEV=0으로 바꾸세요. card 1 같은 숫자는 부팅마다 바뀔 수 있으므로 이름을 사용합니다. 새 보드의 장치 이름은 기존 Radxa Audio와 구별해 주세요.

동일한 AIC 드라이버의 Zero 3W에서 이전처럼 AirPlay가 끊긴다면:

sudo bash install.sh --name "Radxa Desk" --dac hw:CARD=Audio,DEV=0 --wifi5

--wifi5는 aic8800_fdrv의 ps_on=0 he_on=0을 부팅 설정으로 저장합니다. 다른 드라이버에는 적용하지 않으며, 지원 옵션이 없으면 설치를 중단합니다. 설정 적용은 다음 재부팅부터입니다. 설치 중 자동으로 재부팅하지 않습니다.

설치에는 apt 인터넷 연결이 필요합니다. 공식 소스는 이 폴더에 포함돼 있어 GitHub에 접속할 필요가 없습니다. 1 GB 보드의 빌드 메모리를 고려해 기본은 make -j 1이며 몇 분 이상 걸릴 수 있습니다. OS 전체 업그레이드는 하지 않습니다.

기본 출력은 DAC입니다. Wi-Fi 비밀번호, USB gadget 주소 10.55.0.1, netplan/NetworkManager 설정은 이 설치기가 변경하지 않습니다.

2. AirPlay 사용

MacBook 또는 아이폰의 출력에서 설치할 때 정한 이름을 선택합니다. Mac과 Radxa는 Bonjour/mDNS가 통하는 같은 네트워크에 있어야 합니다. 게스트 Wi-Fi의 기기 격리 기능이 켜져 있으면 발견되지 않을 수 있습니다.

3. 휴대폰을 블루투스 입력으로 연결

보드의 SSH 터미널에서:

sudo radxa-audio pair-input --seconds 120
  • 터미널을 열어 둔 채 휴대폰 Bluetooth 설정에서 Radxa Desk Bluetooth를 선택합니다.
  • 터미널에 본인 휴대폰의 오디오 서비스 승인 질문이 나오면 yes를 입력합니다.
  • 완료되면 quit을 입력합니다. 검색/페어링 모드는 종료 시 자동으로 닫힙니다.
  • 휴대폰을 신뢰 장치로 등록해, 다음 연결에서 같은 승인 대기가 생기지 않도록 합니다.
sudo radxa-audio devices
sudo radxa-audio pair 휴대폰MAC주소

이미 페어링돼 있으면 pair 명령은 해당 상태를 확인하고 신뢰 등록 및 오디오 연결을 진행합니다. 휴대폰의 출력 목록에서 Radxa Desk Bluetooth를 선택하세요.

4. 블루투스 출력 장비 연결 및 변경

보스 QC SC는 전원 스위치를 Bluetooth 표시 쪽으로 약 3초 유지해 Ready to connect 안내와 파란 LED 점멸이 나오도록 합니다. 다른 장비는 제조사의 페어링 모드를 켜세요.

sudo radxa-audio scan --seconds 30
sudo radxa-audio pair AA:BB:CC:DD:EE:FF --output

AA:BB:CC:DD:EE:FF를 검색 결과의 헤드폰/스피커 주소로 바꿉니다. 이 명령은 페어링 → 신뢰 등록 → 음악 프로필 연결 → 출력 전환을 진행합니다. 이후 다른 헤드폰으로 바꾸려면 새 헤드폰을 검색하고 같은 명령을 실행하면 됩니다.

bluetoothctl info 주소에서 Paired: yes여도 Bonded: no이면 임시 연결입니다. 재부팅 후 등록을 유지하려면 장비를 페어링 모드로 켠 뒤 sudo radxa-audio pair 주소 --output --bond를 사용하세요. 웹의 새 장비 등록도 영구 등록 성공을 확인하며, 인증 실패는 성공으로 표시하지 않습니다. 이미 영구 등록된 장비는 다시 페어링하지 않습니다.

이미 등록한 장비로 전환:

sudo radxa-audio output bluetooth AA:BB:CC:DD:EE:FF

마지막으로 선택한 블루투스 장비를 다시 사용:

sudo radxa-audio output bluetooth

DAC로 복귀:

sudo radxa-audio output dac

출력 전환 후 AirPlay를 다시 선택해야 할 수 있습니다. 블루투스 출력 장비가 연결되지 않으면 현재 DAC 출력을 바꾸기 전에 오류로 중단합니다. 서비스 시작 중 실패하면 변경 직전 설정으로 복구합니다.

헤드폰을 믹서 출력으로 시험할 때는 헤드폰을 휴대폰이나 Mac에 직접 연결한 경로 대신 Radxa 경로를 사용하세요. 헤드폰의 멀티포인트 자동 전환이 끼어들면 믹서의 소리가 아닌 다른 기기의 소리를 들을 수 있습니다.

5. 일상 관리

sudo radxa-audio status                     # 현재 출력/서비스/오디오 연결
sudo radxa-audio devices                    # Bluetooth 목록 + DAC 목록
sudo radxa-audio name "Radxa Living Room"   # AirPlay/블루투스 표시 이름
sudo radxa-audio dac hw:CARD=Device,DEV=0   # 다른 DAC로 설정
sudo radxa-audio apply                      # 저장한 설정 다시 적용

이전의 radxa-audio-output dac / bose 명령도 호환 래퍼로 제공합니다. bose는 마지막으로 설정한 블루투스 출력 장비를 뜻하며, 보스 주소가 고정돼 있지 않습니다.

관리 설정: /etc/radxa-audio/mixer.json. 관리 명령은 여기에 저장한 값을 기준으로 ALSA/systemd 설정을 생성합니다. /etc/asound.conf나 서비스 파일을 직접 편집하면 다음 관리 명령에서 덮어쓸 수 있으므로, 이름·DAC·출력 변경은 위 명령을 사용하세요.

6. 백업과 복구

설치 전 기존 파일과 서비스 상태는 /var/backups/radxa-audio-install/날짜-번호/에 저장됩니다. 설치 실패 시 이 상태로 자동 복구를 시도합니다.

설치 완료 후에도 원래 상태로 복구할 수 있습니다:

sudo python3 scripts/backup.py restore /var/backups/radxa-audio-install/실제백업이름

복구는 설치기가 관리하는 설정·로컬 바이너리·서비스 상태를 대상으로 합니다. apt로 추가한 의존 패키지와 블루투스 페어링 기록은 유지합니다. 운영 중 장비 변경 전 설정 백업은 /var/backups/radxa-audio/에 별도로 저장됩니다.

파일 안내

파일 용도
install.sh 새 보드 설치, 빌드, 서비스 설정, 실패 시 복구
scripts/radxa-audio.py 페어링/출력/이름/DAC 관리
scripts/web_server.py, scripts/input_controls.py, scripts/web/ 웹 화면/API 및 입력 전용 볼륨 제어
scripts/install-web.sh 웹 서비스 설치/갱신
sources/shairport-native-volume.patch 기존 AirPlay 볼륨을 현재 세션에 적용
scripts/backup.py 설치 전 백업/복원
scripts/check-build.sh 서비스 변경 없이 고정 소스 빌드 확인
sources/*.bundle, manifest.json 공식 Git 소스, 릴리스 태그, 커밋, SHA-256
tests/test_manager.py 입력 검증, 안전한 전환, 실패 복구 검사
TROUBLESHOOTING.md 검색/연결/무음/끊김 문제 해결
VALIDATION.md 실제 검증 범위와 남은 검증
reference/ 기존 보드 설정 참고. 새 보드에 그대로 복사하지 않습니다.

원본 프로젝트

Git bundle 안에 각 원본 프로젝트의 라이선스 파일도 포함됩니다. 이 설치 자료에는 개인 Wi-Fi 비밀번호나 블루투스 링크 키를 포함하지 않았습니다.