Home Assistant: ZigBee Coordinatorを技適対応「nRF52840 MDBT50Q 開発用USBドングル」で作る手順

よくある技適の問題
先日書いた記事 (Home Assistant: スマートホームの高みを目指し、自宅サーバ・IT環境を再構築中 [2025-05-11]) からの流れで、このところ何週間か、Home Assistantに接続して「ZigBee Coordinator」として使用できる、かつ技適に適合しているデバイスを探していた。
ZigBeeとは近距離無線通信規格のひとつで、たとえばIKEAのスマート電球やAqaraのセンサー類の通信に使われている。ちなみにMatterという新しめの規格もあるが、今回は扱わない。
念願のデバイスに関しては、スイッチサイエンスで販売されている次の「nRF52840 MDBT50Q 開発用USBドングル」が、要件を満たしそうだとなんとなく確信が持てたので、ZigBee Coordinatorに変身させる具体的な方法はよく分からないままであったが、とにかく購入した。
種別 | 商品名 | 購入価格 (税込) | 購入店 | 購入日 |
---|---|---|---|---|
USBドングル | nRF52840 MDBT50Q 開発用USBドングル(ブートローダ書き込み済) | 1,980円 | スイッチサイエンス | 2025-06-06 |
本記事には、いろいろと試行錯誤した結果として、このUSBドングルをHome Assistantに接続してZigBee Coordinatorとして使えるようにする手順を記す。USBドングルの裏面には工事設計認証番号「018-180280」が記載されており、技適 (技術基準適合証明) 情報は次の通りだ。
写真: USBドングルの表と裏
ZigBee Coordinator化する手順
上記USBドングルをZigBee Coordinator化する作業の大まかな流れは、「USBドングルにZbossというプロトコルに対応するファームウェアを書き込み、ZbossプロトコルでHome AssistantのZigbee2MQTTに接続する」というものになる。具体的には次の通り。
Step-1. USBドングルにZboss対応ファームウェアを書き込む
- https://github.com/kardia-as/nrf-zboss-ncp/tree/main/nRF52840_dongle の
v2.6.0_ncp_zboss_max_mem_nrf52840_dongle.hex
(1,041,412bytes) をダウンロードする - https://github.com/microsoft/uf2/tree/master/utils の
uf2conv.py
とuf2families.json
を使って、次のようなコマンドで、1の.hex
ファイルをflash.ut2
ファイル (757,760bytes) に変換する$ ls -l 合計 1048 -rw-rw-r-- 1 mah mah 12819 6月 21 23:23 uf2conv.py -rw-rw-r-- 1 mah mah 8937 6月 21 23:26 uf2families.json -rw-rw-r-- 1 mah mah 1041412 6月 21 23:23 v2.6.0_ncp_zboss_max_mem_nrf52840_dongle.hex $ python3 uf2conv.py ./v2.6.0_ncp_zboss_max_mem_nrf52840_dongle.hex -c -f 0xada52840 Converted to uf2, output size: 757760, start address: 0x1000 Wrote 757760 bytes to flash.uf2 $ ls -l ./flash.uf2 -rw-rw-r-- 1 mah mah 757760 6月 21 23:28 ./flash.uf2
- USBドングルの丸いボタンを押しながら、USBドングルをPCに挿入し (このボタン操作にはブートローダを起動させる意味がある)、PCから見えるようになるUSBストレージ領域に
flash.ut2
ファイルを書き込む - USBドングルの青いLEDが点滅し始めて、しばらくすると消灯する
- USBドングルをPCから取り外す
Step-2. USBドングルをHome Assistantと接続する
- Home Assistant (HA) を動かしているサーバにUSBドングルを (丸いボタンは押さない状態で) 挿入する
- HAが仮想ゲストであれば、「2fe3:0001」 (上記3でのファームウェア書き換え後のUSBドングルのDevice ID) がHA仮想ゲストに認識されるように、仮想ホストのUSB Pass-Throughを設定する
- HAのZigbee2MQTTに次の設定を行う (port行のID部分は環境によって変わるものかもしれないので各自で要調査。HAのTerminalで
ls -al /dev/serial/by-id/
すればIDが判る)serial: port: /dev/serial/by-id/usb-ZEPHYR_Zigbee_NCP_860E07EF48375EB6-if00 adapter: zboss
- 設定内容を Zigbee2MQTT > Settings > Serial で見た場合:
- 設定内容を Settings > Add-ons > Zigbee2MQTT > Configuration で見た場合:
- 必要なrestartを行う (Zigbee2MQTTのrestartなどで良いのかもしれないし、常に最も確実なのはHA自体の再起動だと思う)
- HAの Settings > System > Logs > (右上) Zigbee2MQTT でログを確認してZigBeeの様子がどうなっているか、動作していそうかを把握する
⚠ 問題点 [2025-06-21]
- 仮想ゲストとしてのHAの再起動を行ったあと、仮想ホストに挿しているUSBドングルがHAで認識されていない状態になる
- このとき、仮想ホストの
lsusb
でもUSBドングルが見えない状態になっている。機器に触れられる環境であればUSBドングルを物理的に挿し直すと、認識を復活させることができる (仮想ホストの再起動ではダメだった。再認識させるためには、USBドングルの信号線をOFF→ONしなきゃいけないのか?) - USBハブのpower per-portのON/OFFが行える mvp/uhubctl: uhubctl - USB hub per-port power control というようなツールを、USBハブと併用することでなんとかできないか、模索する予定 (USBハブのPer-port power switching対応ってなんだ?)
- このとき、仮想ホストの
おわりに
技適対応のデバイスでZigBee Coordinatorを作るという目標を、自分がなにも分かっていない状態からとりあえず達成できたのは嬉しい。上記の問題点が解決できていないので、及第点のレベルではあるが。ちなみに今回、目標達成の突破口となったキーワードは「Zboss」であった。このキーワードの発見によって、「nRF52840 Dongle」と「Zigbee2MQTT」を関係付けることができたから。Zbossを知るまでの情報探しは大変であった。今後は、自宅HA環境にZigBeeに対応するセンサー類も連携させるようにして、なにか面白い仕掛けでも作ってみるか……と妄想している。

