在手機kali環境安裝wifi相關軟件:OTG網卡驅動

前言

走OTG網卡這一步,也是迫不得已的行為,但事情總是不會一帆風順的。解決外接網卡的驅動問題,就是一個麻煩的事情。

設備

  • 小米note
  • rt5370網卡

系統

  • MIUI 6 Linux kernel 3.4

可行的解決方式

  • 換合適的手機支持你的外接網卡
  • 換合適的網卡支持你的手機
  • 重新刷你手機的內核,這個新的內核編譯時包含了你外接網卡的驅動
  • 自己編譯外接網卡的驅動模塊

討論

  • 前兩種方式雖然可以解決,但就解決問題而言,不是最佳的方式。其實是在逃避問題。
  • 第三種是可行的,網上也看到了相關教程,但風險無疑也是很大的,因此我打算最后在嘗試。當然如果你本身對這方面比較精通,希望能不吝賜教。
  • 我這里只談一下,我的第四種嘗試。

編譯內核模塊

  • 在實踐之前,我首先搜索了大量相關的教程,總體而言和我當年學習過的嵌入式開發,區別不大。網絡上部分文章是給PC進行驅動模塊的開發,也有給arm開發板進行的驅動模塊開發,少部分是給android系統進行的驅動開發,我這里單獨列出arm和android主要是因為兩者還是有一定區別的,比如最明顯的文件系統目錄(我比較粗糙的理解,畢竟沒有深入對比)。arm板而言還是和PC很類似的目錄結構。
  • 按照我的理解,我不得不假設,android中的驅動模塊和arm開發板的驅動模塊開發流程是一致的(下面的內容都以這文前提)。 說起來這個流程很簡單。
內核頭文件目錄/內核源碼目錄 + 驅動源碼 ->內核模塊
  • 不管是PC,還是arm開發板其實都是這個流程,給PC來開發是最簡單的,arm 開發板一般則需要交叉編譯。
  • 我目前的情況是,在掛載的kali中,下載了一份很舊的網卡驅動,而我這個kali也有gcc環境,因此考慮是否可以直接在手機的kali中編譯出需要的內核模塊。理論上,這是完全可行的,但其實有很多不行的地方。首先我們都知道編譯內核模塊所需的內核頭文件版本和你當前的內核版本應該是一致的,這一點就很難滿足。我掛載的kali系統提示我它是linux kernel 3.4的,這是我手機的內核信息(為何不是kali的3.18?)。但kali 的軟件源中根本沒有對應的內核頭文件版本。
  • 就當是探索了,我安裝了一個3.18的內核頭文件(甚至后來還裝了內核源文件)。又修改了驅動源碼中Makefile的一些內容,但其實到一定的階段就編譯失敗了,原因很多,我覺得一個原因可能是內核版本太高了,一些原先的數據結構,不一致了等。反正很難順利的編譯下去。
  • 在實踐的過程中,我其實是有疑惑的,我在插上外接網卡后,dmesg其實打印了識別的信息,但不知為什么就是在ifconfig中無法看到,
