Solución de la comunidad

Pasar un dongle USB Zigbee a través de ZVM a 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 recurso compartido de Samba no puede pasar un adaptador Zigbee físico a HAOS

El problema original se refiere a un dispositivo serie USB, no a una carpeta. Un recurso compartido de Samba puede exponer archivos a una máquina virtual, pero no puede hacer que un dispositivo ConBee, Sonoff, Nortek o una radio similar aparezca como hardware USB del invitado. La solución comunitaria funcional conecta el dispositivo USB del host al invitado ZVM mediante libvirt.

Esto sigue siendo una solución alternativa mediante la línea de comandos, no un selector USB de ZVM confirmado. Haz una copia de seguridad del XML de la máquina virtual y apaga Home Assistant OS antes de editar el hardware persistente. Una edición XML con errores o la ausencia del dongle pueden impedir que el invitado se inicie, así que conserva una copia que permita restaurar la configuración anterior.

Identifica el dongle sin copiar los identificadores de otro usuario

Conéctate a ZimaOS mediante la ruta compatible de SSH y privilegios, y ejecuta lsusb. Busca el par de fabricante y producto del dongle, como 1a86:55d4 en el ejemplo. Los identificadores de tu ConBee, Sonoff o Nortek serán distintos.

Desconecta y vuelve a conectar el dongle una vez si la lista no es clara. La coincidencia por fabricante y producto también puede ser ambigua cuando hay dos adaptadores idénticos conectados. El formato de dispositivos del host de libvirt explica la coincidencia VID/PID y formas más específicas de direccionamiento USB.

Registra el nombre exacto de libvirt o el UUID de la máquina virtual con virsh list --all. No uses un identificador de ejemplo del hilo. Exporta su definición actual con virsh dumpxml VM_NAME antes de modificarla.

Añade un bloque hostdev dentro de la sección de dispositivos del invitado

Con el invitado apagado, abre su definición mediante virsh edit VM_NAME. Dentro del elemento <devices> existente, añade <hostdev mode='subsystem' type='usb' managed='yes'><source><vendor id='0xVID'/><product id='0xPID'/></source></hostdev>, sustituyendo VID y PID por los valores de tu host.

Añade una sección hostdev completa por cada dispositivo físico. No crees un segundo contenedor <devices> ni pegues el bloque después de la etiqueta de cierre </devices>. Guarda los cambios y vuelve a inspeccionar el XML antes de iniciar la máquina virtual.

Inicia el invitado y comprueba virsh list --all. Si falla, lee el primer error de libvirt. Restaura el XML guardado en lugar de acumular más ediciones. Un resultado de “device not found” apunta a la enumeración del host o a la coincidencia; un error de análisis XML apunta a la ubicación o la sintaxis.

Verifica el dispositivo en HAOS antes de tocar Zigbee2MQTT

En Home Assistant, abre Ajustes → Sistema → Hardware y busca el nuevo dispositivo USB o serie. Los nombres de interfaz como /dev/ttyACM0 pueden cambiar; cuando HAOS exponga una entrada /dev/serial/by-id/..., usa esa identidad estable en Zigbee2MQTT.

Solo después de que HAOS detecte el dispositivo debes configurar serial.port de Zigbee2MQTT. Reinicia el complemento y revisa sus registros para confirmar una conexión correcta del adaptador. Si HAOS detecta el dongle pero Zigbee2MQTT no puede abrirlo, el paso de passthrough ya funciona y el problema se ha trasladado al tipo de adaptador, la configuración serie o el acceso del complemento.

Reinicia HAOS y después reinicia ZimaOS para probar la persistencia. Confirma que vuelve a aparecer la misma ruta by-id y que Zigbee2MQTT se reconecta. En algunas versiones, los cambios de recursos de ZVM pueden sobrescribir el XML manual, así que vuelve a comprobar el XML después de cambiar la CPU, la memoria o los discos, o de actualizar la plataforma.

Preguntas frecuentes

¿Dónde se almacena el archivo XML?

No necesitas localizar ningún archivo manualmente. Usa virsh edit VM_NAME para editar la definición del dominio registrado y virsh dumpxml para hacer una copia de seguridad.

¿Se pueden pasar varios dispositivos USB a la misma máquina virtual?

Sí, el hilo muestra un bloque hostdev por dispositivo. Cada uno debe coincidir con el hardware previsto sin ambigüedades.

¿Por qué cambió la ruta USB después de reiniciar?

Los nombres de dispositivo cortos pueden cambiar cuando Linux enumera el hardware. Después del passthrough, es preferible usar la ruta by-id de HAOS, pero vuelve a comprobar el XML si el dispositivo desaparece por completo.

Los comandos específicos de HAOS y el ejemplo de XML posterior se encuentran en el debate comunitario sobre el uso compartido de USB en ZVM.