Aqara 振動センサー アカラ Aqaraハブが必須 防犯センサー Alexa 感知センサー セキュリティ HomeKit Siriなどに対応 玄関 窓 郵便箱 取付簡単 防犯グッズ 防犯対策 スマホ対応 アラート通知 スマートホーム
Aqara
また、発見の時系列的には前後するが、「nRF52840 MDBT50Q 開発用USBドングル (ブートローダ書き込み済)」のファームウェア書き換え方法については、X (Twitter) でいただいた下記リプライが強力なヒントとなった (ありがとうございます!!)。これは、独り作業をとりあえずつぶやいておくことの醍醐味だ。
真ん中のボタン押し込みながらPCに接続するとブートローダー起動して書き込みできるようになるよ。
— arms22 (@arms22) June 11, 2025
参考リンク
ハードウェア
- nRF52840 MDBT50Q 開発用USBドングル(ブートローダ書き込み済): https://www.switch-science.com/products/6761
- Raytac Corporation 勁達國際電子股份有限公司 MDBT50Q-RX: https://www.raytac.com/product/ins.php?index_id=89
ソフトウェア
- ZBOSS: https://dsr-iot.com/solutions/zboss/
- nRF ZBOSS NCP: https://github.com/kardia-as/nrf-zboss-ncp
- USB Flashing Format (UF2): https://github.com/microsoft/uf2
- Zigbee2MQTT: https://www.zigbee2mqtt.io/
- ZBOSS adapters | Zigbee2MQTT https://www.zigbee2mqtt.io/guide/adapters/zboss.html
- Home Assistant: https://www.home-assistant.io/