10

I have a laptop Dell inspiron 15-3521 with Ubuntu 12.04 pre-installed, It was working good (I removed this Ubuntu). I installed Ubuntu 14.04 (fresh install).

(The driver installed is: bcmwl-kernel-source 6.30.223.141+bdcom-0ubuntu2)

The WiFi network working good but Bluetooth is not working (My phone, other pc and laptop can't see it and my laptop can't see anything.)

Bluetooth device is enabled and turned on and visible.

lspci result:

00:00.0 Host bridge: Intel Corporation 3rd Gen Core processor DRAM Controller (rev 09)
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04)
00:16.0 Communication controller: Intel Corporation 7 Series/C210 Series Chipset Family MEI Controller #1 (rev 04)
00:1a.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (rev 04)
00:1b.0 Audio device: Intel Corporation 7 Series/C210 Series Chipset Family High Definition Audio Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 1 (rev c4)
00:1c.1 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 2 (rev c4)
00:1d.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (rev 04)
00:1f.0 ISA bridge: Intel Corporation HM76 Express Chipset LPC Controller (rev 04)
00:1f.2 SATA controller: Intel Corporation 7 Series Chipset Family 6-port SATA Controller [AHCI mode] (rev 04)
00:1f.3 SMBus: Intel Corporation 7 Series/C210 Series Chipset Family SMBus Controller (rev 04)
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 05)
02:00.0 Network controller: Broadcom Corporation BCM43142 802.11b/g/n (rev 01)

lsusb result:

Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 
Bus 001 Device 005: ID 064e:8132 Suyin Corp. 
Bus 001 Device 004: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller 
Bus 001 Device 003: ID 0a5c:21d7 Broadcom Corp. BCM43142 Bluetooth 4.0
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 19d2:0031 ZTE WCDMA Technologies MSM MF110/MF627/MF636
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Eliah Kagan
  • 117,780
Momo
  • 105
  • 1
  • 1
  • 5

6 Answers6

8

Similar steps as from Diabolik2. New information is where and how to get the hex file.

Sources:

To have a complete solution I write all my steps from the beginning:

  1. Find ID of your device:

    $ lsusb | grep Bluetooth

    My output for example:

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

    from which 0a5c:21d7 should be remembered.

  2. Get a hex file for your device:

  3. Copy the hcd file to /lib/firmware as lib/firmware/fw-0a5c_21d7.hcd.

    In the filename use the ID which you have previously found out.

sb.
  • 81
  • 1
    Step 3. Should be copy hcd file to: /lib/firmware/brcm/ – david6 Apr 25 '15 at 04:51
  • I have extracted the last .hex file by chance. Fortunately it worked. - people reading this please note that if it doesn't work it might break something, so you probably should only do this if Diabolik2's post does not work for u. – Wilf May 01 '15 at 22:27
  • 1
    Also it's very important to read what dmesg | grep Bluetooth says, as it will give you useful information. In my case it was saying that it failed to load file brcm/BCM.hcd, so I named the hcd file as BCM.hcd instead of fw-0a5c_21d7.hcd and copied it to /lib/firmware/brcm/. It worked like a charm. DELL inspiron 15 - 3543. – Subtle Development Space Jun 19 '16 at 16:55
  • Oh and the hex file I have chosen using the method suggested in Florin C's answer. Using the inf file. – Subtle Development Space Jun 19 '16 at 17:25
  • 1
    For Ubuntu 16.04, the solution is to get the .hex file from windows as explained above, transform to .hdc also as explained, but you need to put a different name for the firmware file like: /lib/firmware/brcm/BCM-0a5c-6410.hcd (depends on your lsusb bus:devnum ID) – morhook Jul 08 '16 at 14:55
6

I have solved the issue with the solution from this post:

In summary, I have done this steps: List your id:

lsusb

My id is: 0a5c:21d7

Get the file .hex : In your windows partition (presuming that you dual boot with Windows), get the file BCMxxxx.hex in C:\windows\system32\drivers. If there are two or more files .hex, view which one is in use with windows device manager. Copy this file in your home directory

