Instalacja Broadcom 4311 na Ubuntu 12.04

Uwaga: Ten wpis został utworzony ponad rok temu. Informacje w nim zawarte mogą być nieaktualne!
Autorem wpisu jest jeden z naszych Czytelników – Marcin „szczygliś” Szczygliński – szczyglis83@gmail.com.

Poniższy opis dotyczy instalacji sterownika bezprzewodowej karty sieciowej Broadcom Corporation BCM4311 802.11b/g WLAN na laptopie Dell Inspiron 1720 w systemie Linux Ubuntu 12.04 LTS. Na podobnych konfiguracjach jednak instalacja powinna przebiegać w analogiczny sposób.

Wstęp

Ze swojego własnego doświadczenia wiem, jak bardzo kłopotliwym może być na początku uruchomienie bezprzewodówki Broadcom Corporation BCM4311 802.11b/g na Linuxie. Osobiście spędziłem kilka dni na mozolnym przekopywaniu się przez Google’a w poszukiwaniu pomocy. Pomoc oczywiście znalazłem, ale rozwiązań problemu było praktycznie tyle co ludzkich pomysłów. Każdy opisywał to inaczej, w dodatku czasami bardzo chaotycznie. Sugerując się sugestiami innych opracowałem w końcu swoją własną metodę na rozwiązanie tego problemu. Z punktu widzenia czasu, wydaje mi się ona teraz banalnie prosta. Zdaję sobie jednak sprawę, że zapewne w tym momencie jest wiele osób, które tak jak ja na początku – „błądzą” po forach, by rozwiązać powyższy problem. Dlatego też postanowiłem napisać krótki opis – jak krok po kroku zainstalować ową nieszczęsną kartę. Mam nadzieję, że komuś się przyda.

Problem

Obecne dystrybucje Linuxa zawierają w sobie imponującą liczbę sterowników do różnorakich podzespołów i ich uruchomienie nie stanowi żadnego problemu. Istnieją jednak producenci, którzy Linuxa w ogóle nie wspierają i nie oferują do swoich urządzeń żadnych sterowników. Czasami też takie sterowniki są, ale są to sterowniki o charakterze zamkniętym. A przecież nie w tym cała magia wolnego oprogramowania. Do jednej z tych kategorii należy właśnie nasza karta – Broadcom Corporation BCM4311 802.11b/g. Można to jednak w prosty sposób obejść. Całość sprowadza się do ściągnięcia firmware’u karty i zainstalowaniu programu, który pozwoli nam na jego uruchomienie w systemie.

Dostęp do internetu
Aby instalacja się powiodła będziemy niestety musieli mieć dostęp do internetu, aby ściągnąć wymagane archiwa. Można więc na razie podłączyć się za pomocą kabla ethernet, albo ściągnąć wszystko na innym komputerze i przenieść za pomocą pendrive’a na system, na którym będziemy sterowniki instalować.

Instalacja

Całą procedurę można nieco zautomatyzować, gdyż istnieje program o nazwie firmware-b43-installer, który większość z poniżej opisywanych rzeczy może zrobić za nas, jednak w tym przypadku nie zawsze daje to oczekiwane rezultaty.

Zainteresowani mogą spróbować:

sudo apt-get install firmware-b43-installer

W poniższym opisie nie będziemy jednak używać tego programu, a całą procedurę instalacji przeprowadzimy ręcznie krok-po-kroku, gdyż według mnie, taka forma będzie lepsza.

