Простой проброс USB-устройства в виртуальную машину qemu обычно работает нормально. У меня не было проблем с пробросом разных устройств, но проброс USB-модема заставил подумать.
При старте, виртуальная машина выдавала следующую ошибку.
rndis_host 2-1:1.0: RNDIS init failed, -110
Код -110 не особенно наполнен смыслом, поэтому я посмотрел в логи хост-системы. Ниже можно увидеть пример лога из dmesg.
[ 94.966599] usb 3-2: New USB device found, idVendor=1286, idProduct=812a, bcdDevice= 0.00
[ 94.966604] usb 3-2: New USB device strings: Mfr=3, Product=2, SerialNumber=0
[ 94.966605] usb 3-2: Product: Yota Modem
[ 94.966607] usb 3-2: Manufacturer: YOTA
[ 99.159818] usb 3-2: USB disconnect, device number 3
[ 113.230722] usb 3-2: new high-speed USB device number 4 using xhci_hcd
[ 118.559241] usb 3-2: unable to read config index 0 descriptor/start: -110
[ 118.559340] usb 3-2: can't read configurations, error -110
[ 118.895238] usb 3-2: new high-speed USB device number 5 using xhci_hcd
[ 119.043646] usb 3-2: New USB device found, idVendor=1376, idProduct=4e61, bcdDevice= 1.00
[ 119.043654] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=4
[ 119.043658] usb 3-2: Product: Mobile Composite Device Bus
[ 119.043662] usb 3-2: Manufacturer: Marvell
[ 119.043665] usb 3-2: SerialNumber: Mobile Composite Device Bus
[ 119.064320] usbcore: registered new interface driver cdc_ether
[ 119.065632] usbcore: registered new interface driver rndis_host
[ 172.790675] usb 3-2: USB disconnect, device number 5
[ 173.095062] usb 3-2: new high-speed USB device number 6 using xhci_hcd
[ 173.243271] usb 3-2: config 1 has an invalid interface number: 6 but max is 2
[ 173.243275] usb 3-2: config 1 has no interface number 2
[ 173.243604] usb 3-2: New USB device found, idVendor=1376, idProduct=4e61, bcdDevice= 1.00
[ 173.243607] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=4
[ 173.243608] usb 3-2: Product: Mobile Composite Device Bus
[ 173.243610] usb 3-2: Manufacturer: Marvell
[ 173.243611] usb 3-2: SerialNumber: Mobile Composite Device Bus
[ 188.755071] rndis_host 3-2:1.0 eth0: register 'rndis_host' at usb-0000:00:14.0-2, RNDIS device
Хост система инициализировала модем и использовала его в качестве виртуального сетевого адаптера.
Решение — поместить драйвер rndis в блэклист на хост-системе и работать с модемом только внутри виртуальной машины.
nano /etc/modprobe.d/rndis.conf
blacklist cdc_ether
blacklist rndis_host
После, можно обновить initramfs и перезагрузиться.
update-initramfs -u
reboot
После ребута, можно стартонуть вирутальную машину и убедиться, что ошибка при инициализации RNDIS пропала.