Bluetooth Broadcom 43142 tidak berfungsi

38

Bluetooth aktif tetapi tidak dapat menemukan atau ditemukan oleh perangkat lain.

Output dari 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

Output dari lsusb:

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

Bagaimana saya bisa memperbaikinya?

Guja1501
sumber
Pertanyaan serupa dengan jawaban untuk kartu 4352 askubuntu.com/questions/617513/…
Wilf

Jawaban:

78

Anda perlu menginstal firmware.

Distribusi firmware Broadcom tidak diizinkan oleh lisensi Broadcom. Jadi, Anda harus mendapatkannya sendiri. Ini agak rumit, tetapi tidak ada cara hukum lainnya .

  1. Unduh driver Broadcom Windows 8 atau DARI SINI .

    Jika perangkat Anda tidak tercantum dalam driver ini, Anda harus menemukan versi yang lebih baru di suatu tempat. Broadcom menghapus driver terbaru dari situs mereka untuk membuatnya lebih sulit.

    Beberapa vendor laptop memiliki driver Bluetooth di situs mereka, tetapi beberapa dari mereka tidak dapat ditunda. Jadi ini adalah beberapa pencarian. Saya bisa mengunduh driver Broadcom terbaru dari situs mereka, tetapi tidak ada lagi.

  2. Buka file ini oleh Archive Manager dan temukan bcbtums-win8x86-brcm.inffile di sana . Nama file mungkin berbeda di beberapa driver. Itu dapat bcbtums.infditemukan di direktori Win32 atau Win64. Tidak masalah 32 atau 64 bit untuk diunduh.

  3. Cari file ini untuk VID_ 0A5C & PID_ 21D7 . Angka-angka ini dari lsusboutput Anda

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

    Komentar: Beberapa perangkat tidak dikenali sebagai Broadcom BT di lsusb. Jika Anda tidak yakin yang mana perangkat BT Anda, jalankan usb-devicesperintah, itu akan memberikan informasi lebih rinci. Di sana Anda dapat menemukan ID produk dan vendor.

    Anda akan melihat beberapa baris yang diakhiri dengan RAMUSB21D7

    Cari file ini untuk RAMUSB21D7. Anda akan menemukan bagian di sana seperti itu:

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

    Itu yang kami cari. Nama file firmware. BCM43142A0_001.001.011.0122.0126.hex

  4. Sekarang ekstrak firmware itu dari file cab yang sama.

    Maka Anda perlu mengkonversi file ini dari format hex ke format hcd.

  5. Unduh alat untuk itu

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

    Anda akan mendapatkan folder hex2hcd di direktori home Anda.

  6. Tempatkan file firmware ke folder rumah Anda dan jalankan

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

    Anda melihat bahwa 0a5c-21d7 adalah id dari adaptor Anda dari lsusb .

    Penting: Untuk kernel 4.2+ Anda memanggil file ini sebagai BCM.hcdgantinya.

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

    Untuk kernel 4.8+ nama file seharusnya BCM-<VID>-<PID>.hcd, seperti BCM-0a5c-21d7.

    Untuk kernel 5.0 nama file lagi BCM43142A0-0a5c-21d7.hcd

    Sekarang cukup salin BCM43142A0-0a5c-21d7.hcd, atau file lain sesuai dengan versi kernel ke /lib/firmware/brcmdirektori

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

    Untuk kernel 4.2+

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

    Untuk kernel 4.8+

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

    Anda selalu dapat memeriksa apakah nama file sudah benar dengan menjalankan dmesg | grep -i blue. Akan ada pesan kesalahan jika file tidak ditemukan.

    Jika nama file yang diminta tidak cocok dengan file yang Anda buat, ganti nama hcdfile tersebut.

  7. Matikan komputer Anda dan nyalakan lagi. Bukan hanya reboot!

    Adaptor Anda akan mendapatkan firmware dan bluetooth akan berfungsi.

Semua ini terlihat rumit, tetapi pengacara Broadcom yang harus disalahkan untuk itu. Sebagian besar vendor lain mengizinkan untuk mendistribusikan kembali firmware dengan syarat bahwa hal itu dilakukan disertai dengan lisensi.

Itu memungkinkan pengelola Linux untuk memasukkan firmware dalam distribusi.

Tapi tidak untuk Broadcom. Itu sebabnya tidak dilakukan dengan cara yang mudah.

Banyak orang dapat mengonversi semua file hex ke hcd dan membuatnya tersedia. Atau tambahkan saja ke linux-firmwarepaket Ubuntu.

