GNU/Linux >> Znalost Linux >  >> Linux

Jak povolit Broadcom Wireless na Manjaro

Zde je zajímavý problém. Před několika týdny jsem testoval Manjaro 18.0.4 Illyria na svém notebooku HP Pavilion a narazil jsem na zajímavý jev. Notebook je vybaven kartou Broadcom Wireless a v živé relaci, s bezplatnými i nesvobodnými ovladači, byla síť v pořádku. Po instalaci jsem však neměl žádné bezdrátové připojení.

Při pohledu na vzhled systému jsem našel chybu s chybou WLC_SCAN (-22). Jakmile jsem tímto hledáním zasáhl Intertubes, rozpoutalo se peklo. Našel jsem desítky příspěvků na fóru Arch a Manjaro, které o tomto problému hovořily. Některá řešení se nabízela, ale byla buď neúčinná, nebo velmi obtížně realizovatelná. Tak jsem se rozhodl, že to zkusím opravit sám, proto tento návod. Následujte mě.

Problém podrobněji

Jak se stalo, v mém případě se mi zobrazila ikona bezdrátového připojení a Správce sítě vypsal řadu přístupových bodů v blízkosti notebooku. Ale když jsem se pokusil připojit, nic se nestalo. Zadal bych heslo, počkal a pak by vybraný přístupový bod jednoduše zmizel ze seznamu a žádné spojení by se nenavázalo. Při spuštění dmesg se mi zobrazil následující text:

[ 526.274664] IPv6:ADDRCONF(NETDEV_UP):wlo1:odkaz není připraven
[ 526.276614] ERROR @wl_cfg80211_scan :
[ 526.276619] Chyba WLC_2P>

Identifikoval jsem bezdrátovou síťovou kartu (v provozu). Modul jádra (zdarma) wl byl nahrán do paměti. Systém však nebyl schopen navázat spojení. Vypnutí IPv6 nepomohlo – je to jen artefakt nepoužívání IPv6 na routerech.

Pokusil jsem se o některá z rychlých oprav navrhovaných v různých vláknech. Jedním z nich bylo použití hardwarového tlačítka na obalu notebooku k zapnutí/vypnutí bezdrátové antény a následné kontrole stavu pomocí příkazu rfkill. Někteří lidé uvedli, že jim to pomohlo „odblokovat“ jejich karty. Nefungovalo mi to.

rfkill list
0:hp-wifi:Bezdrátová LAN
Soft blokováno:ne
Tvrdě blokováno:ano
1:hp-bluetooth:Bluetooth
Soft blokováno:ano
Tvrdě blokováno:ano
2:phy0:Bezdrátová síť LAN
Tvrdě blokováno:ne
Tvrdě blokováno:ne

Nechtěl jsem se v tuto chvíli začít pohrávat s yaourtem, zkoušet broadcom-wl-dkms a další zmíněné tipy a triky. Chtěl jsem zjistit, jestli to dokážu vyřešit minimálními změnami stavu mého systému a doufejme, že nebude potřeba žádné stahování přes kabelovou síť (nebo podobně).

Řešení

Při pohledu na další distribuce, které jsem na tomto stroji používal – včetně poněkud problematické Fedory 30 a dalších, které měly dobrou, přiměřenou síťovou konektivitu a rychlost, jsem si uvědomil, že bych měl pro bezdrátové zařízení používat spíše moduly jádra b43. než wl blob. Prvním krokem bylo ruční uvolnění stávajícího modulu (wl) a nahrání modulu b43:

sudo modprobe -r wl

sudo modprobe b43

Jakmile jsem to udělal, problém se změnil. Wireless jsem už neměl vůbec, i když modul b43 byl načten do paměti. Znovu jsem tedy zkontroloval systémové zprávy a viděl jsem následující chybu:

[ 120.170582] Podpora pro revize jader 0x17 a 0x18 zakázána parametrem modulu allhwsupport=0. Zkuste b43.alhwsupport=1
[ 120.170590] b43:sonda bcma0:1 selhala s chybou -524
[ 120.170611] Nahrán ovladač Broadcom 43xx [ Funkce:PNLS ]

Jak chyba říká, potřeboval jsem načíst modul s jinými parametry:

sudo modprobe b43 allhwsupport=1

Úspěch! Jakmile jsem to udělal, bezdrátová karta se vrátila k životu, mohl jsem se připojit a používat síť v pohodě. Takže problém je vyřešen - ale stále musíme pochopit proč a poté automaticky povolit použití modulu b43 při bootování.

Moduly na černé listině

Z nějakého důvodu mají jak bezplatné, tak nesvobodné edice Manjaro Illyria modul b43 na černé listině, což by vysvětlovalo, proč by nebyly načteny při bootování. Můžete to zkontrolovat prozkoumáním obsahu souboru s názvem linux419-broadcom-wl.conf v /etc/modprobe.d. Uvnitř byla uvedena celá řada příslušných modulů, včetně b43, b43legacy, bcma, ssb a dalších.

Povolit načítání b43 při spouštění

Nyní, když máme ruční opravu, musíme ji udělat trvalou. To vyžaduje úpravu dvou souborů. Za prvé, musíte přidat b43 do seznamu modulů pro zavedení v /etc/modules-load.d/modules.conf. Pokud označíte obsah těchto souborů, zobrazí se něco jako:

# Seznam modulů k načtení při bootování

Musíte přidat b43 pod, takto:

# Seznam modulů k načtení při bootování
b43

Ale to není vše. Musíme přidat možnost načítání modulu pod /etc/modprobe.d. Je to podobné tomu, co jsme udělali s kartou Realtek Wireless, aby fungovala na starších jádrech 3.X. Musíte vytvořit konfigurační soubor v následujícím formátu:"název modulu".conf. V tomto případě b43.conf. Uvnitř tohoto souboru potřebujeme volbu allhwsupport:

možnosti b43 allhwsupport=1

Pro ověření by soubor měl vypadat takto:

cat /etc/modprobe.d/b43.conf
možnosti b43 allhwsupport=1

A to je vše. Restartujte a budete mít bezdrátové připojení v provozu.

Závěr

Tam jedeme. Tohle nebylo triviální. Připadá mi to ale elegantnější než ruční kompilace a sestavování modulů a nutnost používat samostatnou síť, abyste získali potřebné balíčky. Skutečnost, že existují také dva různé adresáře, které musíte použít k povolení načítání modulu, to také trochu komplikuje.

Každopádně dlouhodobým řešením je nechat distro automaticky detekovat potenciálně „špatný“ hardware již v živé fázi a podle toho provést úpravy – nainstalovat kompilační nástroje a hlavičky, upravit konfiguraci systému předem a podobně, takže když se uživatel přihlásí napoprvé vše funguje. Doufám, že vám byl tento návod užitečný. Opatrujte se, Manjarané.


Linux
  1. Jak povolit statistiky HAProxy

  2. Jak povolit předávání IP v systému Linux

  3. Jak zajistit, aby bezdrátová karta Broadcom Bcm4312 fungovala?

  1. Jak povolit HTTP2 v NGINX

  2. Co je předávání IP v Linuxu? Jak povolit přesměrování IP?

  3. Jak povolit md5 hash v Linuxu

  1. Jak povolit automatické přihlášení na Kali Linux

  2. Jak povolit HTTP/2 v Nginx

  3. Jak povolit linuxový odkládací oddíl?