본문으로 건너뛰기

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 / exitbluetoothctl 셸을 종료합니다.

최소한의 페어링 세션은 다음과 같습니다.

[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 장치로 스트리밍됩니다.