Pobranie sterowników

  1. Sprawdzenie modelu karty
    Istnieje kilka modeli kart z tej serii, w zależności od modelu będziemy musieli pobrać odpowiedni plik.

    Po pierwsze sprawdzamy jaka karta jest zainstalowana w naszym komputerze. Dokonujemy tego z poziomu konsoli, wpisując:

    lspci

    Wyświetli nam się lista wszystkich urządzeń w systemie. Nasza karta powinna być wykryta jako Network Controller. Sprawdzamy teraz jaki dokładnie jest model karty, np. u mnie wygląda to tak:

    0c:00.0 Network controller: Broadcom Corporation BCM4311 802.11b/g WLAN (rev 01)

    Interesuje nas to: BCM43xx – jest to nazwa modelu naszej karty WLAN.
    Najlepiej teraz zapiszmy sobie gdzieś ten model, bo będzie nam to potrzebne za chwilę. Następnie (w zależności od modelu karty) pobieramy odpowiedni firmware:
    Dla modeli: BCM4306/3, BCM4311, BCM4312, BCM4318, BCM4320 pobierzemy sterownik b43 w wersji 5.100.138.
    Dla modeli: BCM4301, BCM4306, BCM4306/2 pobierzemy sterownik b43legacy w wersji 5.10.56.27.3.

    Wymienione sterowniki przeznaczone są dla kernela 3.2 i nowszych.

    Wersję swojego kernela sprawdzisz wpisując w konsoli:

    uname -r
  2. Pobranie sterownika
    Zanim rozpoczniemy pobieranie sterowników utwórzmy sobie w katalogu domowym katalog o nazwie instalacja – wszystkie pliki będziemy pobierać właśnie do niego.

    cd ~
    mkdir instalacja
    cd instalacja

    Gdy już wiemy jaki model karty mamy w systemie – pobieramy jeden z poniższych sterowników:

    Pliki możemy pobrać bezpośrednio z przeglądarki (jeśli np. korzystamy z innego komputera), lub za pomocą polecenia wget, tak jak to jest przedstawione na listingu poniżej:

    • b43 (dla modeli: BCM4306/3, BCM4311, BCM4312, BCM4318, BCM4320):
      wget http://www.lwfinger.com/b43-firmware/broadcom-wl-5.100.138.tar.bz2
      tar xjf broadcom-wl-5.100.138.tar.bz2
    • b43legacy (dla modeli: BCM4301, BCM4306, BCM4306/2):
      wget http://mirror2.openwrt.org/sources/broadcom-wl-5.10.56.27.3_mipsel.tar.bz2
      tar xjf broadcom-wl-5.10.56.27.3_mipsel.tar.bz2

    Jeśli plik został pobrany na innym komputerze, to umieszczamy go w katalogu /home/użytkownik/instalacja (gdzie użytkownik=nasza_nazwa_użytkownika) i rozpakowujemy poleceniem:

    tar xjf nazwa_pliku

    Teraz czas na pobranie programu b43-fwcutter w wersji 015.
    Będąc w katalogu /home/użytkownik/instalacja wpisujemy w konsoli:

    wget http://bues.ch/b43/fwcutter/b43-fwcutter-015.tar.bz2
    tar xjf b43-fwcutter-015.tar.bz2

    Spowoduje to pobranie programu i jego rozpakowanie.
    Teraz musimy go tylko skompilować:

    cd b43-fwcutter-015
    make
    sudo make install
    cd ..

    Mamy już wszystko, co będzie nam potrzebne do instalacji.

Instalacja sterowników

Kolejnym krokiem będzie instalacja sterownika w systemie za pomocą programu b43-fwcutter. Upewnijmy się, czy jesteśmy w katalogu, do którego pobraliśmy nasze pliki (w naszym przypadku jest to /home/użytkownik/instalacja, lub w skrócie ~/instalacja).
Następnie wpiszmy w konsoli:

export FIRMWARE_INSTALL_DIR="/lib/firmware"

Stworzy nam to zmienną FIRMWARE_INSTALL_DIR, w której przechowywana będzie ścieżka do katalogu z firmware w systemie. W naszym przypadku, na Ubuntu jest to /lib/firmware.
Uruchomimy teraz program b43-fwcutter, jednym z poniższych sposobów, w zależności od sterownika jaki pobraliśmy:

  • sterownik b43 v.5.100.138 (dla modeli: BCM4306/3, BCM4311, BCM4312, BCM4318, BCM4320):
    sudo b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" broadcom-wl-5.100.138/linux/wl_apsta.o
  • sterownik b43legacy v.5.10.56.27.3 (dla modeli BCM4301, BCM4306, BCM4306/2):
    sudo b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" broadcom-wl-5.10.56.27.3/driver/wl_apsta/wl_prebuilt.o

