Results 1 to 1 of 1

Thread: [TUTORIAL] install Broadcom bluetooth on Lenovo ThinkPad X1 Carbon 1 gen

  1. #1
    Junior Member
    Join Date
    Jul 2017
    Posts
    1

    Cool [TUTORIAL] install Broadcom bluetooth on Lenovo ThinkPad X1 Carbon 1 gen

    Hello,

    This tuto maybe work for other Brodcom devices or another computer.

    My spec :
    Code:
    $ uname
    Linux XXX 4.9.0-kali4-amd64 #1 SMP Debian 4.9.30-2kali1 (2017-06-22) x86_64 GNU/Linux
    $ lsusb | grep -i bluetooth
    Bus 003 Device 016: ID 0a5c:21e6 Broadcom Corp. BCM20702 Bluetooth 4.0 [ThinkPad]
    Note your USB device id, my is 0a5c:21e6

    Bluetooth don't work out of the box on Kali because Kernel need a proprietary firmware. You can check that :
    Code:
    $ dmesg | grep bluetooth
    ...
    [28483.641471] bluetooth hci0: firmware: failed to load brcm/BCM20702A1-0a5c-21e6.hcd (-2)
    [28483.641478] bluetooth hci0: Direct firmware load for brcm/BCM20702A1-0a5c-21e6.hcd failed with error -2
    [28483.641481] Bluetooth: hci0: BCM: Patch brcm/BCM20702A1-0a5c-21e6.hcd not found
    ...
    Note the file name of missing firmware, mine : BCM20702A1-0a5c-21e6.hcd

    So we need a firmware. Go to Lenovo website support to download the bluetooth driver for Windows 7. If you don't know your model of Thinkpad, type :
    Code:
    # dmidecode -t system | grep -i "serial number"
    and copy past in the search box.
    Go to bluetooth section, and download the .exe for windows 7 x86/x64.

    You must extract the .exe, so you need innoextract tool :
    Code:
    # aptitude install innoextract
    extract the .exe :
    Code:
    $ innoextract g4wb12ww.exe 
    Extracting "version 6.5.1.4500 (G4WB12WW)" - setup data version 5.2.3
     - "app/Autorun.inf" (52 B)
     - "app/btw.ico" (45.2 KiB)
     - "app/license.dat" (176 B)
     - "app/Setup.exe" (8.51 MiB)
     - "app/Custom/CustomAr.ctm" (25.1 KiB)
     - "app/Custom/CustomBG.ctm" (28.8 KiB)
     - "app/Custom/CustomBr.ctm" (24.8 KiB)
    ...
    it create a app/ folder.
    open the inf file with your favorite reader : app/Win64/bcbtums-win7x64-brcm.inf
    search in the file a part look like :
    Code:
    %BtUSB.DeviceDesc%=RAMUSB3384,              USB\VID_13D3&PID_3384       ; 20702A1 Azurewave
    %BRCM20702Thinkpad.DeviceDesc%=RAMUSB21E6,  USB\VID_0A5C&PID_21E6       ; 20702 non-UHE Lenovo Japan
    %BRCM20702A1.DeviceDesc%=RAMUSB21F3,        USB\VID_0A5C&PID_21F3       ; Lenovo Edge 43228 + 20702A1 combo
    %BRCM20702A1.DeviceDesc%=RAMUSB21F4,        USB\VID_0A5C&PID_21F4       ; Lenovo Edge 4313 + 20702A1 combo 
    %BRCM20702Generic.DeviceDesc%=RAMUSBE052,   USB\VID_0489&PID_E052       ; 20702 non-UHE Generic
    %HP20702BtAdapter.DeviceDesc%=RAMUSB21F1,   USB\VID_0A5C&PID_21F1       ; 20702A1 Bumblebee 43228 combo
    Check you usb device id, mine is 0a5c 21e6, note the device description, mine is RAMUSB21E6.

    Search in the inf file your device description :
    ...
    Code:
    ;;;;;;;;;;;;;RAMUSB21E6;;;;;;;;;;;;;;;;;
    
    [RAMUSB21E6.CopyList]
    bcbtums.sys
    BCM20702A1_001.002.014.0449.0462.hex
    
    [RAMUSB21E6.NTamd64]
    Include=bth.inf
    Needs=BthUsb.NT
    ...
    Note the .hex file, mine : BCM20702A1_001.002.014.0449.0462.hex, this is the firmware. We need hex2hcd tool to convert the .hex file to .hcd a readable firmware format for Linux kernel :
    Code:
    $ git clone git://github.com/jessesung/hex2hcd.git
    $ cd hex2hcd
    $ make
    copy your firmware into hex2hcd folder and convert, remember the missing filename in dmesg :
    Code:
    $ cp ~/Downloads/app/Win64/BCM20702A1_001.002.014.0449.0462.hex .
    $ ./hex2hcd BCM20702A1_001.002.014.0449.0462.hex BCM20702A1-0a5c-21e6.hcd
    copy your firmware :
    Code:
    # cp BCM20702A1-0a5c-21e6.hcd /lib/firmware/brcm/
    reload bluetooth module :
    Code:
    # rmmod btusb
    # modprobe btusb
    check if it work in dmesg command :
    Code:
    # dmesg
    ...
    29648.108611] usbcore: deregistering interface driver btusb
    [29660.495191] usbcore: registered new interface driver btusb
    [29660.508873] Bluetooth: hci0: BCM: chip id 63
    [29660.525808] Bluetooth: hci0: Broadcom Bluetooth Device
    [29660.526899] Bluetooth: hci0: BCM20702A1 (001.002.014) build 1757
    [29660.526977] bluetooth hci0: firmware: direct-loading firmware brcm/BCM20702A1-0a5c-21e6.hcd
    [29663.445225] Bluetooth: hci0 command 0x0c03 tx timeout
    [29664.962245] usb 3-1.4: USB disconnect, device number 15
    [29671.380925] Bluetooth: hci0: BCM: Reset failed (-110)
    [29671.612947] usb 3-1.4: new full-speed USB device number 16 using ehci-pci
    [29671.725675] usb 3-1.4: New USB device found, idVendor=0a5c, idProduct=21e6
    [29671.725681] usb 3-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    [29671.725684] usb 3-1.4: Product: BCM20702A0
    [29671.725687] usb 3-1.4: Manufacturer: Broadcom Corp
    [29671.725690] usb 3-1.4: SerialNumber: F82FA8E53D85
    [29671.731463] Bluetooth: hci0: BCM: chip id 63
    [29671.748319] Bluetooth: hci0: BCM20702A
    [29671.749309] Bluetooth: hci0: BCM20702A1 (001.002.014) build 0000
    [29671.749351] bluetooth hci0: firmware: direct-loading firmware brcm/BCM20702A1-0a5c-21e6.hcd
    [29672.442475] Bluetooth: hci0: BCM20702A1 (001.002.014) build 0462
    [29672.459323] Bluetooth: hci0: Broadcom Bluetooth Device
    [29732.135876] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
    [29732.135881] Bluetooth: HIDP socket layer initialized
    ...
    Some failed, but it work's.

    EDIT:
    by default on Kali Bluetooth service is disable, to start :
    Code:
    # systemctl start bluetooth.service
    to start automatically on boot :
    Code:
    # systemctl enable bluetooth.service
    Last edited by 0ri0n; 2017-07-30 at 09:26 PM.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •