Bluetooth Broadcom 43142 nie działa

38

Bluetooth jest włączony, ale nie można go znaleźć ani znaleźć.

Wyjście sudo service bluetooth status:

● bluetooth.service - Bluetooth service
   Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
   Active: active (running) since ხუთ 2015-06-04 22:33:18 GET; 13min ago
 Main PID: 26678 (bluetoothd)
   CGroup: /system.slice/bluetooth.service
           └─26678 /usr/sbin/bluetoothd -n

ივნ 04 22:39:14 Rangoo bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/HFPAG
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/HFPHS
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/A2DPSource
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/A2DPSink
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/HFPAG
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/HFPHS
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/A2DPSource
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/A2DPSink
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: Adapter /org/bluez/26678/hci0 has been enabled
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: bluetoothd[26678]: Adapter /org/bluez/26678/hci0 has been enabled

Wyjście lsusb:

Bus 003 Device 005: ID 0a5c:21d7 Broadcom Corp. BCM43142 Bluetooth 4.0

Jak mogę to naprawić?

Guja1501
źródło
Podobne pytanie z odpowiedzią na kartę 4352 askubuntu.com/questions/617513/...
Wilf

Odpowiedzi:

78

Musisz zainstalować oprogramowanie wewnętrzne.

Dystrybucja oprogramowania wewnętrznego Broadcom jest niedozwolona przez licencję Broadcom. Musisz to zdobyć sam. Jest to trochę skomplikowane, ale nie ma innej legalnej drogi.

  1. Pobierz sterownik Broadcom Windows 8 lub TUTAJ .

    Jeśli twoje urządzenie nie jest wymienione w tych sterownikach, musisz gdzieś znaleźć jego nowszą wersję. Broadcom usunął najnowsze sterowniki ze swojej strony, aby utrudnić.

    Niektórzy dostawcy laptopów mają sterowniki Bluetooth na swoich stronach, ale niektórych z nich nie można rozpakować. To jest poszukiwanie. Mógłbym pobrać najnowsze sterowniki Broadcom z ich strony, ale już go nie ma.

  2. Otwórz ten plik za pomocą Archive Managera i znajdź tam bcbtums-win8x86-brcm.infplik. Nazwa pliku może się różnić w niektórych sterownikach. Można go znaleźć bcbtums.infw katalogu Win32 lub Win64. Pobieranie nie ma znaczenia 32 lub 64 bit.

  3. Wyszukaj w tym pliku VID_ 0A5C i PID_ 21D7 . Te liczby pochodzą z twoich lsusbwyników

    0a5c: 21d7 Broadcom Corp. BCM43142 Bluetooth 4.0.

    Komentarz: Niektóre urządzenia nie są rozpoznawane jako Broadcom BT w lsusb. Jeśli nie masz pewności, które urządzenie jest twoim urządzeniem BT, uruchom usb-devicespolecenie, poda ono bardziej szczegółowe informacje. Tam możesz znaleźć identyfikatory produktu i dostawcy.

    Zobaczysz linię kończącą się na RAMUSB21D7

    Wyszukaj w tym pliku RAMUSB21D7. Znajdziesz tam taką sekcję:

    [RAMUSB21D7.CopyList]
    bcbtums.sys
    btwampfl.sys
    BCM43142A0_001.001.011.0122.0126.hex
    

    Właśnie tego szukamy. Nazwa pliku oprogramowania układowego. BCM43142A0_001.001.011.0122.0126.hex

  4. Teraz wypakuj to oprogramowanie z tego samego pliku cab.

    Następnie musisz przekonwertować ten plik z heksadecymalnego na format hcd.

  5. Pobierz do tego narzędzie

    git clone git://github.com/jessesung/hex2hcd.git
    cd hex2hcd
    make
    

    Otrzymasz folder hex2hcd w swoim katalogu domowym.

  6. Umieść plik oprogramowania układowego w folderze domowym i uruchom

    ~/hex2hcd/hex2hcd ~/BCM43142A0_001.001.011.0122.0126.hex ~/BCM43142A0-0a5c-21d7.hcd
    

    Widzisz, że 0a5c-21d7 jest identyfikatorem twojego adaptera z lsusb .

    Ważne: W przypadku jądra 4.2+ ten plik wywołuje się w ten sposób BCM.hcd.

    ~/hex2hcd/hex2hcd ~/BCM43142A0_001.001.011.0122.0126.hex ~/BCM.hcd
    

    W przypadku jądra 4.8+ nazwa pliku powinna wyglądać BCM-<VID>-<PID>.hcdpodobnie BCM-0a5c-21d7.

    W przypadku jądra 5.0 nazwa pliku jest ponownie BCM43142A0-0a5c-21d7.hcd

    Teraz po prostu skopiuj BCM43142A0-0a5c-21d7.hcddo /lib/firmware/brcmkatalogu inny plik zgodny z wersją jądra

    sudo cp ~/BCM43142A0-0a5c-21d7.hcd /lib/firmware/brcm
    

    Dla jąder 4.2+

    sudo cp ~/BCM.hcd /lib/firmware/brcm
    

    Dla jąder 4.8+

    sudo cp ~/BCM-0a5c-21d7.hcd  /lib/firmware/brcm
    

    Zawsze możesz sprawdzić, czy nazwa pliku jest poprawna, uruchamiając dmesg | grep -i blue. Jeśli plik nie zostanie znaleziony, pojawi się komunikat o błędzie.

    Jeśli żądana nazwa pliku nie pasuje do utworzonego pliku, zmień nazwę hcdpliku.

  7. Wyłącz komputer i włącz go ponownie. Nie tylko restart!

    Twój adapter dostanie oprogramowanie wewnętrzne i Bluetooth powinien działać.

