Как я могу переключаться между «wl» и «b43» wifi-модулями без перезагрузки?

Если я перезагружу свой компьютер со следующим: /etc/modprobe.d/blacklist.conf :

 blacklist b43 blacklist ssb blacklist wl 

Тогда я могу либо modprobe wl (широкополосный 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 без перезагрузки?

Благодаря!

Состояние, которое изменяется, вероятно, находится в самом сетевом адаптере. Беспроводные адаптеры особенно склонны быть сложными программируемыми компьютерами сами по себе, и вполне вероятно, что 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 

В этом случае мой путь шины PCI eth0 – /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 и посмотреть, работает ли он.