UPDATE 2015-05-15: Add a script to reload btusb after suspend to "install-btusb-bcm43142a0".
Debian 8 "Jessie" has been released recently. A lot of things have changed since a year ago when it was still in Testing, especially on the kernel side. The good news is the support for loading firmware for Broadcom bluetooth has been committed to the mainline kernel. The bad news is for the vendor ID and the device ID for BCM43142 bluetooth (105b:e065) is still not there. Therefore, we still need to patch and recompile btusb in order to get it to work. The difference is the patch is much smaller now.
$ lsusb | grep 105b:e065
Bus 003 Device 003: ID 105b:e065
2. Make sure you already have deb-src lines on your "/etc/apt/sources.list".
deb-src http://kartolo.sby.datautama.net.id/debian/ jessie main contrib non-free
deb-src http://kartolo.sby.datautama.net.id/debian/ jessie-updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free
3. Install "build-essential".
# apt-get install build-essential
4. Download and install "hex2hcd" from source.
$ wget "https://github.com/jessesung/hex2hcd/archive/master.zip"
$ unzip master.zip
$ cd hex2hcd-master
$ make
# cp hex2hcd /usr/local/bin
5. Get hex firmware for BC43412 from a Windows installation under "C:\Windows\System32\Drivers". The file name should be like "BCM43142A0_*.hex".
$ tar xvf btusb-bcm43142a0-20150515.tar.gz
2. Put your hex firmware together with the script and rename it to "BCM43142A0.hex".
$ ls
BCM43142A0.hex
btusb-bcm43142A0.patch
install-btusb-bcm43142a0
3. Run the script. It will download the kernel source for the running kernel, patch btusb module, and install the firmware.
# ./install-btusb-bcm43142a0
IMPORTANT: Please verify the content of the script yourself first before running. I have only tested it on my installation of Debian 8 "Jessie" i386. I won't be responsible for any damage that it caused. Use at your own risk!
4. Your bluetooth should be running on the next boot. If not, try disabling and enabling it. See whether it runs.
If you have any questions, write in the comments below.
Debian 8 "Jessie" has been released recently. A lot of things have changed since a year ago when it was still in Testing, especially on the kernel side. The good news is the support for loading firmware for Broadcom bluetooth has been committed to the mainline kernel. The bad news is for the vendor ID and the device ID for BCM43142 bluetooth (105b:e065) is still not there. Therefore, we still need to patch and recompile btusb in order to get it to work. The difference is the patch is much smaller now.
Preparation
1. Make sure you have the correct device. We are talking about 105b:e065 here.$ lsusb | grep 105b:e065
Bus 003 Device 003: ID 105b:e065
2. Make sure you already have deb-src lines on your "/etc/apt/sources.list".
deb-src http://kartolo.sby.datautama.net.id/debian/ jessie main contrib non-free
deb-src http://kartolo.sby.datautama.net.id/debian/ jessie-updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free
3. Install "build-essential".
# apt-get install build-essential
4. Download and install "hex2hcd" from source.
$ wget "https://github.com/jessesung/hex2hcd/archive/master.zip"
$ unzip master.zip
$ cd hex2hcd-master
$ make
# cp hex2hcd /usr/local/bin
5. Get hex firmware for BC43412 from a Windows installation under "C:\Windows\System32\Drivers". The file name should be like "BCM43142A0_*.hex".
Recompiling
1. Download the bash script that I have written here and extract it.$ tar xvf btusb-bcm43142a0-20150515.tar.gz
2. Put your hex firmware together with the script and rename it to "BCM43142A0.hex".
$ ls
BCM43142A0.hex
btusb-bcm43142A0.patch
install-btusb-bcm43142a0
3. Run the script. It will download the kernel source for the running kernel, patch btusb module, and install the firmware.
# ./install-btusb-bcm43142a0
IMPORTANT: Please verify the content of the script yourself first before running. I have only tested it on my installation of Debian 8 "Jessie" i386. I won't be responsible for any damage that it caused. Use at your own risk!
4. Your bluetooth should be running on the next boot. If not, try disabling and enabling it. See whether it runs.
If you have any questions, write in the comments below.
But aaa hm... what if
ReplyDelete$lsusb | grep 105b:e065
produced... nothing?
It means that you don't have the exact same bluetooth device. So, this post might not be for you.
DeleteHowever, i have heard somewhere that there are variations of BCM43142 with different vendor ID and device ID. So, you might try to modify the script and use different hex firmware. But, there is no guarantee that it will work.
But why my lsusb does not have anything similar to bluetooth?
ReplyDelete$ lsusb
Bus 004 Device 002: ID 8087:8000 Intel Corp.
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 8087:8008 Intel Corp.
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 001 Device 002: ID 174f:148d Syntek
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
I am afraid you have to do your own research on your laptop model. Look at the output of lsusb on my laptop below. It also says nothing similar to bluetooth.
Delete$ lsusb
Bus 004 Device 002: ID 8087:8000 Intel Corp.
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 8087:8008 Intel Corp.
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 105b:e065
Bus 001 Device 004: ID 046d:c534 Logitech, Inc.
Bus 001 Device 002: ID 13d3:5722 IMC Networks
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
worked for me
ReplyDeleteI had to change the ids to 0x0930:0x0229 and use the appropriate .hex from windows install with a little adjustment to the patch script to pick up the patch and add the 0930 0229 id where required.
all ready for the next update so i can path again.
Many Thanks!
It is good to hear that.
DeleteI need your help
ReplyDeleteI run
./install-btusb-bcm43142a0
And I get this error
Download complete and in download only mode
dpkg-source: error: cannot read linux_.dsc: No such file or directory
./install-btusb-bcm43142a0: line 35: cd: install-btusb-bcm43142a0.ktTroAMx/linux: No such file or directory
./install-btusb-bcm43142a0: line 39: cd: install-btusb-bcm43142a0.ktTroAMx/linux: No such file or directory
./install-btusb-bcm43142a0: line 40: cd: install-btusb-bcm43142a0.ktTroAMx/linux: No such file or directory
./install-btusb-bcm43142a0: line 44: cd: install-btusb-bcm43142a0.ktTroAMx/linux: No such file or directory
./install-btusb-bcm43142a0: line 45: cd: install-btusb-bcm43142a0.ktTroAMx/linux: No such file or directory
./install-btusb-bcm43142a0: line 46: cd: install-btusb-bcm43142a0.ktTroAMx/linux: No such file or directory
./install-btusb-bcm43142a0: line 47: cd: install-btusb-bcm43142a0.ktTroAMx/linux: No such file or directory
cp: cannot stat ‘install-btusb-bcm43142a0.ktTroAMx/build/lib/modules/*/extra/btusb.ko’: No such file or directory
HELP ME PLEASE...
There are few possibilities:
Delete1. The following command:
apt-get --download-only source linux=$KERNEL_VERSION
fails to get the required files.
2. The first command works but the following command:
dpkg-source -x "linux_$KERNEL_VERSION.dsc" "$TEMP_DIR/linux"
fails to get the dsc file downloaded by the first command.
Once you identify and correct the failure, the rest of the errors should be gone as they are caused by either of those 2 possibilities.
I am on latest Debian 8.2 now and this script is still working for me.
I have a problem with step 5 (Get hex firmware for BC43412 from a Windows installation) ... I don't have windoze :/ .... can someone publish it somewhere?
ReplyDelete