メインコンテンツまでスキップ

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

connectConnection 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デバイスにストリーミングされるはずです。