USB WiFi передача в виртуальную машину Alpine Linux (QEMU)

Вопрос или проблема

В настоящее время я экспериментирую с Wi-Fi.
У меня есть специфический случай использования, когда я работаю с Wi-Fi адаптером в гостевой виртуальной машине.
WiFi адаптер — это U.S. Robotics USR5423 802.11bg Wireless Adapter [ZyDAS ZD1211B].
Я пытался настроить его в lxc контейнере, но из-за того, что lxc контейнер использует ядро операционной системы хоста, я не смог добиться значительного прогресса в установке прошивки.

Я скачал и настроил Alpine Linux VM на Proxmox, который использует QEMU.

Я думаю, что правильно передал usb, так как вижу его с помощью lsusb.

Bus 001 Device 002: ID 0baf:0121 USR USB2.0 WLAN

Оставалось только установить прошивку и сетевой менеджер на VM, что я и сделал следующим образом:

apk add zd1211-firmware

apk add networkmanager-cli

apk add networkmanager-wifi

rc-update add networkmanager default

После этого я перезагрузил машину.

Тем не менее, если я выполняю

nmcli dev wifi

Я не вижу Wi-Fi интерфейсов.

Исправление:

Сообщений в dmesg нет, и я не могу использовать modprobe…

Вызов modprobe zd1211rw

возвращает:

modprobe: FATAL: Module zd1211rw not found in directory /lib/modules/6.12.13-0-virt

Исправление 2:

Я пока не смог решить проблему, но вот что я обнаружил:

Единственный способ, которым мне удалось установить прошивку для этого конкретного WiFi адаптера, был с использованием vmware. Внутри VMWare Debian VM прошивка работала безупречно, и ошибки таймаута отсутствовали.

Установка Debian VM на QEMU, который является частью Proxmox в случае с виртуальными машинами, заканчивается тем, что прошивка не загружается должным образом и выдает ошибку -110, которая означает ошибку таймаута. В данном случае опция автосуспендирования даже не поддерживается устройством, так что это не могло быть проблемой.

Это не похоже на проблему с прошивкой, хотя я не являюсь экспертом в этом вопросе… Исходя из того, что я смог выяснить из имеющейся в Интернете информации, прошивка достаточно старая и не поддерживается, драйвер zd1211 поддерживается — беглый взгляд на репозиторий ядра это показывает. Я думаю, это скорее проблема с тем, как QEMU и VMWare обрабатывают пасскр, где, я полагаю, VMWare пасскр превосходит в этом конкретном случае.

.

Ответ или решение

Понимание проблемы USB WiFi Passthrough в виртуальной машине на основе Alpine Linux, работающей через QEMU, требует детального анализа с учетом того, как происходит передача USB-устройств в виртуальные машины. В вашем случае вы столкнулись с трудностями при установке и использовании беспроводного адаптера USR5423 на базе драйвера ZD1211B в среде Proxmox.

Теория

Основная задача заключается в корректной передаче USB-устройства из хоста на виртуальную машину (VM), чтобы операционная система внутри VM могла распознать и взаимодействовать с этим устройством знакомым ей образом. Виртуализация QEMU-KVM поддерживает USB-переход, позволяя перенаправлять физические USB-устройства в VM, где драйвер устройства и прошивка могут быть установлены и использованы.

Причины неудач и ограничения

Первая сложность, с которой вы столкнулись, связана с использованием ядра в LXC. Контейнеры LXC используют общий с хостом ядро, поэтому возможности установки специфичных модулей или драйверов ограничены. Таким образом, переход от LXC к полноценной виртуальной машине был логичным шагом.

На следующем этапе вы сможете обнаруживать адаптер с помощью lsusb, что свидетельствует о правильной передаче USB. Однако, отсутствие интерфейсов Wi-Fi в nmcli и невозможность загрузки модуля zd1211rw указывают на проблемы с установкой драйверов.

Пример

Успех на VMWare

Как вы отметили, использование адаптера в Debain VM на VMWare приводит к успеху, что подтверждает работоспособность совместно используемого драйвера и прошивки. Этот успех заключен в более зрелой реализации USB-перехода в VMWare, что предполагает более гибкую и надежную поддержку специфичных драйверов.

Неудача на QEMU

Вы видите ошибку тайм-аута (-110) в случае с Debian VM на QEMU. Эта ошибка указывает на проблемы с коммуникацией между виртуальной машиной и USB-устройством, вероятно, из-за несовершенства USB-проброса в QEMU или из-за несовместимости с прошивкой устройства.

Применение

Пошаговые действия по решению проблемы

  1. Проверка на совместимость версии ядра и необходимого модуля:

    • Убедитесь, что ядро вашего Alpine Linux поддерживает модуль zd1211rw. Возможно, потребуется обновить ядро или использовать Debian, который уже продемонстрировал свою работоспособность в VMWare.
  2. Установка необходимых пакетов:

    • Выполнение команд apk add zd1211-firmware, apk add networkmanager-cli, apk add networkmanager-wifi, которые вы уже выполнили, — это правильные шаги. При этом важно убедиться, что пакет networkmanager активирован и правильно сконфигурирован для автоматического обнаружения устройств Wi-Fi.
  3. Ручная загрузка модуля:

    • Проблема с отсутствием модуля в /lib/modules/6.12.13-0-virt возможна, если прошивка и драйвер не были сконфигурированы или скомпилированы для вашего конкретного ядра. Попробуйте вручную установить и сконфигурировать модуль.
  4. Просмотр логов:

    • Используйте dmesg для выявления дополнительных подсказок или сообщений об ошибках, связанных с драйвером или прошивкой.

Альтернативное решение

Если после всех вышеперечисленных шагов проблема остается нерешенной, рассматривается возможность создать промежуточный слой настройки с использованием эмуляторов USB, обеспечивающих дополнительный контроль над пробросом USB. Также можно протестировать разные версии QEMU с целью проверки улучшений в USB-обработке.

В дополнение, рассматривая вероятную ограниченность фирменного драйвера устройства, можно попробовать использовать альтернативное ПО или соответствующие патчи для улучшения совместимости аппаратного и программного обеспечения в среде QEMU.

Заключение: Исследование и тестирование различных конфигураций могут привести к оптимальному решению, работающему для вашей специфической конфигурации устройства и программного обеспечения.

Оцените материал
Добавить комментарий

Капча загружается...