Uruchamianie sterowników

W tym momencie (na Ubuntu 12.04 LTS) karta bezprzewodowa powinna już działać. Odczekajmy chwilę i sprawdżmy, czy system wykrywa jakieś dostępne sieci bezprzewodowe. Interfejs karty powinien być widoczny w systemie jako wlan0. Aby sprawdzić, czy interfejs jest „podniesiony”, wpiszmy w konsoli:

ifconfig wlan0

Jeśli wszystko poszło dobrze powinny nam się wyświetlić informacje o interfejsie.

Istnieje możliwość, że w pamięci załadowane są wciąż poprzednie sterowniki, więc musimy je wyłączyć za pomocą polecenia modprobe.

Zależnie od uprzednio zainstalowanych sterowników, wyłączamy je z pamięci:

modprobe -r b43 bcma
modprobe -r brcmsmac bcma
modprobe -r wl

Możemy wpisać wszystkie 3 polecenia po koleji – jeśli nie ma danego sterownika w pamięci, to modprobe po prostu to zignoruje.
Następnie uruchamiamy nasz sterownik:

modprobe b43 (jeśli instalowaliśmy sterownik b43)
modprobe brcmsmac (nie opisywany w artykule)
modprobe wl (jeśli instalowaliśmy sterownik b43legacy)

Polecenie działa od razu, nie trzeba restartować komputera.
Bardzo możliwe też, że będziemy musieli jeszcze wpisać stare sterowniki na tzw. czarną listę, tak aby nie ładowały się już do systemu.
Czarna lista urządzeń znajduje się w pliku /etc/modprobe.d/blacklist.conf.
Przykład z pliku blacklist.conf:

[...]
# replaced by b43 and ssb.
blacklist bcm43xx
[...]

Taki wpis sprawi, że sterownik bcm43xx nie będzie uruchamiany.
Jeśli natomiast chcemy “wypisać” sterownik z czarnej listy dajemy przed jego nazwą znak #, np.:

# replaced by b43 and ssb.
# blacklist bcm43xx
Aby edytować plik blacklist.conf musimy mieć uprawnienia administratora.

Tips & tricks: szybkie uruchamianie z LiveCD/USB

Istnieją dwie opcje instalacji Ubuntu na pamięci USB – jedna w wersji LiveCD uruchamianej jednorazowo do pamięci, bez możliwości zapisu zmian, gdzie po restarcie wszystkie zapisane dane znikają oraz druga – z tzw. persistence file, dzieki któremu wszystkie zapisane dane pozostają, a pendrive traktowany jest jak dysk twardy. W tym drugim przypadku nie ma problemu, gdyż raz zainstalowane sterowniki pozostają w systemie nawet po ponownym uruchomieniu komputera.
W pierwszym przypadku sprawy maja się inaczej. Tutaj po każdorazowym uruchomieniu systemu wszystko instalować musimy od nowa.
Na szczęście procedurę tą można w znaczny sposób sobie zautomatyzować i nie dotyczy to jedynie sterowników. Wystarczy przygotować sobie katalog na pendrive z najważniejszymi rzeczami oraz kilka skryptów w bashu, które po uruchomieniu systemu zrobią całą “mokrą robotę” za nas.
Podam teraz skrypt, który automatycznie uruchomi nam sterowniki od karty WLAN w ułamku dosłownie sekundy, a wszystkie te kroki, które wykonywaliśmy podczas instalacji zrobi za nas.
Pamiętacie, że wszystkie wymagane do instalacji pliki zapisywaliśmy w katalogu instalacja w naszym katalogu domowym. Wróćmy więc do niego raz jeszcze.
Stwórzmy sobie skrypt w bashu, który będzie instalował to wszystko automatycznie. Jako iż wszystkie pliki mamy już pobrane, wystarczy jedynie ich instalacja.
Stwórzmy w katalogu instalacja plik o nazwie “instaluj.sh”.
W pliku tym wpiszmy to co poniżej:

#!/bin/bash

cd b43-fwcutter-015
make
sudo make install

