コミュニティソリューション

ZVM経由でZigbee USBドングルをHome Assistant OSにパススルーする

A Home Assistant OS user cannot see a ConBee II dongle in ZVM; community members provide a libvirt XML passthrough method and Zigbee2MQTT verification path.

Samba共有では物理ZigbeeアダプターをHAOSにパススルーできない

元の問題はフォルダーではなく、USBシリアルデバイスに関するものです。Samba共有で仮想マシンにファイルを公開することはできますが、ConBee、Sonoff、Nortekなどの無線アダプターをゲストのUSBハードウェアとして認識させることはできません。コミュニティで動作が確認されている方法は、libvirtを通じてホストのUSBデバイスをZVMゲストに接続することです。

これは、確認済みのZVM USBセレクターではなく、コマンドラインを使った回避策です。永続的なハードウェア設定を編集する前に、仮想マシンのXMLをバックアップし、Home Assistant OSをシャットダウンしてください。XMLの編集を誤ったり、ドングルが見つからなかったりすると、ゲストが起動できなくなる可能性があります。以前の設定を復元できるコピーを保管してください。

他のユーザーのIDをコピーせずにドングルを特定する

サポートされているSSHおよび権限取得方法でZimaOSに接続し、lsusbを実行します。例にある1a86:55d4のような、ドングルのベンダーIDと製品IDの組み合わせを確認してください。使用しているConBee、Sonoff、NortekのIDは異なります。

一覧が曖昧な場合は、ドングルを一度取り外してから再接続してください。同一のアダプターを2台接続している場合、ベンダーIDと製品IDによる照合でも曖昧になることがあります。libvirtのホストデバイス形式では、VID/PIDによる照合や、より詳細なUSBアドレス指定について説明しています。

virsh list --allで、VMの正確なlibvirt名またはUUIDを記録します。スレッドにある例のIDは使用しないでください。変更前にvirsh dumpxml VM_NAMEで現在の定義をエクスポートしてください。

ゲストのデバイスセクション内にhostdevブロックを1つ追加する

ゲストの電源を切った状態で、virsh edit VM_NAMEを使用して定義を開きます。既存の<devices>要素内に、<hostdev mode='subsystem' type='usb' managed='yes'><source><vendor id='0xVID'/><product id='0xPID'/></source></hostdev>を追加し、VIDとPIDをホストで確認した値に置き換えます。

物理デバイスごとに、完全なhostdevセクションを1つ追加します。2つ目の<devices>ラッパーを作成したり、終了タグ</devices>の後にブロックを貼り付けたりしないでください。保存したら、VMを起動する前にXMLをもう一度確認します。

ゲストを起動し、virsh list --allを確認します。失敗した場合は、最初に表示されたlibvirtエラーを読んでください。編集を重ねるのではなく、保存したXMLを復元します。「device not found」はホスト側の列挙または照合に問題があることを示し、XML parse errorは配置または構文に問題があることを示します。

Zigbee2MQTTを設定する前にHAOSでデバイスを確認する

Home Assistantで「設定」→「システム」→「ハードウェア」を開き、新しいUSBまたはシリアルデバイスを探します。/dev/ttyACM0のようなインターフェース名は変わることがあります。HAOSに/dev/serial/by-id/...エントリーが表示される場合は、Zigbee2MQTTでその安定した識別子を使用してください。

HAOSがデバイスを認識してから、Zigbee2MQTTのserial.portを設定してください。アドオンを再起動し、アダプターへの接続に成功したことをログで確認します。HAOSがドングルを認識しているのにZigbee2MQTTで開けない場合、パススルーはすでに機能しており、問題はアダプターの種類、シリアル設定、またはアドオンのアクセス権に移っています。

HAOSを再起動し、続けてZimaOSも再起動して永続性をテストします。同じby-idパスが戻り、Zigbee2MQTTが再接続することを確認してください。一部のバージョンでは、CPU、メモリ、ディスクの変更やプラットフォームのアップグレードによってZVMのリソース変更が手動のXMLを上書きすることがあります。そのため、これらの操作後はXMLを再確認してください。

よくある質問

XMLファイルはどこに保存されていますか?

ファイルを手動で探す必要はありません。virsh edit VM_NAMEで登録済みドメイン定義を編集し、virsh dumpxmlでバックアップできます。

複数のUSBデバイスを同じVMにパススルーできますか?

はい。スレッドではデバイスごとにhostdevブロックを1つ使用しています。それぞれが、対象のハードウェアに曖昧さなく一致する必要があります。

再起動後にUSBパスが変わったのはなぜですか?

Linuxがハードウェアを列挙する際、短いデバイス名が変わることがあります。パススルー後はHAOSのby-idパスを優先してください。ただし、デバイス全体が消えた場合はXMLを再確認します。

HAOS固有のコマンドと後半のXML例は、ZVM USB共有ディスカッションに記載されています。