Solution communautaire

Transférer une clé USB Zigbee via ZVM vers 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.

Un partage Samba ne peut pas transmettre un adaptateur Zigbee physique à HAOS

Le problème initial concerne un périphérique série USB, et non un dossier. Un partage Samba peut exposer des fichiers à une machine virtuelle, mais il ne peut pas faire apparaître une radio ConBee, Sonoff, Nortek ou similaire comme matériel USB invité. La méthode communautaire fonctionnelle consiste à connecter le périphérique USB de l’hôte à l’invité ZVM via libvirt.

Il s’agit toujours d’une solution de contournement en ligne de commande, et non d’un sélecteur USB ZVM confirmé. Sauvegardez le fichier XML de la machine virtuelle et éteignez Home Assistant OS avant de modifier le matériel persistant. Une modification XML malformée ou un dongle absent peut empêcher le démarrage de l’invité. Conservez donc une copie permettant de restaurer la configuration précédente.

Identifiez le dongle sans copier les identifiants d’un autre utilisateur

Connectez-vous à ZimaOS via le chemin SSH et les privilèges pris en charge, puis exécutez lsusb. Repérez la paire fabricant-produit du dongle, par exemple 1a86:55d4 dans l’exemple. Les identifiants de votre ConBee, Sonoff ou Nortek seront différents.

Débranchez puis rebranchez une fois le dongle si la liste n’est pas claire. La correspondance fabricant-produit peut également prêter à confusion lorsque deux adaptateurs identiques sont connectés. La documentation du format des périphériques hôtes de libvirt explique la correspondance VID/PID ainsi que l’adressage USB plus précis.

Notez le nom libvirt exact ou l’UUID de la machine virtuelle avec virsh list --all. N’utilisez pas un identifiant d’exemple provenant de la discussion. Exportez sa définition actuelle avec virsh dumpxml VM_NAME avant de la modifier.

Ajoutez un bloc hostdev dans la section des périphériques de l’invité

Une fois l’invité éteint, ouvrez sa définition avec virsh edit VM_NAME. Dans l’élément <devices> existant, ajoutez <hostdev mode='subsystem' type='usb' managed='yes'><source><vendor id='0xVID'/><product id='0xPID'/></source></hostdev>, en remplaçant VID et PID par les valeurs de votre hôte.

Ajoutez une section hostdev complète par périphérique physique. Ne créez pas de second conteneur <devices> et ne collez pas le bloc après la balise fermante </devices>. Enregistrez, puis inspectez à nouveau le XML avant de démarrer la machine virtuelle.

Démarrez l’invité et vérifiez virsh list --all. En cas d’échec, lisez la première erreur libvirt. Restaurez le XML sauvegardé plutôt que d’empiler d’autres modifications. Un résultat « device not found » renvoie à l’énumération ou à la correspondance sur l’hôte ; une erreur d’analyse XML indique un problème d’emplacement ou de syntaxe.

Vérifiez le périphérique dans HAOS avant de toucher à Zigbee2MQTT

Dans Home Assistant, ouvrez Paramètres → Système → Matériel et recherchez le nouveau périphérique USB ou série. Les noms d’interface tels que /dev/ttyACM0 peuvent changer ; lorsque HAOS expose une entrée /dev/serial/by-id/..., utilisez cette identité stable dans Zigbee2MQTT.

Ce n’est qu’après que HAOS a détecté le périphérique que vous devez définir serial.port dans Zigbee2MQTT. Redémarrez l’extension et consultez son journal pour vérifier que l’adaptateur se connecte correctement. Si HAOS voit le dongle mais que Zigbee2MQTT ne peut pas l’ouvrir, l’étape de transmission fonctionne déjà et le problème concerne désormais le type d’adaptateur, la configuration série ou l’accès de l’extension.

Redémarrez HAOS, puis ZimaOS, afin de tester la persistance. Vérifiez que le même chemin by-id réapparaît et que Zigbee2MQTT se reconnecte. Les modifications de ressources ZVM peuvent écraser le XML manuel dans certaines versions ; vérifiez donc à nouveau le XML après avoir modifié le processeur, la mémoire ou les disques, ou après une mise à niveau de la plateforme.

FAQ

Où le fichier XML est-il stocké ?

Vous n’avez pas besoin de localiser manuellement un fichier. Utilisez virsh edit VM_NAME pour modifier la définition du domaine enregistré et virsh dumpxml pour la sauvegarder.

Plusieurs périphériques USB peuvent-ils être transmis à la même machine virtuelle ?

Oui, la discussion montre un bloc hostdev par périphérique. Chacun doit correspondre au matériel prévu sans ambiguïté.

Pourquoi le chemin USB a-t-il changé après le redémarrage ?

Les noms courts des périphériques peuvent changer lorsque Linux énumère le matériel. Après la transmission, privilégiez le chemin by-id de HAOS, mais vérifiez à nouveau le XML si le périphérique entier disparaît.

Les commandes spécifiques à HAOS et l’exemple XML ultérieur se trouvent dans la discussion sur le partage USB ZVM.