![[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 20:39 (UTC)no subject
Date: 2025-01-07 21:03 (UTC)no subject
Date: 2025-01-07 21:35 (UTC)https://en.wikipedia.org/wiki/Principle_of_least_astonishment
no subject
Date: 2025-01-07 22:54 (UTC)no subject
Date: 2025-01-07 21:11 (UTC)це давно з'явилося, років з 15 тому, разом з тодішніми 3g/4g "модемами"
я пам'ятаю оту usb_modeswitch ще до ондроїдних телехфонів
no subject
Date: 2025-01-07 21:35 (UTC)no subject
Date: 2025-01-07 23:14 (UTC)no subject
Date: 2025-01-07 23:28 (UTC)no subject
Date: 2025-01-08 00:20 (UTC)Некоторые (WDM) даже работали начиная с Win98/NT4 и до современных (32-битных вариантов)
no subject
Date: 2025-01-08 00:29 (UTC)no subject
Date: 2025-01-08 06:40 (UTC)no subject
Date: 2025-01-08 09:58 (UTC)Но в принципе универсальный драйвер написать можно, особенно задним числом, имея возможность тестировать на предыдущих Windows.
Конкретно с WiFi-драйверами не так - там API внятный придумали только начиная с XP.
no subject
Date: 2025-01-08 06:41 (UTC)no subject
Date: 2025-01-08 07:26 (UTC)no subject
Date: 2025-01-08 07:39 (UTC)no subject
Date: 2025-01-08 07:37 (UTC)no subject
Date: 2025-01-08 07:44 (UTC)no subject
Date: 2025-01-08 19:27 (UTC)