export FIRMWARE_INSTALL_DIR="/lib/firmware"
cd ..
sudo b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" broadcom-wl-5.100.138/linux/wl_apsta.o
modprobe b43

Oczywiście, dotyczy to sterownika b43, w przypadku wersji b43legacy dwie ostatnie linijki wyglądały będą tak:

sudo b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" broadcom-wl-5.10.56.27.3/driver/wl_apsta/wl_prebuilt.o
modprobe wl

Następnie zapiszmy nasz plik i nadajmy mu prawa pliku wykonywalnego:

chmod +x instaluj.sh

Cały katalog instalacja skopiujmy sobie na pendrive’a z zainstalowanym Ubuntu.
Ale tutaj mała uwaga: jeśli mamy uruchomiony system jako LiveCD/USB to Linux nie pozwoli nam na pendrivie niczego zapisać, gdyż będzie on traktowany jako płyta CD (a więc tylko do odczytu). Można to ominąć prostym, aczkolwiek trochę ryzykownym sposobem. Wystarczy podczas pracy systemu wyjąć pendrive’a z portu USB (ale pod warunkiem, że nie będzie w tym czasie pracował!) Następnie wkładamy go z powrotem i Linux wykryje go jak normalną pamięć flash – od tej pory zapis jest już możliwy.
No i to wszystko – od tej pory za każdym razem po uruchomieniu systemu wystarczy, że wejdziemy do folderu instalacja na pendrivie, skopiujemy go np. na /home) i uruchomimy skrypt instaluj.sh – sterowniki zainstalują się same. Jest to bardzo przydatne, naprawdę. W ogóle warto przygotować sobie kilka najpotrzebniejszych programów i sterowników, a następnie nagrać to wszystko na pendrive’a z Linuxem – oszczędza to naprawdę dużo czasu podczas każdego ponownego rozruchu systemu.

Podsumowanie

Tak jak napisałem – mam nadzieję, że artykuł choć trochę pozwolił zaoszczędzić komuś czasu i nerwów związanych z instalacją tej nieszczęsnej karty. Jeśli macie jakieś pytania lub sugestie skorzystajcie z opcji komentarza na dole. Jeśli artykuł okazał się pomocny – to również możecie mnie o tym poinformować w komentarzu. Możecie też do mnie napisać na adres szczyglis@o2.pl, lub szczyglis@gmail.com. Wszelkie sugestie lub poprawki będą mile widziane :)

Testowana platforma

Laptop Dell Inspiron 1720
Karta WLAN Broadcom Corporation BCM4311 802.11b/g
Ubuntu precise 12.04 LTS 32-bit
Kernel: 3.2.0-23-generic-pae

Przydatne liki

Artykuł na licencji GNU/GPL
Autor: Marcin „szczygliś” Szczygliński
szczyglis83@gmail.com

Żródło: http://szczyglis.blogspot.com/2012/09/instalacja-broadcom-bcm4311-na-linux-ubuntu.html.html

Wersja 1.1
Ostatnia modyfikacja 15/09/2012 godz. 01:28

