Bluetoothアダプタのデバイスアドレスを変更する。

さて、前回からの流れ。

  1. USBポートに挿すタイプのノーブランドなBluetoothアダプタをふたつ購入。
  2. ひとつを Windowsマシンに、もうひとつを Linuxマシンに装着。
  3. それぞれ単体では無難に動作するのだが、同時に使用すると怪しい。
  4. あ、こいつらBluetoothデバイスアドレス(≒MACアドレス)が被ってるやん!
  5. どちらかのデバイスアドレスを変更できないものか ← 今ここ。

…というわけで散々調べた結果、LinuxならばBluetoothアダプタのデバイスアドレスを変更することが可能っぽいので、やってみる。ちなみにうちのLinuxマシンにはUbuntuがインストールされています。

まずはBluetoothアダプタをUbuntuマシンに挿す。で、ターミナルでコマンド・hciconfig -a を実行。以下のような出力を見る筈。

bt_hciconfig.png

ひとつ目の下線部がデバイスアドレス。最後の項目でBluetoothデバイスのチップ製造者名を確認できます。どうやら今回紹介する方法は、CSR(Cambridge Silicon Radio)製のチップでないと効かないみたいなので、製造者名が CSR 以外だった人はごめんなさい。

それから、この操作には bluez パッケージと(たぶん)bluez-utils パッケージが必要です。もしこれらがインストールされていないならば、apt-get するなり Synapticパッケージマネージャを利用するなりしてインストールしておいてください。

幸いなことにうちのドングルはCSRチップが載っていて、bluez周りのパッケージもインストール済みだったので、このまま続行。

新しいデバイスアドレスを 11:22:33:44:55:66 にしたいのならば、ターミナルで以下のコマンドを実行。

# sudo bccmd psset -s 0 bdaddr 0x44 0x00 0x66 0x55 0x33 0x00 0x22 0x11

で、続いて

# sudo bccmd warmreset

# sudo service bluetooh restart

と、これで新しいデバイスアドレスが設定され、外部からもそのアドレスで認識される筈。デバイスアドレスがきちんと変更されているかどうかは、先ほどの hciconfig コマンドで確認できます。

うちではこの操作以降、アダプターを抜き差ししたりマシンの電源をオン/オフした後でも、このBluetoothアダプタのアドレスは、書き換えた新しいほうで認識されています。

一件落着。

…なのだけれども、デバイスアドレスを書き換えたアダプタ、Windows のほうに挿してみるとこんなエラーが出るのだな。

bt_csrerror.png

うん。ますます怪しい感じになってきた。CSR Harmonyを再インストールしたら大丈夫なのかもしれないけれど未確認。とりあえず、こいつをUbuntuマシンで使い続けるぶんには問題ないのです。

ということで。

こんなに苦労するのなら、最初から信頼あるメーカー品を買っておけばよかったものを。たかだか数百円をケチったばっかりに…。

カテゴリ: