Bluetooth Broadcom 43142가 작동하지 않습니다


38

Bluetooth가 켜져 있지만 다른 장치에서 찾거나 찾을 수 없습니다.

출력 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

출력 lsusb:

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

어떻게 고칠 수 있습니까?


답변:


77

펌웨어를 설치해야합니다.

Broadcom 라이센스는 Broadcom 펌웨어 배포를 허용하지 않습니다. 그래서 당신은 그것을 스스로 얻어야합니다. 약간 복잡하지만 다른 법적 방법 은 없습니다 .

  1. Broadcom Windows 8 드라이버 또는 여기에서 다운로드하십시오 .

이 드라이버에 장치가 없으면 최신 버전의 장치를 찾아야합니다. Broadcom은 사이트에서 최신 드라이버를 제거하여 더 어렵게 만들었습니다.

일부 랩톱 공급 업체는 사이트에 Bluetooth 드라이버를 가지고 있지만 일부는 압축 할 수 없습니다. 퀘스트입니다. 사이트에서 최신 Broadcom 드라이버를 다운로드 할 수 있지만 더 이상 존재하지 않습니다.

  1. Archive Manager로이 파일을 열고 해당 파일을 찾으십시오 bcbtums-win8x86-brcm.inf. 일부 드라이버에서는 파일 이름이 다를 수 있습니다. bcbtums.infWin32 또는 Win64 디렉토리에 있을 수 있습니다. 다운로드하는 데 32 또는 64 비트는 중요하지 않습니다.
  2. 이 파일에서 VID_ 0A5C & PID_ 21D7 을 검색하십시오 . 이 숫자는 당신의 lsusb출력 에서 나온 것입니다

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

댓글 : 일부 기기는에서 Broadcom BT로 인식되지 않습니다 lsusb. 어느 BT 장치인지 확실하지 않은 경우 usb-devices명령을 실행 하면 자세한 정보가 제공됩니다. 제품 및 공급 업체 ID를 찾을 수 있습니다.

RAMUSB21D7로 끝나는 줄이 있습니다.

이 파일에서 RAMUSB21D7을 검색하십시오. 다음과 같은 섹션이 있습니다.

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

그것이 우리가 찾고있는 것입니다. 펌웨어 파일의 이름입니다. BCM43142A0_001.001.011.0122.0126.hex

  1. 이제 동일한 cab 파일에서 해당 펌웨어를 추출하십시오.

    그런 다음이 파일을 16 진수에서 hcd 형식으로 변환해야합니다.

  2. 그 도구를 다운로드하십시오

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

    당신은 얻을 것이다 hex2hcd의 홈 디렉토리에 폴더를.

  3. 펌웨어 파일을 홈 폴더에 넣고 실행하십시오.

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

    당신은 볼 0a5c-21d7가 에서 어댑터의 ID입니다 lsusb .

중요 : 커널 4.2 이상에서는이 파일을 BCM.hcd대신 호출하십시오 .

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

커널의 4.8+ 파일의 이름은해야 BCM-<VID>-<PID>.hcd처럼 BCM-0a5c-21d7.

커널 5.0의 경우 파일 이름이 다시 BCM43142A0-0a5c-21d7.hcd

  1. 이제 BCM43142A0-0a5c-21d7.hcd커널 버전에 따라 다른 파일을 /lib/firmware/brcm디렉토리에 복사하십시오 .

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

커널 4.2 이상

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

커널 4.8 이상

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

를 실행하여 파일 이름이 올바른지 항상 확인할 수 있습니다dmesg | grep -i blue . 파일을 찾을 수 없으면 오류 메시지가 나타납니다.

요청한 파일 이름이 생성 한 파일과 일치하지 않으면 파일 이름을 바꿉니다 hcd.

  1. 컴퓨터를 껐다가 다시 켜십시오. 재부팅 만하는 것이 아닙니다!

    어댑터에 펌웨어가 설치되고 블루투스가 작동합니다.

이 모든 것이 복잡해 보이지만 Broadcom 변호사 는 그것을 비난합니다. 대부분의 다른 공급 업체는 라이센스와 함께 제공되는 조건에서 펌웨어를 재배포 할 수 있습니다.

이를 통해 리눅스 관리자는 배포판에 펌웨어를 포함시킬 수 있습니다.

그러나 Broadcom의 경우는 아닙니다. 그것이 쉬운 방법이 아닌 이유입니다.

많은 사람들이 모든 16 진수 파일을 hcd로 변환하여 사용 가능하게 만들 수 있습니다. 또는 우분투의 리눅스 펌웨어 패키지에 추가하십시오.

