vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2025-01-07 12:10 pm

Загвоздка с WiFi адаптером AC600

Выяснилось, что было не так на Дебиане с WiFi адаптером. Сделан он на чипе Realtek RTL8821CU (PDF).

В последнее время производители USB-адаптеров придумали хитрость, чтобы упростить юзерам установку драйверов под Windows. Когда втыкаешь девайс первый раз, он определяется как флэш-диск, и оттуда начинает устанавливаться драйвер. Когда драйвер установлен, он шлёт устройству хитрую команду, флэш-диск исчезает и вместо него появляется WiFi трансивер. То есть на ходу меняется идентификатор USB-девайса на шине.

В Linux такие действия управляются через сервис udev и утилиту usb_modeswitch. В файле /usr/lib/udev/rules.d/40-usb_modeswitch.rules прописано, что и как переключать. Для данного конкретного адаптера там было:
# D-Link DWA-171 Wifi Dongle
ATTR{idVendor}=="0bda", ATTR{idProduct}=="1a2b", RUN+="usb_modeswitch '/%k'"
Это почему-то не работало. Я поправил на:
# Realtek 8821CU Wifi Dongle
ATTR{idVendor}=="0bda", ATTR{idProduct}=="1a2b", RUN+="/usr/sbin/usb_modeswitch -K -v 0bda -p 1a2b"
Устройство успешно распозналось и функционирует:
$ lsusb
...
Bus 004 Device 009: ID 0bda:c811 Realtek Semiconductor Corp. 802.11ac NIC

$ ip addr
...
5: wlan0: <BROADCAST,MULTICAST,DYNAMIC,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 90:de:80:09:4e:08 brd ff:ff:ff:ff:ff:ff
inet 192.168.86.51/24 brd 192.168.86.255 scope global wlan0
valid_lft forever preferred_lft forever
inet6 fe80::92de:80ff:fe09:4e08/64 scope link
valid_lft forever preferred_lft forever
На Chimera Linux адаптер тоже ожил, после того как я установил usb_modeswitch и usb-modeswitch-data из исходников.

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org