Bluetooth Broadcom 43142 không hoạt động


38

Bluetooth được bật nhưng không thể tìm thấy hoặc tìm thấy bởi bất kỳ thiết bị nào khác.

Đầu ra của 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

Đầu ra của lsusb:

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

Làm thế nào tôi có thể sửa chữa nó?


Câu hỏi tương tự với câu trả lời cho thẻ 4352 Askubfox.com/questions/617513/ khăn
Wilf

Câu trả lời:


78

Bạn cần cài đặt firmware.

Phân phối phần mềm Broadcom không được phép theo giấy phép Broadcom. Vì vậy, bạn cần phải có được nó cho mình. Nó hơi phức tạp, nhưng không có cách hợp pháp nào khác.

  1. Tải xuống trình điều khiển Windows 8 Broadcom hoặc TỪ TẠI ĐÂY .

    Nếu thiết bị của bạn không được liệt kê trong các trình điều khiển này, bạn sẽ cần tìm phiên bản mới hơn của thiết bị ở đâu đó. Broadcom đã loại bỏ các trình điều khiển mới nhất khỏi trang web của họ để làm cho nó khó khăn hơn.

    Một số nhà cung cấp máy tính xách tay có trình điều khiển Bluetooth trên trang web của họ, nhưng một số trong số họ không thể bỏ qua. Vì vậy, nó là một số nhiệm vụ. Tôi có thể tải xuống trình điều khiển Broadcom mới nhất từ ​​trang web của họ, nhưng nó không còn ở đó nữa.

  2. Mở tệp này bằng Trình quản lý lưu trữ và tìm bcbtums-win8x86-brcm.inftệp đó . Tên của tệp có thể khác nhau trong một số trình điều khiển. Nó có thể được bcbtums.infđặt tại thư mục Win32 hoặc Win64. Nó không quan trọng 32 hoặc 64 bit để tải xuống.

  3. Tìm kiếm tệp này cho VID_ 0A5C & PID_ 21D7 . Những con số này là từ lsusbđầu ra của bạn

    0a5c: 21d7 Broadcom Corp BCM43142 Bluetooth 4.0.

    Nhận xét: Một số thiết bị không được công nhận là Broadcom BT lsusb. Nếu bạn không chắc thiết bị nào là thiết bị BT của mình, hãy chạy usb-deviceslệnh, nó sẽ cung cấp thông tin chi tiết hơn. Ở đó bạn có thể tìm thấy ID sản phẩm và nhà cung cấp.

    Bạn sẽ thấy một số dòng kết thúc với RAMUSB21D7

    Tìm kiếm tệp này cho RAMUSB21D7. Bạn sẽ tìm thấy một phần ở đó như thế:

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

    Đó là những gì chúng tôi đang tìm kiếm. Tên của tập tin phần sụn. BCM43142A0_001.001.011.0122.0126.hex

  4. Bây giờ giải nén firmware đó từ cùng một tệp cab.

    Sau đó, bạn cần chuyển đổi tập tin này từ định dạng hex sang hcd.

  5. Tải về công cụ cho việc đó

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

    Bạn sẽ nhận được thư mục hex2hcd trong thư mục nhà của bạn.

  6. Đặt tệp chương trình cơ sở vào thư mục nhà của bạn và chạy

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

    Bạn thấy rằng 0a5c-21d7 là id của bộ điều hợp của bạn từ lsusb .

    Quan trọng: Đối với hạt nhân 4.2+, bạn gọi tệp này là BCM.hcdthay thế.

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

    Đối với nhân 4,8+ tên của tệp nên BCM-<VID>-<PID>.hcd, như thế BCM-0a5c-21d7.

    Đối với kernel 5.0, tên tệp lại là BCM43142A0-0a5c-21d7.hcd

    Bây giờ chỉ cần sao chép BCM43142A0-0a5c-21d7.hcdhoặc một tệp khác theo phiên bản kernel vào /lib/firmware/brcmthư mục của

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

    Đối với nhân 4.2+

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

    Đối với nhân 4,8+

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

    Bạn luôn có thể kiểm tra xem tên tệp có đúng không bằng cách chạy dmesg | grep -i blue. Sẽ có một thông báo lỗi nếu không tìm thấy tệp.

    Nếu tên tệp được yêu cầu không khớp với tệp bạn đã tạo, hãy đổi tên hcdtệp.

  7. Tắt máy tính của bạn và bật lại. Không chỉ khởi động lại!

    Bộ điều hợp của bạn sẽ nhận được phần sụn và bluetooth sẽ hoạt động.

Tất cả điều này có vẻ phức tạp, nhưng đó là luật sư Broadcom để đổ lỗi cho điều đó. Hầu hết các nhà cung cấp khác cho phép phân phối lại firmware với điều kiện nó được thực hiện kèm theo giấy phép.

Điều đó cho phép các nhà bảo trì Linux bao gồm phần sụn trong các bản phân phối.

Nhưng không phải trong trường hợp của Broadcom. Đó là lý do tại sao nó không được thực hiện một cách dễ dàng.

Nhiều người có thể chuyển đổi tất cả các tệp hex thành hcd và làm cho chúng có sẵn. Hoặc chỉ cần thêm chúng vào linux-firmwaregói Ubuntu.

