Instalacja karty Broadcom BCM43xx w Ubuntu

Uwaga: Wersja niniejszego dokumentu została opublikowana jakiś czas temu. Jako, że w systemach z rodziny Linux ciągle dużo się zmieniła, opisane tutaj elementy mogą się nieco różnić o tych, z którymi się spotkacie w swoim systemie. Jako, że nie posiadam już ww. kart, nie mogę gwarantować, iż poniższy sposób zadziała.

Od dłuższego czasu zainteresowany jestem alternatywnymi systemami operacyjnymi. Obecnie pracuję na Ubuntu 9.10.

Jako, że mam laptopa i z internetem łącze się bezprzewodowo, chciałem aby możliwe było to również w tym systemie. Niestety, podczas aktualizacji do najnowszej wersji systemu wszystko się poknociło.

W laptopie mam kartę firmy Broadcom BCM4312 Dualband (b/g), która potrzebuje włączenia stosownych sterowników aby, możliwe było jej użytkowanie.

Domyślnie zalecaną metodą jest włączenie sterowników własnościowych z pozycji:

System > Administracja > Sterowniki

Jednakże nie zawsze to działa, o czym przekonałem się (i wielu innych użytkowników) osobiście.

Będąc uwięzionym na kablu, postanowiłem co nieco poszperać i wymyślić rozwiązanie. I to właśnie zrobiłem. A dokładniej, wzorując się na zagranicznych rozwiązaniach i oficjalnych stanowiskach producenta, postanowiłem napisać poniższe How-To.

Do łączenia z siecią WiFi używam standardowego pakietu GNOME, czyli Network Managera. Oczywiście, może to też działać z WICD, ale osobiście tego nie testowałem, gdyż nie mam takiej potrzeby.

Poniższe How-To działa dla kart bazujących na sprzęcie BCM4311, BCM4312, BCM4321 i BCM4322.

A więc zacznijmy….

1. Wywalam obecnie dostępne w systemie sterowniki, odpowiadające na naszą kartę sieciową.

System > Administracja > Manager pakietów Synaptic

Wyszukujemy po słowie Broadcom i zaznaczamy wszystko do usunięcia, czyli:

b43-fwcutter, bcmwl-kernel-source, bcmwl-modaliases

Dodatkowo, z poziomy konsoli sprawdzamy, czy nie ma żadnych pozostałości po modułach sterowników, które mogły nie zostać usunięte.

lsmod | grep "b43|ssb|wl"

Jeżeli faktycznie jakieś są, usuwamy je poniższymi komendami:

rmmod b43 rmmod ssb rmmod wl

Może się również zdażyć, że powyższe sterowniki zainstalują się automatycznie przy kolejnych aktualizacjach systemu. Aby temu zapobiec, warto wykonać poniższe polecenia w konsoli:

echo "blacklist ssb" >> /etc/modprobe.d/blacklist.conf echo "blacklist b43" >> /etc/modprobe.d/blacklist.conf

Powyższe linijki dodadzą do pliku blacklist.conf odpowiednie wpisy odnośnie blokowania sterowników.

2. Pobieramy oficjalne sterowniki ze strony Broadcoma

Dla systemu 32-bitowego

wget http://www.broadcom.com/docs/linux_sta/hybrid-portsrc-x86_32-v5.60.48.36.tar.gz

Dla systemu 64-bitowego

wget http://www.broadcom.com/docs/linux_sta/hybrid-portsrc-x86_64-v5.60.48.36.tar.gz

Gdyby powyższe odnośniki nie działały, najnowsze sterowniki można znaleźć tutaj: http://www.broadcom.com/support/802.11/linux_sta.php

Tworzymy sobie katalog, w którym będziemy pracować ze sterownikami oraz przenosimy do niego ściągnięty plik.

mkdir hybrid_wl mv hybrid-portsrc\* hybrid_wl/ cd hybrid_wl

3. Rozpakowujemy pobrane sterowniki (przykład dla systemu 32-bitowego)

tar xvf </em><em>hybrid-portsrc-x86_32-v5.60.48.36.tar.gz

4. Wykonujemy kompilację

make

W celu poprawnego wykonania kompilacji potrzebujemy mieć w systemie zainstalowane następujące pakiety:

make, build-essentials, linux-headers i linux-sources - stosowne dla naszego kernela

Wszystko to można wykonać w Menadżerze pakietów Synaptic.

4.1. Ostrzeżenia w trakcie instalacji

W trakcie wykonywania procedury make może pokazać się nam ostrzeżenie:

WARNING: modpost: missing MODULE_LICENSE() in /home/darek/bcm/wl.o see include/linux/module.h for more information

Nie należy się nim przejmować.

4.2. (Opcjonalne) Moduł lib80211

Jeżeli wcześniej nie próbowaliśmy na własną rękę uruchomić karty sieci bezprzewodowej w systemie, potrzebować będziemy jeszcze jednego modułu do obsługi sterownika. Profilaktycznie, dobrze by było tą czynność wykonać.

modprobe lib80211 insmod wl.ko

5. Kopiujemy i uruchamiamy skompilowany sterownik

sudo cp wl.ko /lib/modules/$(uname -r)/kernel/net/wireless sudo depmod -a sudo modprobe wl

Już w tym momencie Network Manager powinien wykryć kartę sieci bezprzewodowej. Jeżeli mamy stworzony jakiś profil Wifi, wówczas automatycznie nastąpi łączenie z siecią. W wszystkich pozostałych przypadkach, należy wybrać sieć z listy.

6. Dodajemy autostart modułu po restarcie

Po ponownym uruchomieniu systemu, należało by ręcznie wykonać procedurę modprobe. Aby tego nie robić, należy do piku modułów dodać stosowną linijkę.

Otwieramy plik do edycji:

sudo vim /etc/modules

i dodajemy wartość:

wl

Jeżeli mamy szczęście, wszystko będzie działać. Choć… znając życie, w praktyce bywa różnie, ale proszę próbować i w razie czego pisać, a chętnie pomogę lub uzupełnię niniejsze How-To.

Aktualizacja 08-11-2009

Po aktualizacji kernela z repozytoriów, ponownie tracimy naszą kartę sieciową.

sudo modprobe wl

daje wynik negatywny:

FATAL: Module wl not found

Wówczas należy:

  • ponownie zainstalować moduły linux-headers, dla kernela, który aktualnie używamy;

  • przekompilować sterowniki zaczynając praktycznie od początu - pkt. od 3 do 6.

Stąd też, warto pozostawić sobie spakowane sterowniki pod ręką, a po aktualizacji kernela automatycznie pobrać dla niego linux-headers.

Pozdrawiam

Kategorie