ここから、LinuxでBluetooth通信をしてみる。
まず、Bluetoothを使えるように設定とか準備する。
FedoraがVirtualBoxなので、Windows側で、

検索などでBluetooth設定を出す。

まあ、オンになっていて発見可能なら良し。
通信先はスマホなので、

Bluetooth切断になってるので、

この状態から右上のトグルをON。

ONにするとさっきのWindows側が見える。
Windowsに戻って、デバイスを追加するところをクリックすると、

これが出るのでBluetooth。

スマホ側も出てる。

タスクトレイにも出ている。
Enabling Bluetooth in VirtualBox

VirtualBoxのFedora31の設定で、

USBで右の追加、

Surface系は内臓でもUSBドングルみたいにここに出てくるのか。

追加してこの状態で改めて起動。

ところがこの状態だと落ちてしまう。


奇跡的に動いた。そしてそのままbg1バージョンで起動してしまった。

LinuxのBluetooth設定からもスマホが見えた。
LinuxでBluetoothを扱うには、BlueZを入れる必要がある。
BlueZ
C言語でBluetoothスタックを叩きたい人のBluetooth開発入門その1
http://people.csail.mit.edu/albert/bluez-intro/c404.html
Ubuntuとかだと、apt-getで、
$ sudo apt-get install libbluetooth-dev
$ sudo yum install bluez-libs-devel Fedora Modular 31 - x86_64 8.1 kB/s | 4.9 kB 00:00 Fedora Modular 31 - x86_64 - Updates 16 kB/s | 4.8 kB 00:00 Fedora 31 - x86_64 - Updates 7.7 kB/s | 4.9 kB 00:00 Fedora 31 - x86_64 30 kB/s | 4.9 kB 00:00 依存関係が解決しました。 ================================================================================ Package Architecture Version Repository Size ================================================================================ インストール: bluez-libs-devel x86_64 5.55-1.fc31 updates 159 k アップグレード: bluez x86_64 5.55-1.fc31 updates 1.3 M bluez-cups x86_64 5.55-1.fc31 updates 90 k bluez-libs x86_64 5.55-1.fc31 updates 90 k bluez-obexd x86_64 5.55-1.fc31 updates 212 k トランザクションの概要 ================================================================================ インストール 1 パッケージ アップグレード 4 パッケージ ダウンロードサイズの合計: 1.9 M これでよろしいですか? [y/N]: y パッケージのダウンロード: (1/5): bluez-cups-5.55-1.fc31.x86_64.rpm 126 kB/s | 90 kB 00:00 (2/5): bluez-libs-5.55-1.fc31.x86_64.rpm 212 kB/s | 90 kB 00:00 (3/5): bluez-5.55-1.fc31.x86_64.rpm 868 kB/s | 1.3 MB 00:01 (4/5): bluez-obexd-5.55-1.fc31.x86_64.rpm 409 kB/s | 212 kB 00:00 (5/5): bluez-libs-devel-5.55-1.fc31.x86_64.rpm 58 kB/s | 159 kB 00:02 -------------------------------------------------------------------------------- 合計 637 kB/s | 1.9 MB 00:03 トランザクションの確認を実行中 トランザクションの確認に成功しました。 トランザクションのテストを実行中 トランザクションのテストに成功しました。 トランザクションを実行中 準備 : 1/1 scriptletの実行中: bluez-libs-5.55-1.fc31.x86_64 1/1 アップグレード中 : bluez-libs-5.55-1.fc31.x86_64 1/9 アップグレード中 : bluez-5.55-1.fc31.x86_64 2/9 scriptletの実行中: bluez-5.55-1.fc31.x86_64 2/9 アップグレード中 : bluez-cups-5.55-1.fc31.x86_64 3/9 アップグレード中 : bluez-obexd-5.55-1.fc31.x86_64 4/9 scriptletの実行中: bluez-obexd-5.55-1.fc31.x86_64 4/9 インストール中 : bluez-libs-devel-5.55-1.fc31.x86_64 5/9 scriptletの実行中: bluez-obexd-5.51-1.fc31.x86_64 6/9 整理 : bluez-obexd-5.51-1.fc31.x86_64 6/9 整理 : bluez-cups-5.51-1.fc31.x86_64 7/9 scriptletの実行中: bluez-5.51-1.fc31.x86_64 8/9 整理 : bluez-5.51-1.fc31.x86_64 8/9 scriptletの実行中: bluez-5.51-1.fc31.x86_64 8/9 整理 : bluez-libs-5.51-1.fc31.x86_64 9/9 scriptletの実行中: bluez-libs-5.51-1.fc31.x86_64 9/9 検証 : bluez-libs-devel-5.55-1.fc31.x86_64 1/9 検証 : bluez-5.55-1.fc31.x86_64 2/9 検証 : bluez-5.51-1.fc31.x86_64 3/9 検証 : bluez-cups-5.55-1.fc31.x86_64 4/9 検証 : bluez-cups-5.51-1.fc31.x86_64 5/9 検証 : bluez-libs-5.55-1.fc31.x86_64 6/9 検証 : bluez-libs-5.51-1.fc31.x86_64 7/9 検証 : bluez-obexd-5.55-1.fc31.x86_64 8/9 検証 : bluez-obexd-5.51-1.fc31.x86_64 9/9 アップグレード済み: bluez-5.55-1.fc31.x86_64 bluez-cups-5.55-1.fc31.x86_64 bluez-libs-5.55-1.fc31.x86_64 bluez-obexd-5.55-1.fc31.x86_64 インストール済み: bluez-libs-devel-5.55-1.fc31.x86_64 完了しました! $
こう入る。
今回は、まずhci_get_routeでデバイスIDを取得する。
こうして、
$ vi hci_get_route.c $ gcc -o hci_get_route hci_get_route.c -lbluetooth $ ./hci_get_route dev_id = 0 $
こうなる。
0だけど、負の値だと失敗なので、これで正解なのかな。
Sample/bluez/hci_get_route/hci_get_route/src/hci_get_route at master · bg1bgst333/Sample · GitHub