35842.063914] C0 [    kworker/0:2, 8829] BMS: adjust_soc: s 72 i 259584 v 4048380 ocv 4076326 rbatt 132 uuc 89880 cc 6086 r 2187080 t 305 f 2996000
[35843.963958] C0 [     AudioOut_2, 779] msm_dai_q6_mi2s_hw_params: dai id 1 dai_data->channels = 2
[35843.963963] C0 [     AudioOut_2, 779] sample_rate = 48000 i2s_cfg_minor_version = 0x1
[35843.963968] C0 [     AudioOut_2, 779] bit_width = 16  channel_mode = 0x2 mono_stereo = 0x1
[35843.963973] C0 [     AudioOut_2, 779] ws_src = 0x1 sample_rate = 48000 data_format = 0x0
[35843.963977] C0 [     AudioOut_2, 779] reserved = 0
[35843.977474] C0 [     AudioOut_2, 779] msm8974_sec_mi2s_startup: dai name msm-dai-q6-mi2s.1 f5272a08
[35843.977496] C0 [     AudioOut_2, 779] msm8974_sec_mi2s_startup: acquire mi2s rx resources
[35843.978643] C0 [     AudioOut_2, 779] msm8974_sec_mi2s_startup: acquire mi2s tx resources
[35843.979191] C0 [     AudioOut_2, 779] msm_dai_q6_mi2s_hw_params: dai id 1 dai_data->channels = 2
[35843.979197] C0 [     AudioOut_2, 779] sample_rate = 48000 i2s_cfg_minor_version = 0x1
[35843.979201] C0 [     AudioOut_2, 779] bit_width = 16  channel_mode = 0x1 mono_stereo = 0x1
[35843.979206] C0 [     AudioOut_2, 779] ws_src = 0x1 sample_rate = 48000 data_format = 0x0
[35843.979210] C0 [     AudioOut_2, 779] reserved = 0
[35844.743592] C0 [      MC_Thread, 1229] wlan: [1229:E :HDP] hdd_tx_rx_pkt_cnt_stat_timer_handler: Disable split scan
[35848.144587] C0 [     AudioOut_2, 779] msm8974_sec_mi2s_shutdown: free mi2s rx resources
[35848.145280] C0 [     AudioOut_2, 779] msm8974_sec_mi2s_shutdown: free mi2s tx resources
[35862.064191] C0 [    kworker/0:2, 8829] BMS: adjust_soc: s 72 i 125339 v 4054830 ocv 4076326 rbatt 132 uuc 89880 cc 7188 r 2187080 t 305 f 2996000
[35870.552180] C0 [    kworker/0:2, 8829] msm-dwc3 msm_dwc3: DWC3 exited from low power mode
[35870.552761] C0 [    kworker/0:2, 8829] switch_usb_to_host_mode: switch to host mode
[35870.554960] C0 [    kworker/0:2, 8829] xhci-hcd xhci-hcd: xHCI Host Controller
[35870.554996] C0 [    kworker/0:2, 8829] xhci-hcd xhci-hcd: new USB bus registered, assigned bus number 1
[35870.557212] C0 [    kworker/0:2, 8829] xhci-hcd xhci-hcd: irq 163, io mem 0xf9200000
[35870.561656] C0 [    kworker/0:2, 8829] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[35870.561675] C0 [    kworker/0:2, 8829] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[35870.561691] C0 [    kworker/0:2, 8829] usb usb1: Product: xHCI Host Controller
[35870.561705] C0 [    kworker/0:2, 8829] usb usb1: Manufacturer: Linux 3.4.0-g8035498-01450-g5febb22 xhci-hcd
[35870.561719] C0 [    kworker/0:2, 8829] usb usb1: SerialNumber: xhci-hcd
[35870.562543] C0 [    kworker/0:2, 8829] xHCI xhci_add_endpoint called for root hub
[35870.562557] C0 [    kworker/0:2, 8829] xHCI xhci_check_bandwidth called for root hub
[35870.562988] C0 [    kworker/0:2, 8829] hub 1-0:1.0: USB hub found
[35870.563016] C0 [    kworker/0:2, 8829] hub 1-0:1.0: 1 port detected
[35870.563743] C0 [    kworker/0:2, 8829] xhci-hcd xhci-hcd: xHCI Host Controller
[35870.563769] C0 [    kworker/0:2, 8829] xhci-hcd xhci-hcd: new USB bus registered, assigned bus number 2
[35870.563869] C0 [    kworker/0:2, 8829] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[35870.563885] C0 [    kworker/0:2, 8829] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[35870.563900] C0 [    kworker/0:2, 8829] usb usb2: Product: xHCI Host Controller
[35870.563913] C0 [    kworker/0:2, 8829] usb usb2: Manufacturer: Linux 3.4.0-g8035498-01450-g5febb22 xhci-hcd
[35870.563926] C0 [    kworker/0:2, 8829] usb usb2: SerialNumber: xhci-hcd
[35870.564556] C0 [    kworker/0:2, 8829] xHCI xhci_add_endpoint called for root hub
[35870.564569] C0 [    kworker/0:2, 8829] xHCI xhci_check_bandwidth called for root hub
[35870.565031] C0 [    kworker/0:2, 8829] hub 2-0:1.0: USB hub found
[35870.565060] C0 [    kworker/0:2, 8829] hub 2-0:1.0: 1 port detected
[35870.572421] C0 [        healthd, 257] qpnp_chg_usb_usbin_valid_irq_handler: usbin-valid triggered: 1 host_mode: 1
[35870.873600] C0 [          khubd, 65] usb 1-1: new high-speed USB device number 2 using xhci-hcd
[35870.913669] C0 [          khubd, 65] usb 1-1: New USB device found, idVendor=148f, idProduct=5370
[35870.913689] C0 [          khubd, 65] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[35870.913705] C0 [          khubd, 65] usb 1-1: Product: 802.11 n WLAN
[35870.913718] C0 [          khubd, 65] usb 1-1: Manufacturer: TPlink
[35870.913731] C0 [          khubd, 65] usb 1-1: SerialNumber: 1.0
[35870.914752] C0 [          khubd, 65] usb 1-1: ep 0x81 - rounding interval to 32768 microframes, ep desc says 0 microframes
[35870.918267] C0 [          khubd, 65] usb 1-1: ep 0x1 - rounding interval to 32768 microframes, ep desc says 0 microframes
[35870.918660] C0 [          khubd, 65] usb 1-1: ep 0x2 - rounding interval to 32768 microframes, ep desc says 0 microframes
[35870.918687] C0 [          khubd, 65] usb 1-1: ep 0x3 - rounding interval to 32768 microframes, ep desc says 0 microframes
[35870.919064] C0 [          khubd, 65] usb 1-1: ep 0x4 - rounding interval to 32768 microframes, ep desc says 0 microframes
[35870.919458] C0 [          khubd, 65] usb 1-1: ep 0x5 - rounding interval to 32768 microframes, ep desc says 0 microframes
[35870.919483] C0 [          khubd, 65] usb 1-1: ep 0x6 - rounding interval to 32768 microframes, ep desc says 0 microframes
  • 后來我也了解到,rt5370其實在kernel3.0后就有了支持。但不知道為何不能使用。希望大神賜教。

2015.8.10 20:19 續

  • 逛論壇,發現在github上有內核的源文件,按照網上的說法,rt5370驅動已經在kernel 3.0時已加入了內核,目前小米使用的內核是3.4版本,通過查找,果然發現rt5370驅動在如下目錄中,下一步考慮重新編譯內核,將其添加到內核中。
/linux/tree/master/drivers/net/wireless/rt2x00
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容