Вопрос или проблема
Я пытаюсь передать USB WiFi-адаптер (USR5423 802.11bg Wireless Adapter [ZyDAS ZD1211B]) на виртуальную машину, работающую под управлением Debian 12 на QEMU/KVM. Мне нужно передать устройство на виртуальную машину для проекта, над которым я работаю.
Я установил прошивку zd1211rw, и кажется, что система распознает, что это WLAN-адаптер, так как он отображается как сетевой интерфейс, он не активен, но он есть:
4: wlx0014c142c70c: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 26:c2:97:8f:76:ec brd ff:ff:ff:ff:ff:ff permaddr 00:14:c1:42:c7:0c
Кроме того, если я проверю dmesg, я вижу, что есть серьезные ошибки при загрузке прошивки.
[ 250.122984] usb 1-3: USB control request for firmware upload failed. Error number -110
[ 250.123003] usb 1-3: Could not upload firmware code uph. Error number -110
[ 250.123033] zd1211rw 1-3:1.0: couldn't load firmware. Error number -110
Из различных поисков в интернете я думаю, что ошибка -110 связана с истечением времени ожидания USB.
Для этого я добавил
GRUB_CMDLINE_LINUX_DEFAULT="usb-storage.quirks=0baf:0121:u"
в конфигурацию grub внутри /etc/default/grub
, но это не сильно помогло.
Какие-нибудь советы?
Ответ или решение
Проблема загрузки микропрограммы для беспроводного адаптера USR5423 на базе чипа ZyDAS ZD1211B при попытке передачи устройства в виртуальную машину Debian 12 под управлением QEMU/KVM может иметь несколько причин. Рассмотрим теоретическую основу проблемы, сделаем разбор конкретного примера и предложим практическое решение.
Теоретическая основа
Теория пассивного режима работы USB-устройств
Проблема может заключаться в некорректной работе USB с виртуальными машинами. Ошибки, связанные с невозможностью загрузки микропрограммы, часто возникают из-за тайм-аутов или отсутствия поддержки специфичных функций USB в среде виртуализации. Ошибка -110 в dmesg предполагает, что устройство не отвечает в заданный период времени, что может быть связано с USB-таймингом.
Факторы, влияющие на загрузку микропрограмм
- Загрузка модуля ядра: Убедитесь, что модуль ядра zd1211rw корректно загружен. Модуль отвечает за поддержку чипа ZD1211B.
- Тайминг USB: Ошибочный тайминг USB может вызывать проблемы, связанные с загрузкой микропрограммы. Виртуальные машины могут иногда некорректно обрабатывать скорость передачи данных USB.
- Микропрограмма: Для корректной работы беспроводного адаптера требуется корректно загруженная и целостная микропрограмма. Испорченные или неполные файлы могут приводить к сбоям.
Разбор примера
Вы пробовали добавить специфичную настройку (usb-storage.quirks=0baf:0121:u
) в файле /etc/default/grub
. Это указывает на попытку изменить параметры работы USB-устройства. Однако это решение часто бесполезно для устройств, работающих через пользователя (user-space) драйверы или в случае густой виртуализации.
Исходя из кода ошибки, это может означать проблему либо с самим устройством, либо с конфигурацией USB в вашей системе. USB-контроллер, используемый для захвата устройства виртуальной машиной, также может иметь ограниченные возможности, что только усугубляет проблему.
Практическое решение
Обновление конфигурации и устранение неисправностей
-
Проверка модулей ядра:
- Убедитесь, что модуль
zd1211rw
загружен без ошибок. Проверьте это с помощью командыlsmod | grep zd1211rw
.
- Убедитесь, что модуль
-
Обновление микропрограммы:
- Обратите внимание, что вам может потребоваться обновить саму микропрограмму. Убедитесь, что у вас установлена последняя версия прошивки. Проверьте репозиторий Debian для обновлений:
apt-cache search zd1211-firmware
.
- Обратите внимание, что вам может потребоваться обновить саму микропрограмму. Убедитесь, что у вас установлена последняя версия прошивки. Проверьте репозиторий Debian для обновлений:
-
Конфигурация GRUB:
- Попробуйте заменить опции в
GRUB_CMDLINE_LINUX_DEFAULT
. Использованиеnoapic
илиirqpoll
может иногда помочь при проблемах с USB.
- Попробуйте заменить опции в
-
Настройка тайминга USB:
- Установите параметры
usbcore.autosuspend=-1
в конфигурации GRUB. Это поможет отключить автоматическую задержку USB-устройств.
- Установите параметры
-
Проверка оборудования:
- Убедитесь, что ваше устройство не повреждено и что оно работает на других системах. Попробуйте подключить его к физической машине и проверьте, загружается ли там прошивка корректно.
-
QEMU/KVM настройки:
- Проверьте, правильно ли настроен USB-passthrough. Иногда указание конкретной версии USB (
usb=ehci
) или повышение привилегий может улучшить совместимость.
- Проверьте, правильно ли настроен USB-passthrough. Иногда указание конкретной версии USB (
Применяя направленные решения, помните об их возможности вызова других проблем. В случае если предложенные шаги не привели к решению, рассмотрите возможность обращения к сообществам по поддержке Debian или ZyDAS для получения специфических советов. Часто опыт коллег может оказаться полезным и предостеречь вас от повторения чужих ошибок.