Вопрос или проблема
Это не имеет никакого смысла для меня и кажется, что это не должно быть возможным.
Я купил несколько USB адаптеров WiFi RTL8821CU. Если я вставлю их в машину Proxmox N100 и выполню команду ‘lsusb’, то они определяются как
Шина 001 Устройство 018: ID 0bda:1a2b Корпорация Realtek Semiconductor. RTL8188GU 802.11n WLAN Адаптер (Режим CDROM Драйвера)
‘lsusb -v -d 0bda:1a2b’ включает
idVendor 0x0bda Корпорация Realtek Semiconductor.
idProduct 0x1a2b RTL8188GU 802.11n WLAN Адаптер (Режим CDROM Драйвера)
bcdDevice 2.00
iManufacturer 1 Realtek
iProduct 2 DISK
iSerial 0
Но на Raspberry Pi 4 ‘lsusb’ определяет их как
Шина 001 Устройство 008: ID 0bda:c820 Корпорация Realtek Semiconductor. 802.11ac NIC
‘lsusb -v -d 0bda:c820’ включает
idVendor 0x0bda Корпорация Realtek Semiconductor.
idProduct 0xc820
bcdDevice 2.00
iManufacturer 1 Realtek
iProduct 2 802.11ac NIC
iSerial 3 123456
Поиск ID “0bda:c820” показывает, что это соответствует ожидаемому чипсету RTL8821CU (с подозрительным серийным номером!).
Является ли это 8188GU (или чем-то другим), притворяющимся 8821CU?
Почему могут меняться такие идентификаторы устройств?
N100 Proxmox:
Linux prox1 6.8.12-4-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-4 (2024-11-06T15:04Z) x86_64 GNU/Linux
Pi 4:
Linux DesktopPi 6.6.51+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.51-1+rpt2 (2024-10-01) aarch64 GNU/Linux
Я искал поддельные адаптеры WiFi Realtek и различные другие варианты, но не смог найти ничего, что подошло бы.
Какие-нибудь идеи?
Спасибо
В системе Proxmox, адаптер изначально представляет себя как USB-накопитель CD-ROM, содержащий (Windows) драйверы для реальной функциональности WiFi адаптера. В этом режиме он использует общий код продукта, который, по-видимому, впервые появился с моделью адаптера RTL8188GU, у которой была аналогичная функциональность автономных драйверов: именно поэтому указывается (Режим CDROM Драйвера)
.
Поскольку в системе Proxmox, по-видимому, нет usb_modeswitch
(или актуальной конфигурации для него), она не знает, как получить доступ к реальной функциональности WiFi адаптера и видит только функциональность CD-ROM.
Однако ваш Raspberry Pi 4 имеет предустановленный пакет usb_modeswitch
, который обнаруживает виртуальный USB CDROM идентификатор поставщика:продукта 0bda:1a2b
и автоматически отправляет ему необходимую команду, чтобы переключить его с виртуального режима CDROM на реальную функциональность. В этом случае команда, по-видимому, является стандартной командой “извлечь” для CD-ROM.
Получив команду “извлечь”, адаптер предполагает, что либо установка драйвера Windows завершена, либо драйвер уже установлен, поэтому адаптер сбрасывает себя и теперь раскрывает свой реальный идентификатор продукта и функциональность.
Если в системе Proxmox есть каталог /etc/usb_modeswitch.d/
, это означает, что фактический пакет usb_modeswitch
установлен, но его конфигурация не включает информацию о идентификаторе поставщика:продукта 0bda:1a2b
. Вам нужно будет просто скопировать файл 0bda:1a2b
, извлеченный из /usr/share/usb_modeswitch.d/configPack.tar.gz
на Raspberry Pi, в каталог /etc/usb_modeswitch.d/
системы Proxmox, чтобы сделать usb_modeswitch
осведомленным о том, что делать с вашим адаптером.
После предоставления конфигурационного файла вам нужно будет отключить и снова подключить адаптер, и теперь он должен быть виден как его реальный/основной идентификатор поставщика:продукта, который равен 0bda:c820
.
Если у хоста Proxmox нет usb_modeswitch
и вы не можете его легко установить, вы сможете использовать основную команду eject
, чтобы выполнить ее работу в этом конкретном случае. Вам нужно будет написать правило udev, которое сработает, как только будет обнаружено USB-устройство с идентификатором поставщика:продукта 0bda:1a2b
и назначено устройству /dev/sr*
(как это обычно бывает для устройств CDROM), и выполнить соответствующую команду eject /dev/sr<номер>
для него. Этого должно быть достаточно, чтобы раскрыть реальную функциональность WiFi адаптера и его связанный идентификатор продукта, после чего вы сможете работать с устройством обычным способом.
Ответ или решение
Является ли этот Wi-Fi адаптер Realtek подделкой?
Постановка вопроса о подлинности Wi-Fi адаптера Realtek RTL8821CU требует внимательного рассмотрения различных аспектов его работы и поведения на разных системах. В данной ситуации различные идентификаторы устройства, полученные при использовании команд lsusb
, вызывают сомнения в подлинности адаптера.
Анализ поведения адаптера
При подключении адаптера RTL8821CU к машинe Proxmox N100, команда lsusb
возвращает следующее:
Bus 001 Device 018: ID 0bda:1a2b Realtek Semiconductor Corp. RTL8188GU 802.11n WLAN Adapter (Driver CDROM Mode)
В этом случае адаптер отображается как устройство CD-ROM с идентификатором 0bda:1a2b
, что указывает на то, что он работает в режиме установки драйвера. Это типичное поведение для многих современных USB Wi-Fi адаптеров, которые сначала подключаются как устройства, содержащие драйверы для Windows. Проблема здесь заключается в том, что Proxmox, похоже, не имеет установленного usb_modeswitch
или необходимой конфигурации для переключения с этого режима.
На другой стороне, на Raspberry Pi 4 адаптер распознается иначе:
Bus 001 Device 008: ID 0bda:c820 Realtek Semiconductor Corp. 802.11ac NIC
Здесь адаптер идентифицируется как 802.11ac сетевой интерфейс с идентификатором 0bda:c820
, что соответствует его фактическому функционалу.
Почему этому происходит?
Проблема с тем, как адаптер определяется в разных системах, связана с управлением USB-устройствами, которое требует использование usb_modeswitch
. Этот пакет отвечает за автоматическое переключение устройства из режима CD-ROM в стандартный режим работы адаптера. Raspberry Pi имеет предустановленный usb_modeswitch
, который автоматически распознает виртуальный USB-CDROM и выполняет команду «вытаскивания» (eject), что приводит к сбросу адаптера и восстановлению его истинной функциональности.
В случае Proxmox, если отсутствует необходимая конфигурация для адаптера 0bda:1a2b
, устройство останется в режиме CD-ROM и не сможет выполнить свои функции как Wi-Fi адаптер.
Решение проблемы
Чтобы адаптер распознался правильно на Proxmox, есть несколько вариантов:
-
Установка usb_modeswitch: Если это возможно, рекомендуется установить пакет
usb_modeswitch
на Proxmox. Также необходимо добавить конфигурацию для0bda:1a2b
, чтобы он знал, что делать с вашим адаптером. Конфигурация может быть взята из Raspberry Pi, что должно решить проблему с распознаванием адаптера. -
Создание udev-правила: Если установка
usb_modeswitch
неосуществима, вы можете создать правило udev, которое будет реагировать на обнаружение устройства с идентификатором0bda:1a2b
. Это правило должно вызывать командуeject
для соответствующего устройства, чтобы перевести адаптер в необходимый режим. -
Использование команды eject: В качестве временного решения можно вручную выполнить команду
eject /dev/srX
, гдеX
— это номер вашего устройства CD-ROM, что может заставить адаптер переключиться в его нормальный режим работы.
Заключение
На основании проведенного анализа можно утверждать, что адаптер не является подделкой, а скорее просто неправильно распознается из-за отсутствия надлежащей поддержки USB-устройств в среде Proxmox. Простое устранение проблемы с помощью установки или конфигурирования usb_modeswitch
позволит вашему адаптеру работать как задумывалось.