Bluetooth를 Modalix SoM DevKit에 설정합니다.
이 가이드를 사용하여 Bluetooth USB 어댑터를 Modalix SoM DevKit에 연결하고 bluez를 사용하여 Bluetooth 스택을 실행합니다.
Bluetooth 지원에는 eLxr 런타임에서 실행되는 SDK 릴리스 2.1.0 이상이 필요합니다. 런타임을 확인하려면 eLxr로 변환을 참조하세요.
1단계: Bluetooth USB 어댑터를 연결합니다.
Bluetooth USB 어댑터를 DevKit의 USB 포트 중 하나에 연결한 다음, 커널이 lsusb를 사용하여 해당 장치를 인식하는지 확인합니다.
sima@modalix:~$ lsusb
Bus 002 Device 002: ID 0bda:0489 Realtek Semiconductor Corp. 4-Port USB 3.0 Hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 7392:c611 Edimax Technology Co., Ltd Edimax Bluetooth Adapter
Bus 001 Device 002: ID 0bda:5489 Realtek Semiconductor Corp. 4-Port USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bluetooth 어댑터가 목록에 표시되어야 합니다. 이 예에서는 어댑터가 버스 001, 장치 003에 있는 Edimax Bluetooth Adapter입니다. 어댑터가 목록에 표시되지 않으면 어댑터를 분리했다가 다시 연결하거나 다른 USB 포트를 사용해 보세요.
Details
2단계: BlueZ
설치bluez 스택과 bluetooth 서비스를 설치합니다.
sima@modalix:~$ sudo apt update && sudo apt-get install bluez bluetooth -y
3단계. 다음을 확인합니다. Bluetooth 커널 모듈
트리 내에 있는지 확인합니다. bluetooth 커널 모듈을 사용할 수 있습니다.
sima@modalix:~$ modinfo bluetooth
filename: /lib/modules/6.18.3-modalix/kernel/net/bluetooth/bluetooth.ko
alias: net-pf-31
license: GPL
version: 2.22
description: Bluetooth Core ver 2.22
author: Marcel Holtmann <marcel@holtmann.org>
srcversion: 5D3CDB34E67B8B16F66F6AC
depends: ecdh_generic,rfkill
intree: Y
name: bluetooth
vermagic: 6.18.3-modalix SMP preempt mod_unload aarch64
parm: disable_esco:Disable eSCO connection creation (bool)
parm: disable_ertm:Disable enhanced retransmission mode (bool)
parm: enable_ecred:Enable enhanced credit flow control mode (bool)
4단계: bluetoothctl을 실행합니다.
대화형 Bluetooth 컨트롤러를 시작합니다.
sima@modalix:~$ bluetoothctl
Agent registered
[bluetooth]#
bluetoothctl은 로컬 어댑터와 원격 장치를 관리하기 위한 BlueZ의 대화형 셸입니다. [bluetooth]# 프롬프트에서 다음 명령을 사용하여 일반적인 페어링 및 연결 과정을 수행합니다.
| 명령 | 목적 |
|---|---|
power on | 로컬 Bluetooth 컨트롤러를 켜십시오. 스캔 또는 페어링을 수행하기 전에 반드시 켜야 합니다. |
agent on / default-agent | 기본 페어링 에이전트를 등록하고 활성화하여 PIN 및 확인 메시지가 이 셸에서 처리되도록 합니다. |
scan on | 장치 검색을 시작합니다. 근처 장치는 [NEW] Device <MAC> <Name> 형식으로 표시됩니다. 대상 장치가 목록에 나타나면 scan off를 한 번 실행합니다. |
devices | 컨트롤러가 감지한 장치 목록을 표시합니다. |
pair <MAC> | MAC 주소를 사용하여 장치와 페어링합니다. 양쪽 장치에서 패스키를 확인하라는 메시지가 표시될 수 있습니다. |
trust <MAC> | 해당 장치를 신뢰할 수 있는 장치로 등록하면, 이후 재부팅 시 페어링 과정을 거치지 않고 자동으로 연결됩니다. |
connect <MAC> | 활성 연결을 설정합니다. 오디오 장치의 경우, 이는 6단계에서 사용된 A2DP 싱크를 활성화하는 역할을 합니다. |
info <MAC> | 장치 세부 정보(페어링된 장치, 신뢰할 수 있는 장치, 연결된 장치, 지원되는 프로필)를 표시합니다. |
disconnect <MAC> / remove <MAC> | 세션을 종료하거나, 페어링 기록을 완전히 삭제합니다. |
help | 사용 가능한 모든 명령어와 해당 인수를 나열합니다. |
quit / exit | bluetoothctl 셸을 종료합니다. |
최소한의 페어링 세션은 다음과 같습니다.
[bluetooth]# power on
[bluetooth]# agent on
[bluetooth]# scan on
...
[NEW] Device AA:BB:CC:DD:EE:FF My Speaker
[bluetooth]# scan off
[bluetooth]# pair AA:BB:CC:DD:EE:FF
[bluetooth]# trust AA:BB:CC:DD:EE:FF
[bluetooth]# connect AA:BB:CC:DD:EE:FF
connect 명령이 Connection successful을 표시하면 장치가 아래 오디오 라우팅 단계를 진행할 준비가 된 것입니다.
5단계에서 7단계는 스피커 및 헤드셋과 같은 Bluetooth 오디오 장치에만 필요합니다. 키보드, 마우스, 게임패드, 센서 및 파일 전송 장치와 같은 오디오 장치가 아닌 주변 장치의 경우 4단계에서 페어링하면 충분합니다.
5단계: 오디오 라이브러리 및 플레이어 설치
DevKit에서 페어링된 Bluetooth 스피커 또는 헤드셋으로 오디오를 스트리밍하려면 PipeWire, BlueZ SPA 플러그인, 그리고 콘솔 오디오 플레이어를 설치하십시오.
sima@modalix:~$ sudo apt install pipewire-audio libspa-0.2-bluetooth cmus
6단계. Bluetooth 출력 장치로 오디오 라우팅
4단계에서 Bluetooth 오디오 장치를 페어링하고 연결한 후, 사용 가능한 PipeWire/PulseAudio 출력 장치(싱크)를 나열합니다.
sima@modalix:~$ pactl list short sinks
페어링된 장치에 해당하는 bluez_sink.XX_XX_XX_XX_XX_XX.a2dp_sink 항목을 찾은 다음, 기본 출력 장치로 설정합니다(이전 명령어에서 얻은 MAC 주소로 자리 표시자를 대체합니다).
sima@modalix:~$ pactl set-default-sink bluez_sink.XX_XX_XX_XX_XX_XX.a2dp_sink
새로운 라우팅이 적용되도록 Bluetooth 및 오디오 서비스를 다시 시작하세요.
sima@modalix:~$ sudo systemctl restart bluetooth wireplumber pipewire pipewire-pulse
7단계. cmus를 사용하여 오디오 재생
cmus를 실행하고 오디오 파일 또는 디렉터리를 큐에 추가하여 Bluetooth 장치를 통해 재생되는지 확인합니다.
sima@modalix:~$ cmus
cmus 인터페이스에서 5를 눌러 파일 브라우저로 전환하고, 미디어 파일을 찾아 Enter를 눌러 재생합니다. 이제 오디오가 페어링된 Bluetooth 장치로 스트리밍됩니다.