見出し画像

TWBlueScan:完成かと思ったらBlueToothハードウェアのエラーに悩まされる

助手の老猫は私を起こしにくるどころか立ち上がるのがやっとの状態まで衰弱しています。私が台所にコーヒーをいれに行くと、豆をひく音に反応して立ち上がりこちらを見ています。まるで「ちゃんと開発しているか?」と言っているようです。「やってます」と心の中で答えました。

さて、BlueToothのデバイスの情報を集めるセンサープログラムの開発です。昨日問題だったbeaconの処理を改善して完成と思ってランニング試験を開始しました。夜寝る前に見るとプログラムは動いているのに情報が更新されない状態、OS(カーネル)のログを見ると

画像1

エラーでは真っ赤でした。猫のこともあって夜は調べる気力もありませんでした。
今朝、気を取り直して調べることにしました。猫にも言われたので
まずは、切り分けのために他の環境で同じプログラムを試してみました。
Raspberry Piでは

画像2

同じようなエラーもなく1時間半快調に動作しています。
Intel CPUのLinux環境の問題かと思いもう一台のLinux PCで試してみました。
こちらの環境は、最初起動できませんでした。OS(カーネル)のエラーログは、

画像3

でした。どうやらBlueToothのためのファームウェアがないということのようです。こちらは、Googleさんに聞いて

を見つけました。non-freeのリポジトリかからパッケージを

$sudo apt update
$sudo apt-get install firmware-realtek

でインストールして解決しました。再起動が必要なようです。
その後、TWBluseScanを起動するとこちらも問題なく1時間動作しています。
そこで、最初に問題の発生したPCに戻って調べることにしました。
いくつかnon-freeのファームウェアをインストールして再起動してみましたが、

画像4

USBのエラーがでてBlueToothのデバイスを認識しません。一度、電源を切って起動してみました。USBのエラーもなくBluToothのデバイスも認識しました。USBで接続された先にあるBlueToothのデバイスがおかしな状態になっていたようです。
TWBlueSCanを起動してみると

画像5

16秒毎に停止した時と同じエラーがでています。

[  597.113653] Bluetooth: hci0: unexpected event for opcode 0x2005
[  613.117889] Bluetooth: hci0: unexpected event for opcode 0x2005

これが何かまでは調べませんが、どうやらこのハードウェア特有の問題のようです。今日の調査は、ここまでにします。他の環境でしばらく動作させて問題なければ初回版をリリースしようと思います。

明日に続く

開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。