图片
某次米*節時,Bear受約團購大量的小米隨身wifi
一部分送人,一部份正在使用,當然有一部份放在櫃子裡生灰塵....
恰好入手RPi2,乾脆拿它(小米隨身wifi)來當wifi client
不用則以,一用卻發現有夠麻煩的QAQ
為什麼麻煩呢?
因為Linux kernel沒有支援小米隨身wifi!!!
(或說沒有支援MTK MT7601U,這個wifi晶片)

所幸,MTK有釋出MT7601U的驅動程式原始碼
有程式碼就好辦,就靠gcc編一下吧

图片
>>點我前往MTK 驅動程式載點<<
各位可以在上面網址填資料下載,或是等會兒用指令(另有網址提供)

好了,讓我們開始進行吧
首先,接上螢幕、鍵盤、滑鼠本機操作;或是SSH連線操作都可

再來,安裝編譯工具

$ sudo pacman -Syy
$ sudo pacman -S gcc make curl
對了,編譯需要linux-headers
如果跟Bear一樣用Arch linux就很簡單的用pacman安裝
若是Raspbian可能就得自己編或是到這裡下載試試看
(要裝目前使用的linux kernel版本,別裝錯了)

繼續介紹Arch liunx安裝linux-headers

$ sudo pacman -S dkms linux-headers
別忘了,要選擇目前kernel版本

接著,下載MT7601U驅動程式碼

$ cd
$ curl -L -o DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2 https://www.dropbox.com/s/u6o2xgjcseb28ld/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2?dl=1
解壓縮吧,它是用bzip2,參數要用對哦
$ tar -jxvf ./DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2
畢竟這是MTK客製給小米產品
在編譯前要修改程式碼以便符合小米隨身wifi
用lsusb查看小米隨身wifi的代號吧
沒意外,應該是 2717:4106
$ lsusb
$ cd ./DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/
$ vim ./common/rtusb_dev_id.c
在ifdef MT7601U下面補上
{USB_DEVICE(0x2717,0x4106)}, /* XiaoMi wifi */
程式碼還有兩處要改
一處是因為Arch linux採用gcc的版本是4.9
有個地方gcc4.8是ok的,而4.9卻變成了Error,修改之
$ vim ./sta/sta_cfg.c
第5766行,在vim裡可用 " / " 來搜尋
ex: /__DATE__
snprintf(extra, size, "Driver version-%s, %s %s\n", STA_DRIVER_VERSION, __DATE__, __TIME__ );
改成
snprintf(extra, size, "Driver version-%s, (date and time removed for sanity)\n", STA_DRIVER_VERSION );
參考資料
另一處則是有地方的變數沒有宣告
$ vim ./os/linux/rt_linux.c
第1121、1122行,可用 " /current_fsuid() " 尋找
pOSFSInfo->fsuid = current_fsuid();
pOSFSInfo->fsgid = current_fsgid();
改成
pOSFSInfo->fsuid = (int )&current_fsuid();
pOSFSInfo->fsgid = (int )&current_fsgid();
改完就可以開始編code、安裝跟啟用了
使用ip addr檢查是否有抓到網卡(ra0)
$ make
$ sudo make install
$ sudo modprobe mt7601Usta
$ ip addr
大功告成,但是卻有一個問題
因為有用到linux-headers
可能每次更新linux-kernel就得重編一次....
很麻煩QAQ

接下來呢?
下篇將會介紹如何用無線網卡上網