4

I have pre-compiled kernel 3.16.7 which has btusb v0.6 module; The current btusb v0.6 I'd like to replace with btusb v0.7 which is located in kernel 4.0; So my question is how to :

  • remove the current btusb 0.6 from kernel 3.16.7
  • extract btusb 0.7 from kernel 4.0 (compile it)
  • insert the compiled btusb 7.0 to kernel 3.16.7

EDIT :

lsusb outputs :

Bus 001 Device 004: ID 04ca:2006 Lite-On Technology Corp.

the broadcom device 04ca is quite new so maybe that's the major problem;

As I could get it, it needs btusb module version>=0.7; So I do need some kind of module replacement cause my current pre-compiled kernel has btusb 0.6; I really want not to deal with the whole kernel sources compilation but to figure out btusb local integration into my already pre-compiled kernel v3.16.7

EDIT :

I have $usb-devices output as :

T:  Bus=01 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#= 11 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=04ca ProdID=2006 Rev=01.12
S:  Manufacturer=Broadcom Corp
S:  Product=BCM43142A0
S:  SerialNumber=*******
C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
I:  If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)

after the input :

sudo modprobe btusb

and...

sudo echo "04ca 2006" | sudo tee /sys/bus/usb/drivers/btusb/new_id

I can see btusb driver activated as $usb-devices:

T:  Bus=01 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#=  4 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=04ca ProdID=2006 Rev=01.12
S:  Manufacturer=Broadcom Corp
S:  Product=BCM43142A0
S:  SerialNumber=******
C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
I:  If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)

...

EDIT

I try to download an install linux-headers as :

sudo pacman -S linux-headers
[sudo] password for ...: 
:: There are 8 providers available for linux-headers:
:: Repository core
   1) linux310-headers  2) linux312-headers  3) linux313-headers
   4) linux314-headers  5) linux316-headers  6) linux318-headers
   7) linux319-headers  8) linux40-headers

...but as I can get it the linux316-headers do install headers for 3.16.7.11-1-Arch; I can see it pretty clear cause after installation I have /lib/modules/3.16.7.11-1-Arch folder created :( Currently I have running kernel as 3.16.7.3-1 so the repo headers are not compatible or similar demanding me to upgrade; So is there a way to install headers which compatible with my kernel build version?

p.s. I am quite new to linux so please link some related tutorials links and give detailed steps

Thanks

p.p.s. OS : Linux Arch x64

6
  • What are you attempting to accomplish with this? Do you have a device that is not working?
    – Jeremy31
    May 3, 2015 at 11:47
  • @Jeremy31 you are right; I have not working usb bluetooth which supposed to be supported by module version 0.7
    – user390525
    May 3, 2015 at 12:39
  • Can you download the source code for the kernel? Post results from lsusb as you can add your device to the current source and build the module
    – Jeremy31
    May 3, 2015 at 12:47
  • @Jeremy31 I cannot (don't know how) add my bluetooth device to the current btusb 0.6 module of pre-compiled kernel 3.16.7; and if to mention kernel 3.16.x sources and how to integrate (replace) its modules manually please guide me :)
    – user390525
    May 4, 2015 at 21:54
  • can you get linux-image with the same version as the headers you have?
    – Jeremy31
    May 30, 2015 at 19:14

1 Answer 1

5

You should be able to download the source code with

wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.7.tar.xz

Then you need to extract it

tar xpvf linux-3.16.7.tar.xz

Then cd into the correct directory

cd linux-3.16.7/drivers/bluetooth

When you post the result of lsusb I should be able to finish this answer

gedit btusb

Go to the end of line 116 which should be { USB_VENDOR_AND_INTERFACE_INFO(0x0489, 0xff, 0x01, 0x01) }, Press Enter key twice, then Tab once and paste this in

/* Lite-On Technology - Broadcom based */
    { USB_VENDOR_AND_INTERFACE_INFO(0x04ca, 0xff, 0x01, 0x01),
      .driver_info = BTUSB_BCM_PATCHRAM },

Check the spacing and format to see if it matches the other entries, then save and exit gedit.

Then we can copy some configuration files into the directory

zcat /proc/config.gz > .config

Now we can build the bluetooth modules with

make -C /lib/modules/$(uname -r)/build M=$PWD modules

When they are compiled we can copy the btusb.ko to the kernel directory

sudo cp btusb.ko /lib/modules/$(uname -r)/kernel/drivers/bluetooth/
cd /usr/lib/modules/$(uname -r)/kernel/drivers/bluetooth/
gzip btusb.ko

This bluetooth device needs firmware

cd ~
wget https://www.dropbox.com/s/xbmm9vfg2fby2zn/fw-04ca_2006.hcd
sudo cp fw-04ca_2006.hcd /lib/firmware/

Then we can unload btusb and load it so that the new version is loaded

sudo modprobe -r btusb
sudo modprobe btusb
46
  • The the current kernel I have (3.16.7) lsusb shows exactly unsupported bluetooth device see my question edit
    – user390525
    May 5, 2015 at 4:15
  • This will just build the bluetooth modules for the kernel, not the entire kernel. I updated the USB ID list 3 days ago for your device, so the desciption in lsusb should change after sudo update-usbids
    – Jeremy31
    May 5, 2015 at 10:18
  • Thanks but I have linux Arch OS running; So I am not sure concerning to apt-get and the linux-headers-generic; And please id all steps cause it's pretty hard to ask details :)
    – user390525
    May 7, 2015 at 8:38
  • Skip the apt-get as it seems the equivalent of build-essential is usually installed and you likely installed kernel headers with the kernel image
    – Jeremy31
    May 7, 2015 at 9:35
  • But before integration of "bluetooth" kernel's folder and its btusb 0.7 into my pre-compiled kernel 3.16.7 I want to ask will the btusb 0.7 be compatible with kernel 3.16.7 cause, as I can see it, btusb version 0.7 only kernel 4.0 has? I couldn't find the info so please give me a tip
    – user390525
    May 8, 2015 at 6:26

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .