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.
1. 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.
2. 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ć.
3. Instalacja
Uwaga: 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ć:
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:
$> 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.
3.1. Pobranie sterowników
a) Sprawdzenie modelu karty
Uwaga: 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
Uwaga: wymienione sterowniki przeznaczone są dla kernela 3.2 i nowszych.
Wersję swojego kernela sprawdzisz wpisując w konsoli:
Dla modeli: BCM4301, BCM4306, BCM4306/2
pobierzemy sterownik b43legacy w wersji 5.10.56.27.3
Uwaga: wymienione sterowniki przeznaczone są dla kernela 3.2 i nowszych.
Wersję swojego kernela sprawdzisz wpisując w konsoli:
$> uname -r
b) 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 ~Gdy już wiemy jaki model karty mamy w systemie - pobieramy jeden z poniższych sterowników:
$> mkdir instalacja
$> cd instalacja
- b43 (dla modeli: BCM4306/3, BCM4311, BCM4312, BCM4318, BCM4320):lub
http://www.lwfinger.com/b43-firmware/broadcom-wl-5.100.138.tar.bz2
- b43legacy (dla modeli: BCM4301, BCM4306, BCM4306/2):
http://mirror2.openwrt.org/sources/broadcom-wl-5.10.56.27.3_mipsel.tar.bz2
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:
lub- 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.
3.2 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:
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.
$> 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.
Uruchomijmy teraz program b43-fwcutter, jednym z poniższych sposobów, w zależności od sterownika jaki pobraliśmy:
lub- 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
4. 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.
Uwaga: 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:
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:
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.:
$> 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
Uwaga: aby edytować plik blacklist.conf musimy mieć uprawnienia administratora.
5. 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:
Oczywiście, dotyczy to sterownika b43, w przypadku wersji b43legacy dwie ostatnie linijki wyglądały będą tak:
Następnie zapiszmy nasz plik i nadajmy mu prawa pliku wykonywalnego:
Cały katalog instalacja skopiujmy sobie na pendrive’a z zainstalowanym Ubuntu.
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.
6. 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 szczyglis83@gmail.com. Wszelkie sugestie lub poprawki będą mile widziane :)
7. 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
Ubuntu precise 12.04 LTS 32-bit
Kernel: 3.2.0-23-generic-pae
8. Przydatne liki:
http://linuxwireless.org/en/users/Drivers/b43
http://linuxwireless.org/en/users/Drivers/brcm80211
http://www.lwfinger.com/b43-firmware/broadcom-wl-5.100.138.tar.bz2
http://mirror2.openwrt.org/sources/broadcom-wl-5.10.56.27.3_mipsel.tar.bz2
http://bues.ch/b43/fwcutter/b43-fwcutter-015.tar.bz2
http://ubuntu.pl/forum/
http://linuxwireless.org/en/users/Drivers/brcm80211
http://www.lwfinger.com/b43-firmware/broadcom-wl-5.100.138.tar.bz2
http://mirror2.openwrt.org/sources/broadcom-wl-5.10.56.27.3_mipsel.tar.bz2
http://bues.ch/b43/fwcutter/b43-fwcutter-015.tar.bz2
http://ubuntu.pl/forum/
Wersja 1.1
Ostatnia modyfikacja 15/09/2012 godz. 01:28
Ostatnia modyfikacja 15/09/2012 godz. 01:28
Artykuł został zamieszczony również tutaj: http://www.ubuntu-pomoc.org/instalacja-broadcom-4311-na-ubuntu-12-04/
A co jeżeli wersja jądra to 3.19.0-32 i686 ?
OdpowiedzUsuńMoim zdaniem bardzo fajnie opisany problem. Pozdrawiam serdecznie.
OdpowiedzUsuńc6e03c2g47 q6d45i3f40 q8q77j6h71 o2j26e6p28 n4i65v0z33 r3u58x5f90
OdpowiedzUsuńo2o34o8r63 h6u18f4n38 a3j18k8n58 r8k19b5n33 d9f50q0i90 r7x31k9c99
OdpowiedzUsuń