Bluetooth not working on ubuntu 14.04 with dell inspiron 15-3521

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

Sources:

  • https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1065400/comments/11
  • https://askubuntu.com/a/534632/336592.

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:

    • After searching for bluetooth drivers in Google I have chosen this download: http://drivers.softpedia.com/get/BLUETOOTH/Broadcom/Broadcom-43142-Bluetooth-40-Adapter-Driver-12007030-for-Windows-8.shtml#download
    • I have extracted the last .hex file by chance. Fortunately it worked. STEPS: In nautilus right-click on the downloaded .cab file > chose Open with Archive Manager > select last .hex file in the archive list > right click > Extract...
    • download and compile hex2hcd
      $ git clone git://github.com/jessesung/hex2hcd.git
      $ cd hex2hcd
      $ make
    • convert the .hex to .hcd
       $ ./hex2hcd /path/to/extracted.hex /where/you/want/your_new.hcd
  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.


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


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. :)