Bluetooth - btusb - モジュールバージョンを最新のモジュールバージョンに置き換える方法

Bluetooth - btusb - モジュールバージョンを最新のモジュールバージョンに置き換える方法

btusb v0.6モジュールを含むカーネル3.16.7をプリコンパイルしました。現在、btusb v0.6をカーネル4.0のbtusb v0.7に置き換えたいと思います。だから私の質問は次のとおりです。

  • カーネル3.16.7から現在のbtusb 0.6を削除します。
  • カーネル4.0からbtusb 0.7を抽出する(コンパイル)
  • コンパイルされたbtusb 7.0をカーネル3.16.7に挿入します。

編集する:

lsusb出力:

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

Broadcomデバイス04caはかなり新しいものなので、これが主な問題かもしれません。

私が知っている限り、btusbモジュールのバージョン> = 0.7が必要なので、現在プリコンパイルされているカーネルにはbtusb 0.6があるので、モジュールの種類の交換が必要です。カーネルソース全体のコンパイルを扱いたくありませんが、既にデフォルトでbtusbをプリコンパイルされたカーネルv3.16.7に統合したいと思います。

編集する:

私の$ usb-devices出力は次のとおりです。

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)

入力後:

sudo modprobe btusb

そして…

sudo echo "04ca 2006" sudoティー/sys/bus/usb/drivers/btusb/new_id

btusbドライバが$ 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)

...

編集する

Linux-headersをダウンロードしてインストールしようとしています。

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

...しかし、私が知っている限り、linux316-headersは3.16.7.11-1-Archのヘッダをインストールします。インストール後に/lib/modules/3.16.7.11- 1-Archフォルダを作成したので、はっきりと見ることができます。 (現在のカーネルが3.16.7.3-1で実行されているため、リポジトリヘッダーが互換性がないか、同様のアップグレードが必要です。もしそうなら、私のカーネルビルドと互換性のあるヘッダーをインストールする方法はありますか?

ps 私は初めてLinuxに触れたので、関連するチュートリアルリンクをリンクし、詳細な手順を教えてください。

ありがとう

ppsオペレーティングシステム:Linux Arch x64

答え1

ソースコードをダウンロードできる必要があります。

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

だから抽出する必要があります

tar xpvf linux-3.16.7.tar.xz

次に、正しいディレクトリにCDを移動します。

cd linux-3.16.7/drivers/bluetooth

結果を投稿するときは、lsusbこの回答を完了できます。

gedit btusb

116行目の末尾に移動して{ USB_VENDOR_AND_INTERFACE_INFO(0x0489, 0xff, 0x01, 0x01) }, Enterを2回押し、Tabを1回押して貼り付けます。

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

間隔と形式を確認して他の項目と一致することを確認し、geditを保存して終了します。

その後、一部の構成ファイルをそのディレクトリにコピーできます。

zcat /proc/config.gz > .config

これで、次のコマンドを使用してBluetoothモジュールを作成できます。

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

コンパイルが完了したら、btusb.koをカーネルディレクトリにコピーできます。

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

このBluetoothデバイスにはファームウェアが必要です

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

その後、btusbを削除してロードして新しいバージョンをロードできるようにします。

sudo modprobe -r btusb
sudo modprobe btusb

関連情報