Wszystko to wydaje się skomplikowane, ale winni są za to prawnicy Broadcom . Większość innych dostawców zezwala na ponowną dystrybucję oprogramowania układowego pod warunkiem, że odbywa się to wraz z licencją.

Pozwala to opiekunom systemu Linux na dołączanie oprogramowania wewnętrznego do dystrybucji.

Ale nie w przypadku Broadcom. Dlatego nie jest to łatwe.

Wiele osób może przekonwertować wszystkie pliki hex na hcd i udostępnić je. Lub po prostu dodaj je do linux-firmwarepakietu Ubuntu.

Ale to nie jest legalne : - ((

Pilot 6
źródło
6
W większości przypadków, gdy obudziłem laptopa, przeładowanie modułu bluetooth kończy się niepowodzeniem ze śladami stosu jądra. Jeśli potrzebujesz bluetooth bez ponownego uruchamiania, musisz rozładować moduł bluetooth ( sudo modprobe -r btusb) i załadować go ponownie ( sudo modprobe btusb), aby blueooth mógł ponownie działać. bugzilla.kernel.org/show_bug.cgi?id=81821
solsTiCe
1
W kroku 6 plik hex2hcd musi otrzymać plik wyjściowy, taki jak: hex2hcd [plik wejściowy] -o [plik wyjściowy] Czy możesz zaktualizować odpowiedź?
Minas Mina
W odpowiedzi znajduje się plik wyjściowy. Czy też autor to zmienił. Był to plik wyjściowy „hex2hcd plik wyjściowy
Pilot6
4
Dzięki @ Pilot6 za aktualizację głównego postu. W moim przypadku szukałem błędu, dmesgaby poznać mój poprawny plik. Przykład danych wyjściowych dmesg:[ 3.479417] bluetooth hci0: Direct firmware load for brcm/BCM-0a5c-6410.hcd failed with error -2 [ 3.479421] Bluetooth: hci0: BCM: Patch brcm/BCM-0a5c-6410.hcd not found
morhook
5
UŻYTKOWNICY DUALBOOT: Pamiętaj, że możesz wyodrębnić prawidłowe oprogramowanie z systemu operacyjnego Windows. W tym celu przejdź do Menedżera urządzeń Windows, znajdź swoje urządzenie Bluetooth, kliknij prawym przyciskiem myszy, Właściwości, Sterownik, Szczegóły sterownika. Tam znajdziesz ścieżkę do .hexpliku, który możesz skopiować do systemu Linux. Następnie wykonaj kroki 5-8. Nawiasem mówiąc, ta odpowiedź jest doskonała.
Manu CJ,
18

Oto projekt, który ma na celu nieco zautomatyzować proces: https://github.com/winterheart/broadcom-bt-firmware

skopiuj BCM do odpowiedniego katalogu / nazwy w zależności od jądra (jak opisano powyżej).

W wersji 4.8 nie potrzebowałem restartu, po prostu w terminalu:

sudo modprobe -r btusb
sudo modprobe btusb

dmesg | grep -i blu

powinien pokazać, czy jest załadowany. Upewnij się, że identyfikator sprzętu pasuje do pliku. Można go znaleźć z:

lsusb

co pokazuje to na moim Lenovo (tylko ta linia):

Bus 001 Device 006: ID 105b:e065 Foxconn International, Inc. BCM43142A0 Bluetooth module

Mam nadzieję że to pomogło :)

Vincent Gerris
źródło
1
W moim przypadku (UtechSmart USB Bluetooth 4.0 Identyfikator urządzenia: 0a5c: 21e8) sterowniki winterheart zostały załadowane, ale hcitool devnadal nie pokazywały żadnych urządzeń i wystąpił błąd w syslog. Znaleziono inny sterownik na plugable.com/2014/06/23/…, który działał.
Greg Bray,
8

To wszystko, czego potrzebujesz: https://github.com/winterheart/broadcom-bt-firmware

W tym repozytorium można znaleźć więcej informacji i wszystkich potrzebnych sterowników kart bezprzewodowych Broadcom .


Aby być bardziej konkretnym, daję ci instrukcje, które sam dla siebie napisałem:

Ten samouczek ma na celu uczynienie karty sieci bezprzewodowej / bluetooth Broadcom Corporation BCM43142 802.11b / g / n (rev 01) (ID urządzenia: 0a5c: 216d) działającej na systemach Linux (wypróbowałem na Elementary OS 0.4.1 Loki, w oparciu na Ubuntu 16.04.3 LTS).

Nie może działać dla innych urządzeń, ale nie powinna zbytnio różnić się od tej procedury dla innych urządzeń Broadcom. Potrzebne sterowniki Broadcom znajdują się w folderze reposity tego GitHub w formacie .hcd.

  1. Wpisz następujące polecenie, aby dowiedzieć się, której nazwy sterownika szuka jądro podczas ładowania dysków podczas uruchamiania:

    dmesg | grep -i 'firmware load'
    

    Wypróbuj ten, jeśli nic nie znajdziesz:

    dmesg | grep -i 'bluetooth'
    

    Wynik powinien być mniej więcej taki:

    bluetooth hci0: Direct firmware load for brcm/BCM.hcd failed with error -2
    

    Objaśnienie: w moim przypadku jądro szuka pliku BCM.hcdw katalogu, w /lib/firmware/brcmktórym powinny znajdować się sterowniki Broadcom. Jeśli jądro szuka innej nazwy sterownika, musisz zmienić nazwę pliku sterownika ( BCM43142A0-0a5c-216c.hcdw moim przypadku dla BCM43142 (0a5c: 216d)) na wymaganą nazwę przez jądro.

  2. Przenieś sterownik o zmienionej nazwie (BCM.hcd) do katalogu domowego (/ home / YourUsername /) i uruchom następującą komendę, aby przenieść go do folderu, na którym patrzy jądro podczas uruchamiania:

    sudo mv ~/BCM.hcd /lib/firmware/brcm
    

    Musisz użyć odpowiedniego sterownika w zależności od urządzenia i zmienić jego nazwę, jeśli jest to wymagane dla jądra.

  3. Uruchom ponownie komputer i powinien on działać! * (Możesz dmesg | grep -i 'bluetooth'ponownie wprowadzić, aby sprawdzić, czy sterownik został załadowany)

Juan Gómez Carrillo
źródło
Zadziałało! Wielkie dzięki! W moim przypadku wersja „BCM43142 802.11b / g / n [14e4: 4365] (rev 01)” nie była dostępna w folderze github, ale właśnie wypróbowałem ją z BCM43142A0-185f-2167.hcd i działała!
Sriram Kannan