Nhưng nó không hợp pháp : - ((


6
Hầu hết khi tôi đánh thức máy tính xách tay của mình, việc tải lại mô-đun bluetooth không thành công với dấu vết ngăn xếp hạt nhân. Nếu bạn cần bluetooth mà không cần khởi động lại, bạn sẽ cần dỡ mô-đun bluetooth ( sudo modprobe -r btusb) và tải lại ( sudo modprobe btusb) để blueooth hoạt động trở lại. bugzilla.kernel.org/show_orms.cgi?id=81821
solsTiCe

1
Trong bước 6, hex2hcd phải được cung cấp một tệp đầu ra, như: hex2hcd [tệp đầu vào] -o [tệp đầu ra] Bạn có thể vui lòng cập nhật câu trả lời không?
Minas Mina

Có tập tin đầu ra trong câu trả lời. Hoặc tác giả đã thay đổi nó. Nó từng là `hex2hcd tệp đầu ra-tệp đầu ra
Pilot6

4
Cảm ơn @ Pilot6 đã cập nhật bài chính. Trong trường hợp của tôi, tôi đã tìm lỗi dmesgđể biết tập tin chính xác của mình. Ví dụ đầu ra 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
NGƯỜI DÙNG DUALBOOT: Lưu ý rằng bạn có thể trích xuất phần sụn chính xác từ HĐH Windows của mình. Để thực hiện điều đó, hãy đi tới Trình quản lý thiết bị Windows, tìm thiết bị Bluetooth của bạn, nhấp chuột phải, Thuộc tính, Trình điều khiển, Chi tiết trình điều khiển. Ở đó bạn sẽ tìm thấy đường dẫn đến .hextệp của mình , mà bạn có thể sao chép vào hệ thống Linux của mình. Sau đó, làm theo các bước 5-8. Câu trả lời này là tuyệt vời, nhân tiện.
Manu CJ

18

Đây là một dự án nhằm mục đích tự động hóa quy trình một chút: https://github.com/winterlove/broadcom-bt-firmware

sao chép BCM sang dir / tên bên phải tùy thuộc vào kernel (như được mô tả ở trên).

Vào ngày 4.8, tôi không cần khởi động lại, chỉ đơn giản là trong một thiết bị đầu cuối:

sudo modprobe -r btusb
sudo modprobe btusb

dmesg | grep -i blu

sẽ hiển thị nếu nó được tải. Đảm bảo ID phần cứng khớp với tệp. Nó có thể được tìm thấy với:

lsusb

Hiển thị điều này trên Lenovo của tôi (chỉ dòng đó):

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

Tôi hy vọng điều đó sẽ giúp :)


1
Trong trường hợp của tôi (UtechSmart USB Bluetooth 4.0 id id: 0a5c: 21e8) các trình điều khiển mùa đông được tải nhưng hcitool devvẫn không hiển thị bất kỳ thiết bị nào và có lỗi trong syslog. Tìm thấy một trình điều khiển khác tại plugable.com/2014/06/23/. Điều đó đã làm việc.
Greg Bray

8

Đó là tất cả những gì bạn cần: https://github.com/winterlove/broadcom-bt-firmware

Trên kho lưu trữ này, bạn có thể tìm thấy nhiều thông tin hơn và tất cả các trình điều khiển thẻ không dây Broadcom cần thiết .


Để cụ thể hơn, tôi cung cấp cho bạn các hướng dẫn tôi đã viết cho chính mình:

Hướng dẫn này nhằm làm cho card mạng không dây / bluetooth Broadcom Corporation BCM43142 802.11b / g / n (rev 01) (ID thiết bị: 0a5c: 216d) hoạt động trên các hệ thống Linux (Tôi đã thử nó trên Hệ điều hành sơ cấp 0.4.1 Loki, dựa trên trên Ubuntu 16.04.3 LTS).

Nó không thể hoạt động cho các thiết bị khác nhưng nó không nên thay đổi quá nhiều so với quy trình này đối với các thiết bị Broadcom khác. Các trình điều khiển Broadcom cần thiết có trong thư mục reposity của GitHub này ở định dạng .hcd.

  1. Nhập lệnh sau để khám phá tên trình điều khiển nào là kernel đang tìm kiếm khi tải các ổ đĩa trong khi khởi động:

    dmesg | grep -i 'firmware load'
    

    Hãy thử cái này nếu nó không tìm thấy gì:

    dmesg | grep -i 'bluetooth'
    

    Kết quả sẽ giống như thế này:

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

    Giải thích: trong trường hợp của tôi, kernel đang tìm tệp BCM.hcdtrong thư mục /lib/firmware/brcmnơi trình điều khiển Broadcom dự kiến ​​sẽ có. Nếu Kernel đang tìm tên trình điều khiển khác, bạn phải đổi tên tệp trình điều khiển ( BCM43142A0-0a5c-216c.hcdtrong trường hợp của tôi là BCM43142 (0a5c: 216d)) thành tên được yêu cầu bởi kernel.

  2. Di chuyển trình điều khiển được đổi tên (BCM.hcd) vào thư mục chính của bạn (/ home / YourUsername /) và chạy lệnh sau để di chuyển nó vào thư mục mà kernel đang tìm trong khi khởi động:

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

    Bạn phải sử dụng trình điều khiển tương ứng tùy thuộc vào thiết bị của bạn và đổi tên nó nếu được yêu cầu cho kernel.

  3. Khởi động lại máy tính của bạn và nó sẽ hoạt động! * (Bạn có thể nhập dmesg | grep -i 'bluetooth'lại một lần nữa để xem trình điều khiển đã được tải chưa)


Nó đã làm việc! Cảm ơn rất nhiều! Trong trường hợp của tôi, phiên bản "BCM43142 802.11b / g / n [14e4: 4365] (rev 01)" không có sẵn trong thư mục github, nhưng tôi đã thử nó với BCM43142A0-185f-2167.hcd và nó đã hoạt động!
Sriram Kannan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.