Sposób na niedziałającą kartę broadcom BCM4318 w Linuxie.

Wielokrotnie zdarzyło mi się widzieć linię błędu podczas uruchamiania różnych dystrybucji systemu Linux (zarówno Live CD/DVD/USB, jak i zainstalowanych na HDD), która informowała mnie o brakujących plikach. Niezależnie od dystrybucji błąd ten pojawia się podczas ładowania systemu i przybiera mniej więcej postać:

[ 15.540087] b43-phy0 ERROR: Firmware file "b43/ucode15.fw" not found
[ 15.540147] b43-phy0 ERROR: Firmware file "b43-open/ucode15.fw" not found
[ 15.540198] b43-phy0 ERROR: You must go to http://wireless.kernel.org/en/users/Drivers/b43#devicefirmware and download the correct firmware for this driver version. Please carefully read all instructions on this website.

W Internecie istnieje wiele rozwiązań  tego problemu, mniej lub bardziej skutecznych, związanych z wpisywaniem różnych poleceń do Terminala. Błąd z kartami Broadcom zaobserwowałem na Ubuntu 10.10 Netbook Edition, Linux Mint 17.1, Linux Mint 17.1 LXDE (modyfikowana wersja Mint do znalezienia w sieci) oraz Lubuntu 14.04. Co ciekawe błąd nie występuje w Fedorze 25 i dystrybucji Q4OS. Powodem takiego stanu rzeczy jest brak plików ze sterownikiem kart Broadcom w przygotowywanym przez dystrybutora obrazie ISO. (Jak widać dystrybutorzy przygotowując systemy Fedora i Q4OS postarali się bardziej). Sterowniki Broadcom należą do pakietu sterowników określanych jako "non-free". Rozumiem, że Ubuntu nie posiada tych plików, jest to w końcu dystrybucja raczej wolna, pozbawiona własnościowych rozwiązań, np. kodeków wideo, MP3. Dziwi mnie zatem, dlaczego dystrybucja Mint nie posiada tych plików wgranych domyślnie, jest to w końcu Linux z już wgranymi kodekami wideo.
Rozwiązanie tego problemu jest proste. Należy ręcznie przekopiować pliki ze sterownikami Broadcom do odpowiedniego folderu systemowego. Co ciekawe często polecana w Internecie instalacja pliku linux-firmware-nonfree_1.14ubuntu3_all.deb zawierającego niewolne sterowniki z reguły nie działa.
Opcje są zatem 2. Pierwsza w przypadku systemu zainstalowanego na HDD i druga w przypadku dystrybucji LiveUSB (czy Live CD/DVD zadziała nie wiem, ponieważ pliki z systemem są tam zapisane na stałe i nie ma możliwości dogrania nowych do już istniejących. Cóż, taki nośnik).
Procedura naprawy błędu z kartami Broadcom:
  1. Pobierz z Internetu niewolne sterowniki, np. do karty Bradcom BCM4318. Rozpakuj na dysk.
  2. Uruchom zainstalowany system, w którym nie wykrywa twojej karty Wi-fi i pojawia się wyżej wymieniony błąd lub przygotuj system Live USB za pomocą programu LiLi.
    Uwaga!!! Bardzo ważne jest, by ustawić opcje perystencji (300-500MB), bez tego nasz system po restarcie wróci do domyślnych ustawień, a skopiowane pliki zostaną usunięte. Dotyczy to tylko wersji Live USB.
  3. Po uruchomieniu systemu z HDD lub Live USB włącz terminal lub w przypadku Linux Mint17 kliknij napis Run dostępne w Menu. W przypadku Ubuntu naduś ALT + F2. Następnie wpisz:
    gksudo nautilus
    lub
    gksudo nemo
    Są to specjalne managery pozwalające kopiować pliki w dowolne miejsce w systemie Linux, także do folderu systemowego. Domyślne kopiowanie plików do folderu systemowego jest niemożliwe.
  4. W uruchomionym nautilusie (nemo u mnie nie działało ze względu na zmodyfikowaną wersję Mint 17) skopiuj pobrane i rozpakowane wcześniej pliki sterowników do systemowego folderu (w Ubuntu będzie to dysk File System) /lib/firmware. Upewnij się, że w folderze firmware masz folder o nazwie b43. Utwórz nowy folder b43-open i do niego skopiuj pliki z folderu b43 lub wklej te pliki. Dodatkowo możesz stworzyć folder, o nazwie b43legacy oraz brcm. Do b43 legacy skopiuj jeszcze raz te same pliki, które są w folderze b43, a do brcm te pliki.
  5. Zrestartuj system. Teraz system sam rozpozna kartę, ponieważ znajdzie w katalogu lib odpowiednie sterowniki. Karta powinna zostać wykryta automatycznie.