Jeżeli powyższy artykuł nie rozwiązał lub rozwiązał częściowo Twój problem, dodaj swój komentarz opisujący, w którym miejscu napotkałeś trudności.
Mile widziane komentarze z uwagami lub informacjami o rozwiązaniu problemu.
  • OttON

    Dzięki Szczygliś. Tips&Tricks się na pewno przyda dla osób korzystających z live cd/usb na lapkach z tymi kartami. Jedna uwaga: instalatory i live-y obecnych wersji Ubuntu i Linux Mint bez tego sterownika nie zawsze chcą się włączyć. Do tej pory udało mi się bezproblemowo tylko uruchomić Ubu Studio (opisane we wcześniejszym artykule na ten temat). Dlatego polecam wcześniej dostosować live na innym kompie, lub z pomocą innego systemu.

  • Asad

    Broadcomy to zmora Linuxa, już dawno powinno być wsparcie OOB. Tutaj jeszcze warto dodać, że nie mając DKMS’a w systemie, to i tak możemy nie uruchomić kart. Na Xubuntu, Lubuntu powyższa instrukcja już nie ma zastosowania.

  • Azenis
  • http://szczyglis.blogstop.com szczygliś

    Witam, jestem autorem tego poradnika.
    No cóż, widzę, że jednak co system to inna bajka.
    U mnie np. nie zadziałała metoda, do której Kolega powyżej podał linka, musiałem to robić tak jak opisałem. Ah te Broadcomy…P.S. U mnie Ubuntu odpaliło bez problemu. Zarówno zainstalowane jak i LiveCD. Nie było żadnych problemów, oczywiście poza niedziałającym WiFi.

  • http://szczyglis.blogstop.com szczyglis

    P.S. Zauważyłem dość intrygującą rzecz.
    Po zainstalowaniu restricted-extras (pracując na LiveUSB – bez persistence) po jakiś 5 godzinach WiFi zaczyna się rozkładać, gdy używa się zbyt dużo flasha (YouTube i te sprawy). Sieć niewiadomo czemu zaczyna się rozłączać, po czym znikają wszystkie widoczne sieci z listy dostępnych. Za pierwszym i za drugim razem uznałem to za jakiś przypadkowy błąd i zignorowałem. Ale gdy zaczęło się to powtarzać, postanowiłem zrobić eksperyment: nie instalowałem extrasów, tylko pobrałem flasha ze strony Adobe i zainstalowałem ręcznie, po czym skatowałem komputer filmami, żeby jak najbardziej obciążyć sieć i samego flasha. System chodził 3 dni, zanim sam go nie wyłączyłem i to bez żadnych problemów. Wiec zawalenie cache’em flasha raczej odpada, a skoro nie chodzi o cache, to co jest powodem problemów w „restricted”? Flash jest ten sam, tyle że instalowany ręcznie z .deb.

  • rePeter

    Dość długo używałem Broadcoma na Dellu Vostro 1720, korzystałem głównie ze sterowników ze strony producenta http://www.broadcom.com/support/802.11/linux_sta.php ponieważ były stabilniejsze i łatwiejsze w instalacji niż dystrybucyjne moduły, które na dodatek częściej wywalały się po uśpieniu. Minusem była konieczność kompilacji modułu do każdego upgradu jądra.
    Potem zakupiłem sobie niedrogą kartę na Atherosie i mam święty spokój (choć raz na kilkaset uśpień też zdarzy się zwiecha, ale to już można strawić). Gdyby nie upgrady jądra mój laptop nie byłby w ogóle wyłączany, jedynie codziennie średnio 2-3 razy go usypiam i wybudzam.

    • http://szczyglis.blogspot.com szczyglis

      No widzisz, a umnie na Inspironie 1720 ten sterownik nie działał, więc musiałem zrobić tak jak opisałem w artykule. Linux domyślnie proponował mi ten sterownik w „Additional Drivers”, ale tak jak napisałem – karta u mnie na nim nie działała. P.S. Atherosa miałem w swojej starej ś.p. Toshibie, dobra to była karta :)

  • razdwapiec

    U mnie, na Ubuntu 12.04, Broadcom 4311 działa bez żadnych sztuczek. Po instalacji systemu nic nie musiałem robić, wifi śmigało pięknie. Na wcześniejszych wersjach Ubuntu też działało, tylko trzeba było włączyć zamknięty sterownik poprzez „Dodatkowe sterowniki”. Teraz nawet tego nie muszę robić i bez problemu obsługuje mi nawet wbudowany w laptopa przełącznik do włączania/wyłączania wifi.

  • marmez

    Dzięki wielkie! Działa! Właśnie zamieniłem stare dobre 10.4 na 12.4 i się bardzo rozczarowałem, co w 10 sterowniki same się instalowały przez „Dodatkowe sterowniki” natomiast w 12.4 nie wyświetlał ich tam :(

  • nananana

    Oj jakie to proste. Przyjazny system. Nie ma co. Powodzenia. Wy chyba dostaniecie na starość medale dla kombatantów? Za taką męczarnię. Buhahahahahah

  • http://nietrywialny.blogspot.com przem

    Wielkie dzięki dla autora poradnika. Dzięki Tobie mam działające wifi, którego tak bardzo mi brakowało :)

  • Darek

    Zainstalowałem sterownik WI-FI dla BCM4312 j/w dla LTS 10.4 na Dell 1537 według powyzszych wskazuwek. Sygnalizje wlączony bezprzewodowy ale połączenia brak. Kontrolka WI-FI przygasa co kilka minut. Niby jest to starsza dystrybucja ale wszystko się zainstalowało bez błędnie . Czy dla Ubuntu 10.4 ta procedura powinna być inna?

  • Wojtek

    Wielkie dzięki dla Autora!
    Kilka dni nerwowych nieudanych instalacji, a dzięki temu tekstowi w dziesięć minut mam działającą kartę! Jeszcze raz ogromne dzięki

  • Piotr

    JESTEŚ WIELKI AUTORZE. Cały dzień zmarnowałem nad konfiguracją bcm4318 na Ubuntu 12.04 a tu zadziałało od kopa!

  • Rafael Jankiewicz

    Ja zastosowalem ten prosty sposob:

    Uruchamiamy
    terminal i wpisujemy:

    sudo passwd

    podajemy dwukrotnie nowe hasło dla roota, następnie:

    su

    wpisujemy hasło roota, po czym wydajemy polecenia:

    apt-get
    update

    apt-get
    remove bcmwl-kernel-source

    pytanie potwierdzamy T i wciskamy enter.

    Po odinstalowaniu pakietu i usunięciu modułu dkms podajemy
    następujące polecenia:

    apt-get
    install firmware-b43-installer

    apt-get
    install b43-fwcutter

    modprobe
    b43

    ifconfig
    wlan0 up

    i na koniec restartujemy system poleceniem:

    reboot

    Po ponownym uruchomieniu komputera nasze połączenie
    bezprzewodowe będzie działało prawidłowo

    • Maciej Aleksandrowski

      dzieki czlowieku
      w linuxie jestem zielony jak salata…a tu masz , po n-godzinach sleczenia mam wi-fi
      dzieki Twoim instr….
      dzieki

  • Milosz

    Witam,

    postąpiłem tak jak jest napisane w instrukcji i nie wifi nadal nie działa. Jest ktoś w stanie pomóc?

  • marek

    Artykuł w zasadzie rozwiązał problem instalacji WIFI. Robiłem to na nietypowym komputerze iMac. Próbowałem dwóch dystrybucji: XUbuntu 12.01PL i Mint15 (na Ubuntu ten komputer jest za słaby, nie daje sobie rady z unity). Pojawił się drobny problem w XUbuntu: trzeba było dopisać na końcu pliku /etc/modules linijkę ze wpisem b43. Bez tego konieczne było wpisywanie mdprobe b43 po każdym uruchomieniu komputera. W Mint WIFI zadziałało zaraz po instalacji.

  • Kodi

    Coś czego szukałem ; ) Naprawdę bardzo przydatny poradnik ; )

  • doodek

    bllllleeleeeeeee nie pedziiiii

  • doodek

    zaraz mnie szlag trafi to juz chyba 15 proba i metoda a wciaz nioe pedziiiiiiiiiaaaaaaaaaaaaa faaaaakkkkkkkkk

  • doodek

    help hilfe pomocy aaaaaaaaaaa

  • Grzegorz

    ja mam kartę sieciową broadcom [bcm4313] i Ubuntu 13.10. Widziałem sieci wifi, niestety na liście dostępnych sieci brakowało mojej. Problem z wifi udało mi się rozwiązać przez usunięcie domyślnie zainstalowanego sterownika bcmwl-kernel-source i instalację broadcom-sta-source. Obie czynności szybko i bezproblemowo można zrobić korzystając z Synaptic

  • mQ

    Szacun człowieku! Drugi dzień linuxa na oczy widzę i już udało się dzięki Tobie zainstalować sterownik do Wi-Fi :)) Dzięki wielkie – ten poradnik to kawał dobrej roboty :)