藍牙 - 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
和…
須藤迴聲“04ca 2006”| sudo tee /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 執行,因此 repo 標頭不兼容或類似要求我upgrade; 那麼有沒有辦法安裝與我的核心建構版本兼容的標頭檔?
ps 我對linux很陌生,所以請連結一些相關的教程連結並給出詳細的步驟
謝謝
pps 作業系統:Linux Arch x64
您應該能夠下載原始碼
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 鍵兩次,然後 Tab 一次並將其粘貼到/* 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
現在我們可以建構藍牙模組了
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
此藍牙設備需要韌體
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