bluetooth - btusb - Como substituir a versão do módulo por uma mais nova

0

Eu pré-compilei o kernel 3.16.7 que tem o módulo btusb v0.6; O atual btusb v0.6 eu gostaria de substituir por btusb v0.7 que está localizado no kernel 4.0; Então, minha pergunta é como:

  • remove o atual btusb 0.6 do kernel 3.16.7
  • extrair o btusb 0.7 do kernel 4.0 (compilá-lo)
  • insira o btusb 7.0 compilado no kernel 3.16.7

EDITAR :

saídas lsusb:

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

o dispositivo de banda larga 04ca é bem novo, então talvez esse seja o maior problema;

Como eu poderia obtê-lo, ele precisa da versão do módulo btusb > = 0,7; Então, eu preciso de algum tipo de substituição do módulo, porque o meu kernel pré-compilado atual tem o btusb 0.6; Eu realmente não quero lidar com toda a compilação de fontes do kernel, mas descobrir a integração local do btusb no meu kernel já pré-compilado v3.16.7

EDITAR :

Eu tenho a saída $ usb-devices como:

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)

após a entrada:

sudo modprobe btusb

e ...

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

Eu posso ver o driver btusb ativado como $ 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)

...

EDITAR

Eu tento baixar uma instalação de cabeçalhos linux como:

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

... mas como eu consigo, os cabeçalhos linux316 instalam cabeçalhos para o 3.16.7.11-1-Arch; Eu posso ver isso muito claro porque após a instalação eu tenho /lib/modules/3.16.7.11-1-Arch pasta criada :( Atualmente eu tenho o kernel em execução como 3.16.7.3-1 para os cabeçalhos repo não são compatíveis ou similares exigindo-me a Então, existe uma maneira de instalar cabeçalhos compatíveis com a versão do meu kernel?

p.s. Eu sou muito novo no Linux, então, por favor, ligue alguns links de tutoriais relacionados e dê passos detalhados

Obrigado

p.p. SO: Linux Arch x64

    
por user390525 29.04.2015 / 10:59

1 resposta

1

Você deve conseguir baixar o código-fonte com

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

Então você precisa extrair

tar xpvf linux-3.16.7.tar.xz

Digite cd no diretório correto

cd linux-3.16.7/drivers/bluetooth

Quando você postar o resultado de lsusb , poderei concluir essa resposta

gedit btusb

Vá para o final da linha 116, que deve ser { USB_VENDOR_AND_INTERFACE_INFO(0x0489, 0xff, 0x01, 0x01) }, Pressione a tecla Enter duas vezes, depois Tab uma vez e cole isso

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

Verifique o espaçamento e o formato para ver se ele corresponde às outras entradas, salve e saia do gedit.

Então podemos copiar alguns arquivos de configuração para o diretório

zcat /proc/config.gz > .config

Agora podemos criar os módulos bluetooth com

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

Quando eles são compilados, nós podemos copiar o btusb.ko para o diretório do kernel

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

Este dispositivo Bluetooth precisa de firmware

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

Em seguida, podemos descarregar o btusb e carregá-lo para que a nova versão seja carregada

sudo modprobe -r btusb
sudo modprobe btusb
    
por 05.05.2015 / 00:35