vak: (Default)
[personal profile] vak
Выяснилось, что было не так на Дебиане с 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 из исходников.

Date: 2025-01-07 20:39 (UTC)
lxe: (Default)
From: [personal profile] lxe
Настораживают меня такие stateful-устройства. Нет, чтобы всегда выдавать два интерфейса.

Date: 2025-01-07 21:03 (UTC)
kondybas: (Default)
From: [personal profile] kondybas
Вероятно, реализация модесвитча дешевле, чем пихать в чип полноценній усб-хаб.

Date: 2025-01-07 22:54 (UTC)
lxe: (Default)
From: [personal profile] lxe
А также принцип наименьшего состояния.

Date: 2025-01-07 21:11 (UTC)
henry_flower: A melancholy wolf (Default)
From: [personal profile] henry_flower
> В последнее время

це давно з'явилося, років з 15 тому, разом з тодішніми 3g/4g "модемами"

я пам'ятаю оту usb_modeswitch ще до ондроїдних телехфонів

Date: 2025-01-07 23:14 (UTC)
tiresome_cat: (CuriousCat)
From: [personal profile] tiresome_cat
Эта лабуда со встроенными драйверами часто встречалась и на принтерах НР. Пользы от неё никакой, сплошной вред.

Date: 2025-01-08 00:20 (UTC)
ircicq: (Default)
From: [personal profile] ircicq
Windows известна бинарной совместимостью драйверов

Некоторые (WDM) даже работали начиная с Win98/NT4 и до современных (32-битных вариантов)

Date: 2025-01-08 06:40 (UTC)
tiresome_cat: (CuriousCat)
From: [personal profile] tiresome_cat
Далеко не всегда.

Date: 2025-01-08 09:58 (UTC)
ircicq: (Default)
From: [personal profile] ircicq
Даже почти никогда.
Но в принципе универсальный драйвер написать можно, особенно задним числом, имея возможность тестировать на предыдущих Windows.
Конкретно с WiFi-драйверами не так - там API внятный придумали только начиная с XP.

Date: 2025-01-08 06:41 (UTC)
tiresome_cat: (CuriousCat)
From: [personal profile] tiresome_cat
Как-то так, да. Дурная идея.

Date: 2025-01-08 07:26 (UTC)
x86128: (Default)
From: [personal profile] x86128
Хитро, как раз на этом чипе для домашнего NAS присматривал

Date: 2025-01-08 07:37 (UTC)
suhajh: (Default)
From: [personal profile] suhajh
Ну че, за успех❗ 🥂

Date: 2025-01-08 19:27 (UTC)
suhajh: (Default)
From: [personal profile] suhajh
Че то у меня сразу перефразировалось = разум трумпа над здравым смыслом... 🤦‍♂️