Tapi itu tidak sah : - ((

Pilot6
sumber
6
Sebagian besar waktu ketika saya bangun laptop saya, reload modul bluetooth gagal dengan jejak tumpukan kernel. Jika Anda membutuhkan bluetooth tanpa perlu me-reboot, Anda harus membongkar modul bluetooth ( sudo modprobe -r btusb) dan sudo modprobe btusbmemuatnya kembali ( ) agar blueooth berfungsi lagi. bugzilla.kernel.org/show_bug.cgi?id=81821
solsTiCe
1
Pada langkah 6, hex2hcd harus diberi file output, seperti: hex2hcd [file input] -o [file output] Bisakah Anda memperbarui jawabannya?
Minas Mina
Ada file output dalam jawabannya. Atau apakah penulis mengubahnya. Dulu file output-file `hex2hcd input-file
Pilot6
4
Terima kasih @ Pilot6 untuk memperbarui pos utama. Dalam kasus saya, saya mencari kesalahan dmesguntuk mengetahui file yang benar. Contoh keluaran 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
PENGGUNA DUALBOOT: Perhatikan bahwa Anda dapat mengekstrak firmware yang benar dari OS Windows Anda. Untuk melakukannya, buka Windows Device Manager, cari perangkat Bluetooth Anda, klik kanan, Properties, Driver, Detail Driver. Di sana Anda akan menemukan path ke .hexfile Anda , yang dapat Anda salin ke sistem Linux Anda. Setelah itu, ikuti langkah 5-8. Omong-omong, jawaban ini luar biasa.
Manu CJ
18

Ini adalah proyek yang bertujuan untuk mengotomatiskan prosesnya sedikit: https://github.com/winterheart/broadcom-bt-firmware

salin BCM ke direktori / nama kanan tergantung pada kernel (seperti dijelaskan di atas).

Pada 4.8 saya tidak perlu reboot, cukup di terminal:

sudo modprobe -r btusb
sudo modprobe btusb

dmesg | grep -i blu

akan ditampilkan jika sudah dimuat. Pastikan ID perangkat keras cocok dengan file tersebut. Itu dapat ditemukan dengan:

lsusb

yang menunjukkan ini di Lenovo saya (hanya baris itu):

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

Saya harap itu membantu :)

Vincent Gerris
sumber
1
Dalam kasus saya (UtechSmart USB Bluetooth 4.0 Device id: 0a5c: 21e8) driver Winterheart dimuat tetapi hcitool devmasih tidak menunjukkan perangkat apa pun dan ada kesalahan dalam syslog. Menemukan driver lain di plugable.com/2014/06/23/… yang berhasil.
Greg Bray
8

Itu yang Anda butuhkan: https://github.com/winterheart/broadcom-bt-firmware

Pada repositori ini Anda dapat menemukan informasi lebih lanjut dan semua driver kartu nirkabel Broadcom diperlukan .


Agar lebih konkret, saya memberi Anda instruksi yang saya tulis sendiri:

Tutorial ini dimaksudkan untuk membuat kartu jaringan nirkabel / bluetooth Broadcom Corporation BCM43142 802.11b / g / n (rev 01) (Device ID: 0a5c: 216d) bekerja pada sistem Linux (Saya mencobanya pada Elementary OS 0.4.1 Loki, berdasarkan pada Ubuntu 16.04.3 LTS).

Ini tidak dapat berfungsi untuk perangkat lain tetapi seharusnya tidak terlalu berbeda dari prosedur ini untuk perangkat Broadcom lainnya. Driver Broadcom yang dibutuhkan ada di folder repositori GitHub ini dalam format .hcd.

  1. Masukkan perintah berikut untuk menemukan nama driver yang dicari kernel saat memuat drive saat boot:

    dmesg | grep -i 'firmware load'
    

    Coba yang ini jika tidak menemukan apa-apa:

    dmesg | grep -i 'bluetooth'
    

    Hasilnya harus seperti ini:

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

    Penjelasan: dalam kasus saya, kernel mencari file di BCM.hcdbawah direktori di /lib/firmware/brcmmana driver Broadcom diharapkan berada. Jika Kernel mencari nama driver lain, Anda harus mengganti nama file driver ( BCM43142A0-0a5c-216c.hcddalam kasus saya untuk BCM43142 (0a5c: 216d)) menjadi nama yang diperlukan oleh kernel.

  2. Pindahkan driver yang diganti namanya (BCM.hcd) ke direktori home Anda (/ home / YourUsername /) dan jalankan perintah berikut untuk memindahkannya ke folder yang dilihat kernel saat boot:

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

    Anda harus menggunakan driver yang sesuai tergantung pada perangkat Anda dan ganti namanya jika diminta untuk kernel.

  3. Nyalakan kembali komputer Anda dan itu akan berfungsi! * (Anda dapat masuk dmesg | grep -i 'bluetooth'sekali lagi untuk melihat apakah driver telah dimuat)

Juan Gómez Carrillo
sumber
Berhasil! Terima kasih banyak! Dalam kasus saya, "BCM43142 802.11b / g / n [14e4: 4365] (rev 01)" versi tidak tersedia di folder github, tapi saya hanya mencobanya dengan BCM43142A0-185f-2167.hcd dan berhasil!
Sriram Kannan