You are not logged in.

#1 2015-09-20 20:50:36

Aradan_D
Member
Registered: 2014-01-17
Posts: 10

[SOLVED] Lenovo Yoga 2 Bluetooth

Hi, how can I make bluetooth to work on my Lenovo Yoga 2 11'' ?
I installed bluez and bluez-utils and started the service, but it is not working. Using bluetoothctl I get the "No default controller available" message

The lsusb command shows a Foxconn device:


Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 048d:8386 Integrated Technology Express, Inc. 
Bus 001 Device 003: ID 03eb:8c1d Atmel Corp. 
Bus 001 Device 006: ID 105b:e065 Foxconn International, Inc. BCM43142A0 Bluetooth module
Bus 001 Device 004: ID 5986:0535 Acer, Inc 
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

In the Arch wiki there is a Lite-On Broadcom device section for the BCM43142A0 module, should I follow that?



Regards

Last edited by Aradan_D (2015-10-04 18:22:38)

Offline

#2 2015-09-20 22:25:33

byte
Member
From: Düsseldorf (DE)
Registered: 2006-05-01
Posts: 2,046

Re: [SOLVED] Lenovo Yoga 2 Bluetooth

Read this and adopt it for your system.
I guess you only need to replace "BCM20702A1_001.002.014.1443.1572" with "BCM43142A0_001.001.011.0197.0237.hex ", and for the firmware filename that goes into /lib/firmware/brcm consult your 'dmesg' output, perhaps grep for "BCM".


1000

Offline

#3 2015-09-22 19:24:03

Aradan_D
Member
Registered: 2014-01-17
Posts: 10

Re: [SOLVED] Lenovo Yoga 2 Bluetooth

Hi, thanks for the help.
In the cab file there are many BCM142A0 hex files, how do you know the BCM43142A0_001.001.011.0197.0237.hex is the right one?

Also, I did the grep to dmesg and I got:

[    5.053597] wlan0: Broadcom BCM4365 802.11 Hybrid Wireless Controller 6.30.223.248 (r487574)

Which I don't understand quite well, since lsusb shows me BCM142A0. So, should I use these names for the /lib/firmware/brcm/ file? :

BCM4365A0-105b-e065.hcd
BCM4365A1-105b-e065.hcd

Or maybe the BCM43142A0 / A1 ? smile

Offline

#4 2015-09-22 19:42:14

byte
Member
From: Düsseldorf (DE)
Registered: 2006-05-01
Posts: 2,046

Re: [SOLVED] Lenovo Yoga 2 Bluetooth

> how do you know the BCM43142A0_001.001.011.0197.0237.hex is the right one?
It's the highest number / latest version.

Your wlan0 is of no interest here, even if wifi+bluetooth share the same chip on the mainboard.
If the kernel doesn't find the right firmware file it will print the exact name it wants in dmesg, so that should be rather easy.


1000

Offline

#5 2015-09-22 19:53:59

Aradan_D
Member
Registered: 2014-01-17
Posts: 10

Re: [SOLVED] Lenovo Yoga 2 Bluetooth

By the way, I found this http://www.gnebehay.com/blog/lenovo-fle … th-debian/

but I don't know how to get the kernel source. I only found the abs method but it doesn't have the drivers folder

Offline

#6 2015-09-22 19:55:36

Aradan_D
Member
Registered: 2014-01-17
Posts: 10

Re: [SOLVED] Lenovo Yoga 2 Bluetooth

byte wrote:

> how do you know the BCM43142A0_001.001.011.0197.0237.hex is the right one?
It's the highest number / latest version.

Your wlan0 is of no interest here, even if wifi+bluetooth share the same chip on the mainboard.
If the kernel doesn't find the right firmware file it will print the exact name it wants in dmesg, so that should be rather easy.



Mm.. but dmesg does not have anything with bluetooth, so I guess  it is not loading it

Offline

#7 2015-09-22 20:01:20

byte
Member
From: Düsseldorf (DE)
Registered: 2006-05-01
Posts: 2,046

Re: [SOLVED] Lenovo Yoga 2 Bluetooth

Wait, nothing? That's not good.
Output of 'lsmod | grep bt'?
If there's no btusb what happens when you load it manually ('modprobe -v btusb')?


1000

Offline

#8 2015-09-22 20:08:56

Aradan_D
Member
Registered: 2014-01-17
Posts: 10

Re: [SOLVED] Lenovo Yoga 2 Bluetooth

I found this:

[david@naranja build]$ lsmod | grep bt
btusb                  45056  0
btbcm                  16384  1 btusb
btintel                16384  1 btusb
bluetooth             458752  8 bnep,btbcm,btusb,btintel
usbcore               200704  5 btusb,uvcvideo,usbhid,xhci_hcd,xhci_pci

So btusb is there =o

Offline

#9 2015-10-04 18:14:00

Aradan_D
Member
Registered: 2014-01-17
Posts: 10

Re: [SOLVED] Lenovo Yoga 2 Bluetooth

I finally made the Bluetooth to work big_smile
I had to modify a little the steps done here: Debian Guide
because the Bluetooth is not being initialised some how, I don't know much about this

So I patched the btsusb module, and since I'm using the 4.1.5-1-ARCH, I started downloading
the 4.1.5 Kernel here: Kernel source

mkdir build
cd build
wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.1.5.tar.gz
tar -xvzf linux-4.1.5.tar.gz
cd linux-4.1.5

Then I had to patch the file btusb.c  in the drivers folder

vi drivers/btusb.c

adding the line

{ USB_DEVICE(0x105b, 0xe065), .driver_info = BTUSB_BCM_PATCHRAM },

Then we need to compile the module. To do this I followed the Arch wiki

make mrproper
cp /usr/lib/modules/`uname -r`/build/.config ./
cp /usr/lib/modules/`uname -r`/build/Module.symvers ./
make oldconfig
make prepare && make scripts
make M=drivers/bluetooth

Now we have the modules and need to compress it and move it to the lib folder

gzip drivers/bluetooth/btusb.ko
sudo cp -f drivers/bluetooth/btusb.ko.gz /usr/lib/modules/`uname-r`/kernel/drivers/bluetooth/

The I rebooted. We can see using dmesg | grep Buetooth the error where Bluetooth cannot be loaded, something like: bluetooth hci0: firmware: failed to load brcm/BCM.hcd (-2) )

Now we need the hcd file, which we can do following the previous post:

1. Download the cab file from here: CAB file
2. Extract the cab, convert it to hcd, move it to the appropriate kernel firmwares folder and reload the btusb module

cabextract 20662520_6c535fbfa9dca0d07ab069e8918896086e2af0a7.cab
hex2hcd BCM43142A0_001.001.011.0197.0237.hex
mv BCM43142A0_001.001.011.0197.0237.hcd /lib/firmware/brcm/BCM43142A0-105b-e065.hcd
sudo modprobe -r btusb
sudo modprobe btusb

The 105b-e065 number is from the lsusb output. From the error it seems that the file could be named BCM.hcd . I just made two files with both names, but I'm not sure which one is being loaded. The hcd file is also provided here, so so we don't have to extract and convert it

Finally, it is necessary to start the bluetooth service

sudo systemctl start bluetooth.service

And it works! I could transfer files from my smartphone smile

Last edited by Aradan_D (2015-10-04 18:21:50)

Offline

Board footer

Powered by FluxBB