Open terminal and type these commands:

sudo apt-get install git
git clone git://github.com/jessesung/hex2hcd.git
cd hex2hcd
make
./hex2hcd ../BCMxxxx.xxx.xxx.xx.hex fw-0a5c_21d7.hcd (Replace 0a5c_21d7 with your id)
sudo cp fw* /lib/firmware

Reload modules with these commands:

sudo modprobe -r btusb
sudo modprobe btusb

Restart your computer.

Open terminal and write:

dmesg | grep firmware

if all right you can view the message:

[   xxxxxxxxxx] Bluetooth: firmware loaded

This is all.

Good luck Diabolik2

Wilf
  • 30,194
  • 17
  • 108
  • 164
  • 1
    While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. – αғsнιη Oct 11 '14 at 04:34
  • Note the post apparently has been updated with the steps here – Wilf May 01 '15 at 22:20
6

Answers saying that I have to install Windows to get a firmware for Linux ... sound wrong, isn't it?

But the previous answers were gold. I have Bluetooth working after long time in my Dell with Ubuntu 12.04 386. Here my completions to the previous answers (especially sb):

  1. The sb's cab is good and had the hex files for several chips on this family.

  2. cabextract is a tool to extract a .cab archive. just:

    sudo apt-get install cabextract

and extract it by:

cabextract 20573731_e75f2c1244fb153ccc4c1cac0dfbbab030d18543.cab

Be aware that there is not a directory inside the cab, but just files, so you'll get a lot of hex files. It is good to mkdir a specific directory and extract the cab in there.

  1. How to get the right hex file.

So I have the id of the chip: 0a5c:21d7 and a bunch of the hex file. How can I get the right one for me? The trick is to investigate the .inf file that instructs windows what to install. Searching for 21D7 (note the capital D instead of 'd') I get this:

%Dell1704.DeviceDesc%=RAMUSB21D7, USB\VID_0A5C&PID_21D7 ; BRCM Generic 43142A0 RAMUSB

The USB/VID&PID is what I get on lsusb: capital(0a5c:21d7). The RAMUSB21D7 is what I need to search next in the inf file (it is the device's description).

And this is my result:

;;;;;;;;;;;;;RAMUSB21D7;;;;;;;;;;;;;;;;;

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

And the hex file I shall use is BCM43142A0_001.001.011.0122.0126.hex

The rest is the same as above. Get the tool trough git, build it, convert the hex file to hcd, discard/reload the btusb.

Note: Be aware the hcd file should start with fw-...... and not fw_...... I made this mistake. :)

  • After extracting correct hex file and followed procedure. When I restarted my machine and fired command dmesg | grep firmware. I am getting output as [ 15.023826] bluetooth hci0: Direct firmware load for brcm/BCM43142A0-0a5c-21d7.hcd failed with error -2 – raviture Jul 01 '16 at 07:34
4

Unfortunately, your Bluetooth device:

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

Is not supported by any version of stock Ubuntu, please refer to
Bug1129865 [Broadcom Combo BT/Wifi Card] 21D3 21D7 Bluetooth does not detect anything at all
(The reason is listed in comment #7)

And I will suggest you to subscribe to this bug:
Bug 1065400 Support for loading Broadcom bluetooth firmware
There might be a workaround in that thread, good luck!

P.-H. Lin
  • 2,824
0

In my case the bluetooth firmware did not load until I created the brcm directory in /lib/firmware/ and renamed the file to

BCM43142A0-0a5c-21d7.hcd

I'm using Debian 8 & Dell Inspiron 15

Cheers

Alex
  • 1
-1

Solution works (Ubuntu 14.04 kernel-4.2) In my case, HCD file needed to be named BCM.hcd. The exact file name you should name your hcd file will be stated in description of loading error, which can be viewed using command:

dmesg | grep firmware

as Wilf stated above!

  • Welcome to Ask Ubuntu! Please don't add comments as answers. Invest some time in the site and you will gain sufficient privileges to upvote answers you like such as this, or to add actual comments when seeking clarification of any issues. – Martin Thornton Apr 25 '16 at 13:53