Uwaga!!! w moim przypadku Mint 17 nie chciał uruchomić nautilusa, ani nemo dlatego musiałem ręcznie pobrać pakiety deb i je zainstalować.
Czy posiadamy zainstalowany nautilus sprawdzimy poleceniem:
 sudo nautilus -c
Konieczne do pobrania pakiety można znaleźć wpisując w Terminal polecenie:
 sudo apt-get install nautilus
Terminal nie pobierze pakietów, ale wyświetli linki, które posłużą do pobrania pakietów deb z innego komputera z dostępem do Internetu.
Gotowa Lista adresów z pakietami deb do instalacji nautilusa:
  1. http://archive.ubuntu.com/ubuntu/pool/main/d/dee/libdee-1.0-4_1.2.7+14.04.20140324-0ubuntu1_i386.deb
  2. http://archive.ubuntu.com/ubuntu/pool/main/e/exempi/libexempi3_2.2.1-1ubuntu1_i386.deb
  3. http://packages.linuxmint.com/pool/upstream/g/gtk+3.0/libgail-3-0_3.10.8~8+qiana_i386.deb
  4. http://archive.ubuntu.com/ubuntu/pool/main/libu/libunity/libunity-protocol-private0_7.1.4+14.04.20140210-0ubuntu1_i386.deb
  5. http://archive.ubuntu.com/ubuntu/pool/main/libu/libunity/libunity-scopes-json-def-desktop_7.1.4+14.04.20140210-0ubuntu1_all.deb
  6. http://archive.ubuntu.com/ubuntu/pool/main/libu/libunity/libunity9_7.1.4+14.04.20140210-0ubuntu1_i386.deb
  7. http://archive.ubuntu.com/ubuntu/pool/main/g/gnome-desktop3/gnome-desktop3-data_3.8.4-0ubuntu3_all.deb
  8. http://archive.ubuntu.com/ubuntu/pool/main/g/gnome-desktop3/libgnome-desktop-3-7_3.8.4-0ubuntu3_i386.deb
  9. http://archive.ubuntu.com/ubuntu/pool/main/n/nautilus/libnautilus-extension1a_3.10.1-0ubuntu9.11_i386.deb
  10. http://archive.ubuntu.com/ubuntu/pool/main/libz/libzeitgeist/libzeitgeist-1.0-1_0.3.18-1ubuntu2_i386.deb
  11. http://archive.ubuntu.com/ubuntu/pool/main/s/session-migration/session-migration_0.2.1_i386.deb
  12. http://archive.ubuntu.com/ubuntu/pool/main/n/nautilus/nautilus-data_3.10.1-0ubuntu9.11_all.deb
  13. http://archive.ubuntu.com/ubuntu/pool/main/n/nautilus/nautilus_3.10.1-0ubuntu9.11_i386.deb
Gdyby, któryś link nie działał należy skrócić końcówkę linku do napisu /nautilus/ i wkleić w pole adresu, a następnie wybrać plik o podobnej nazwie.

Gotowa paczka pakietów nautilus dla Mint 17.1 Należy je rozpakować i instalować po kolei. Jeżeli, któryś z pakietów nie zainstaluje się, należy instalować inne pakiet a ten zostawić na koniec. Może on po prostu wymagać by inne pakiety z tej paczki zostały zainstalowane przed nim.