![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Выяснилось, что было не так на Дебиане с WiFi адаптером. Сделан он на чипе Realtek RTL8821CU (PDF).
В последнее время производители USB-адаптеров придумали хитрость, чтобы упростить юзерам установку драйверов под Windows. Когда втыкаешь девайс первый раз, он определяется как флэш-диск, и оттуда начинает устанавливаться драйвер. Когда драйвер установлен, он шлёт устройству хитрую команду, флэш-диск исчезает и вместо него появляется WiFi трансивер. То есть на ходу меняется идентификатор USB-девайса на шине.
В Linux такие действия управляются через сервис udev и утилиту usb_modeswitch. В файле /usr/lib/udev/rules.d/40-usb_modeswitch.rules прописано, что и как переключать. Для данного конкретного адаптера там было:
В последнее время производители 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"
На Chimera Linux адаптер тоже ожил, после того как я установил usb_modeswitch и usb-modeswitch-data из исходников.$ 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
no subject
Date: 2025-01-07 21:35 (UTC)