如何在不重新启动的情况下在“wl”和“b43”wifi 模块之间切换?

如何在不重新启动的情况下在“wl”和“b43”wifi 模块之间切换?

如果我使用以下命令重新启动计算机/etc/modprobe.d/blacklist.conf

blacklist b43
blacklist ssb
blacklist wl

那我就可以任何一个 modprobe wl(broadcom STA,运行良好)或modprobe b43(在我的 B4331 rev02 上非常不稳定)。

如果我在任何时候加载b43模块,我无法(弄清楚如何)做任何事情都不允许我wl在不重新启动机器的情况下加载。

例如,如果我:

modprobe b43 # --> working network access
rmmod b43 brcmsmac ssb bcma wl
modprobe wl
iwlist scan

这产生

eth1      No scan results

我试图找出正在改变的状态,从而modproble b43 && rmmod b43产生一些有害的净效应。关于如何在不重新启动的情况下从加载中“恢复”的任何想法b43

谢谢!

答案1

正在更改的状态可能在网络适配器本身中。无线适配器本身往往是复杂的可编程计算机,这很可能b43使适配器处于不知道如何与wl.除此之外,您需要深入了解这些驱动程序的工作原理才能了解到底发生了什么。

如果您可以重新启动适配器本身,即使您没有重新启动整个计算机,也可能会清除状态。我假设我们谈论的是埋在计算机内部某处或者可能是主板一部分的 PCI 卡。因此,物理上切断设备电源是行不通的……但可能有一种方法可以要求 PCI 总线为我们做类似的事情。

警告

请注意,我只尝试过一次在我自己的机器上(没有 Broadcom 卡)。原理是相同的,但结果可能会有所不同。 这可能会导致您的系统崩溃或做其他坏事。如果你小心的话,我怀疑它会发生,但我还不够熟悉,无法对此下注。如果您不小心选择了错误的设备号,您最终可能会关闭硬盘控制器而不是网络适配器。

最后,不要复制粘贴这些说明。您需要修改它们以适合您的系统。

您需要在 中找到您的设备的 PCI 总线路径/sys。从已加载的驱动程序开始,以便您可以通过网络接口名称查找设备:

# ls -l /sys/class/net
lrwxrwxrwx 1 root root 0 Feb 18 04:12 eth0 -> ../../devices/pci0000:00/0000:00:1c.2/0000:07:00.0/net/eth0
lrwxrwxrwx 1 root root 0 Feb 18 04:08 lo -> ../../devices/virtual/net/lo

在本例中,我的 eth0 设备的 PCI 总线路径是/sys/devices/pci0000:00/0000:00:1c.2/0000:07:00.0。如果你查看该目录,你会发现一堆可用于调整 PCI 总线的文件。在本例中,我们感兴趣的是设备的remove文件及其父设备的rescan文件。

首先删除驱动;否则其设备将从其下方消失。然后从总线上移除该设备。

# modprobe -r b43 brcmsmac ssb bcma wl
# echo 1 >/sys/devices/pci0000:00/0000:00:1c.2/0000:07:00.0/remove

接下来,为了再次添加设备,请让设备的父设备进行重新扫描。

# echo 1 >/sys/devices/pci0000:00/0000:00:1c.2/rescan

现在你可以尝试运行modprobe wl看看是否有效。

相关内容