ラズパイ時代のレベルアップ! MyオリジナルLinuxの作り方

Raspberry Pi 2 LIFE ご購入はこちら
プロも使う Yocto 開発環境で初体験!
ラズパイ時代のレベルアップ!
My オリジナル Linux の作り方
第
3回
Bluetooth 版 Linux にする
Bluetoothデバイス
Bluetooth機器
キーボード
三ツ木 祐介
bluetoothctl
connman
アプリ
ケーション
ラズベリー・パイ3
BLEアンテナ
Bluez
無線LSI
BCM43438
プロセッサ
BCM2837
Linux動作
(ホスト)
DBUS
hciattach
rfkill
HCI
図 1 ラズベリー・パイ 3 向け最小構成 Linux を Bluetooth 機器に
対応させる
L2CAP
今回作るもの…
Bluetooth通信対応版シンプルLinux
●ハードウェア構成
機器構成のイメージを図 1 に示します.
図 の 中 で,BCM43438 を「Bluetooth デ バ イ ス 」,
キーボードを「Bluetooth 機器」と呼んでいます.「デ
バイス」と「機器」はどちらも同じ意味の言葉のため混
乱しそうです.一般的なユーザ視点であれば,ラズベ
リー・パイ 3 側をホスト,キーボード側をデバイス
(ターゲット)と呼ぶのが適切です.しかし,開発者
視 点 で, ラ ズ ベ リ ー・ パ イ 3 内 部 の Linux か ら
BCM43438 を見た場合,Linux がホスト,BCM43438
がデバイスとなります.このため,ここでは,ラズベ
リー・パイ 3 側を Bluetooth デバイス,キーボード側
を Bluetooth 機器と呼ぶことにします.
ユーザ
カーネル
SCO
BlueZ Core
HCI UART
今回は,第 1 回(2016 年 12 月号)で作成したラズベ
リー・パイ用最小構成「シンプル版 Linux」に Bluetooth
プロトコル・スタックを追加する方法を説明します.
作り直した Linux は「Bluetooth 版 Linux」と呼ぶこと
にします.
bluetoothd
HCI USB
UART Driver
UART
ハードウェア
BCM43438
図 2 Linux で使われる Bluetooth プロトコル・スタック BlueZ の
構成
Linux でハードウェアを制御するためには,デバイ
ス・ドライバが必要になります.ワイヤレス・チップ
セットによっては,ドライバの他に適切なファーム
ウェアが必要になります.BCM43438 もファームウェ
アが必要です.
通常,デバイス・ドライバとデバイスの名前は一致
しています.しかし,レジスタ構成や制御方法が似て
いる場合,複数のチップセットの制御を一つのドライ
バに実装されていることがあります.BCM43438 もそ
のようなもののうちの 1 つで,ドライバやファーム
ウェアの名前には BCM43430 が使用されています.
● Bluetooth のプロトコル・スタック
● 無線 LSI のデバイス・ドライバ
Linux における Bluetooth の機能は,オープンソー
スのプロトコル・スタックである BlueZ(1)によって実
ラズベリー・パイ 3 は BCM43438 という Bluetooth
と Wi-Fi のコンボ LSI をオンボードで搭載しています.
装されています.Bluez の構成を図 2 に示します.
HCI(Host Control Interface)やL2CAP(Logical Link
132
第 1 回 ラズパイ用最小 Linux を作る(2016 年 12 月号)
第 2 回 Windows 上で Linux を作れる仮想 PC の準備(2017 年 1 月号)
2017 年 2 月号