rfkill 阻止多个适配器

rfkill 阻止多个适配器

我有一个 USB WiFi 适配器以及内置适配器。运行时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? 插入第二个适配器后,我运行rfkill block 4,发现所有 wifi 都被阻止了。 内置 wifi 和两个适配器。 应该这样rfkill工作吗?

答案1

对我来说,这显然也是 rfkill 目前的工作方式。不仅仅是 rfkill 命令本身表现出这种行为。当您直接写入 sysfs 文件时也会发生同样的情况。例如(以 root 身份):

禁用 WiFi 设备 #0 上的 RF:

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

在 WiFi 设备 #2 上启用 RF:

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

我假设它是所有不支持其驱动程序中的 RF kill API 的设备的默认设置。引用 cfg80211.h 头文件:

cfg80211 中的 RFkill 集成对于驱动程序来说几乎是不可见的,因为 cfg80211 会自动为其所知道的每个无线设备注册一个 rfkill 实例。软终止也意味着断开连接并关闭所有接口,驱动程序应该在所有接口关闭时关闭设备。

我也在使用 rtl8812au 驱动程序以及 rtl8192ce,它们似乎都不在其驱动程序中直接支持 RF kill API。

对于 rtl8812au 驱动程序本身,我使用的是https://github.com/zebulon2/rtl8812au,因为格纳布导致它被识别为以太网适配器而不是 WiFi 适配器。如果您遇到完全相同的问题,那么这可能解释了为什么它没有被 rfkill 列出。

相关内容