Как пробросить RNDIS USB-модем в виртуальную машину

Простой проброс 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 пропала.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *