rfkill блокирует несколько адаптеров

У меня есть адаптер Wi-Fi USB, а также встроенный. Когда я бегу rfkill list Я получаю этот вывод:

0: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no
9: nfc0: NFC
    Soft blocked: no
    Hard blocked: no

Должен ли быть отдельный список встроенных и usb-адаптеров? Я хочу иметь возможность блокировать только встроенный адаптер, прямо сейчас, когда я запускаю rfkill block 0 это отключает оба адаптера.

Обновление: я нашел другой старый USB-адаптер, подключил его и запустил rfkill list, На этот раз вывод был

0: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no
3: nfc0: NFC
    Soft blocked: no
    Hard blocked: no
4: phy2: Wireless LAN
    Soft blocked: no
    Hard blocked: no

Где 4 второй адаптер, я думаю. Я использую этот репозиторий rtl8812au для драйвера. Может ли быть проблема с тем, что приводит к тому, что адаптер не отображается в rfkill list? С подключенным 2-м адаптером я запустил rfkill block 4 и все Wi-Fi был заблокирован. Встроенный вай-фай и два адаптера. Это как rfkill предполагается работа?

1 ответ

Решение

Похоже, что в настоящее время rfkill работает и для меня. Это не только команда rfkill, которая показывает это поведение. То же самое происходит, когда вы пишете прямо в файлы sysfs. Например (как root):

Отключить RF на WiFi устройстве № 0:

$ echo 1 > /sys/class/rfkill/rfkill0/soft

Включить RF на WiFi устройстве № 2:

$ echo 0 > /sys/class/rfkill/rfkill2/soft

Я предполагаю, что это по умолчанию для всех устройств, которые не поддерживают RF kill API в своих драйверах. Чтобы процитировать из заголовочного файла cfg80211.h:

Интеграция RFkill в cfg80211 практически невидима для драйверов, так как cfg80211 автоматически регистрирует экземпляр rfkill для каждого беспроводного устройства, о котором он знает. Soft kill также переводится в отключение и отключение всех интерфейсов, ожидается, что драйверы отключат устройство, когда все интерфейсы не работают.

Я также использую драйвер rtl8812au и rtl8192ce, которые не поддерживают API RF kill непосредственно в своих драйверах.

Что касается самого драйвера rtl8812au, я использую его из https://github.com/zebulon2/rtl8812au, потому что драйвер gnab определил его как адаптер Ethernet вместо адаптера WiFi. Если у вас точно такая же проблема, это может объяснить, почему она не указана в rfkill.

Другие вопросы по тегам