그러나 그것은 합법적이지 않습니다 :-((


6
랩톱을 깨울 때 대부분의 경우 커널 스택 추적으로 블루투스 모듈을 다시로드하지 못했습니다. 재부팅하지 않고 블루투스가 필요한 경우 블루투스 모듈을 언로드 sudo modprobe -r btusb하고 다시로드 ( sudo modprobe btusb)하여 blueooth가 다시 작동해야합니다. bugzilla.kernel.org/show_bug.cgi?id=81821
solsTiCe

1
6 단계에서 hex2hcd에 다음과 같은 출력 파일이 제공되어야합니다. hex2hcd [input-file] -o [output-file] 답변을 업데이트 할 수 있습니까?
Minas Mina

답변에 출력 파일이 있습니다. 아니면 저자가 그것을 바 꾸었습니까? 예전에는`hex2hcd 입력 파일 출력 파일
Pilot6

4
주요 게시물을 업데이트 해 주셔서 감사합니다. 내 경우에는 dmesg올바른 파일을 알기 위해 오류를 보았습니다 . 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
이중 사용자 : Windows OS에서 올바른 펌웨어를 추출 할 수 있습니다. 그렇게하려면 Windows 장치 관리자로 이동하여 Bluetooth 장치를 찾은 다음 마우스 오른쪽 단추로 클릭하고 속성, 드라이버, 드라이버 정보를 클릭하십시오. 여기에서 .hex파일 의 경로를 찾을 수 있으며 Linux 시스템으로 복사 할 수 있습니다. 그런 다음 5-8 단계를 수행하십시오. 그런데이 대답은 훌륭합니다.
Manu CJ

18

다음은 프로세스를 약간 자동화하는 프로젝트입니다. https://github.com/winterheart/broadcom-bt-firmware

커널에 따라 BCM을 올바른 dir / name에 복사하십시오 (위 설명 참조).

4.8에서 간단히 터미널에서 재부팅 할 필요가 없었습니다.

sudo modprobe -r btusb
sudo modprobe btusb

dmesg | grep -i blu

로드되었는지 표시해야합니다. 하드웨어 ID가 파일과 일치하는지 확인하십시오. 찾을 수 있습니다 :

lsusb

내 Lenovo에서 이것을 보여줍니다 (해당 줄에만 해당).

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

나는 그것이 도움이되기를 바랍니다 :)


1
필자의 경우 (UtechSmart USB Bluetooth 4.0 장치 ID : 0a5c : 21e8) winterheart 드라이버가로드되었지만 hcitool dev여전히 장치가 표시되지 않으며 syslog에 오류가 있습니다. plugable.com/2014/06/23/… 에서 다른 드라이버를 찾았 습니다.
그렉 브레이

8

이것이 당신이 필요로하는 모든 것입니다 : https://github.com/winterheart/broadcom-bt-firmware

이 저장소에서 추가 정보와 필요한 모든 Broadcom 무선 카드 드라이버를 찾을 수 있습니다 .


좀 더 구체적으로 말하면, 내가 당신을 위해 쓴 지침을 제공합니다.

이 튜토리얼은 Linux 시스템에서 무선 / 블루투스 네트워크 카드 Broadcom Corporation BCM43142 802.11b / g / n (rev 01) (장치 ID : 0a5c : 216d)을 작동시키기위한 것입니다 (초기 OS 0.4.1 Loki 기반으로 시도했습니다) 우분투 16.04.3 LTS).

다른 장치에서는 작동하지 않지만 다른 Broadcom 장치의 경우이 절차와 크게 다르지 않아야합니다. 필요한 Broadcom 드라이버는이 GitHub의 리포지토리 폴더 에 .hcd 형식입니다.

  1. 부팅하는 동안 드라이브를로드 할 때 커널이 찾는 드라이버 이름을 찾으려면 다음 명령을 입력하십시오.

    dmesg | grep -i 'firmware load'
    

    아무것도 찾지 못하면 이것을 시도하십시오.

    dmesg | grep -i 'bluetooth'
    

    결과는 다음과 같아야합니다.

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

    설명 : 제 경우 커널은 Broadcom 드라이버가있을 것으로 예상되는 BCM.hcd디렉토리 /lib/firmware/brcm에서 파일을 찾고 있습니다. 커널이 다른 드라이버 이름을 찾는 경우 커널에서 드라이버 파일 이름을 변경해야합니다 ( BCM43142A0-0a5c-216c.hcd필자의 경우 BCM43142 (0a5c : 216d)).

  2. 이름이 바뀐 드라이버 (BCM.hcd)를 홈 디렉토리 (/ home / YourUsername /)로 이동하고 다음 명령을 실행하여 부팅 중에 커널이 찾고있는 폴더로 이동하십시오.

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

    장치에 따라 해당 드라이버를 사용하고 커널에 요청 된 경우 이름을 바꿔야합니다.

  3. 컴퓨터를 재부팅하면 작동합니다! * ( dmesg | grep -i 'bluetooth'다시 입력 하면 드라이버가로드되었는지 확인할 수 있습니다 )


효과가 있었다! 고마워요! 필자의 경우 "BCM43142802.11b / g / n [14e4 : 4365] (rev 01)"버전을 github 폴더에서 사용할 수 없었지만 BCM43142A0-185f-2167.hcd로 시험해 보았습니다.
스리 람 칸난
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.