真に受けずに疑って読んでくれ。
ThinkPad X1 Yoga Gen6 + Ubuntu 20.04 で使う、Bluetooth機能について投稿する。手短に結論を書くと、今のところ、それほど依存しているわけではないが、特段問題はない。
このノーパソのBluetoohはIntelのハードウエア、HCIバージョンは5.1:
> hciconfig -a hci0
hci0: Type: Primary Bus: USB
:
HCI Version: 5.1 (0xa) Revision: 0x100
LMP Version: 5.1 (0xa) Subversion: 0x100
Manufacturer: Intel Corp. (2)
常用Bluetooh機器として、マウスとヘッドセットを使用しており、認識や接続は正常にできている。しばらく使用しているが、普通に使えている。Bluetoothヘッドセットの音声遅延も気になるほどではない。
> bluetoothctl devices
Device xx:xx:xx:xx:xx:xx <MY ANDROID SMARTPHONE>
Device xx:xx:xx:xx:xx:xx Soundcore Life Q10Device xx:xx:xx:xx:xx:xx MX Anywhere 2S
一番上はスマホの通話、メディアプレーヤー等の接続ができる。少なくとも、普通にペアリングするとBluetooth Tetheringデータ通信は出来ないが、最近のスマホはWifi経由でHotspotとして使用可能なので問題無い。
体感としては、数年前に比べれば大分互換性も良い。
現在のところ、自分の範囲では使えているが、Linux正式対応している機器は殆どないから、普通はPC用の機器をリスク承知で使うことになる。特定の機器では不具合も起こりうるだろう。もし何かが動かなかったら報告したい。
HCIとはなにか
ところで、上記、何気に「HCIバージョンは5.1」とかスカして言っているが、HCI(Host Controller Interfaceの略)とはなんだろうか。実は俺はよく知らないので、分からない俺自身も分かるように説明する。
Ethernetとか、USBとか、Bluetoothもそうだが、これら物理的な仕様が定められている規格は、専用のハードウエア(IC チップ)を経由して通信するものが多い。上記だと、Intelの製品だと思われる。
その経由するハードウエアと、ホスト側の、OSに含まれているBluetooth通信用のプロトコルスタック(ソフトウエア)の、間を取り持つのが、HCIという仕組みだ。ホストのHCIドライバー(ソフトウエア)が、BluetoothハードウエアのHCIファームウエア(ファームウエア)が、HCIという仕組みに則って通信する。
上記hciconfigコマンドの出力に、「HCI version」と「LMP version」の2つのバージョンがあるが、最初のほうが「ホスト側」、つまりHCIドライバーのバージョンで、LMP(Link Manager Protocolの略)の方が「Bluetoothハードウエア側」、つまりHCIファームウエアのバージョンと思われる。これらのバージョンからBluetoothコア仕様のバージョンが決まる。またこれは推測だが、この2つにあまりに違いがあると、通信で齟齬が出る可能性があるのかもしれない。