在NanoPi M1下使用小度Wi-Fi
M1的固件nanopi-m1-debian-sd4g-20160907.img.zip已經(jīng)自帶了小度Wi-Fi的驅動——mt7601u们衙,但是沒法即插即用,不知道為什么醒叁。為了使用小度Wi-Fi需要進行一些設置谎倔。
因為大多數(shù)講Wi-Fi的文章都只是列了一下配置,然后就OK北戏,但是自己不成功的話尿赚,無從排查問題督惰。本文嘗試引入幾個命令來幫助排查問題察皇,雖然我也是對整個配置過程一知半解茴厉,但了解了這幾個命令還是有很大幫助。
1. lsusb
插上小度Wi-Fi什荣,我們首先需要確認是不是被系統(tǒng)識別了矾缓,那就需要用lsusb
,首先用如下命令安裝lsusb
:
sudo apt-get install usbutils
然后執(zhí)行lsusb
輸出如下:
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 002: ID 2955:1001
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
如果有2955:1001稻爬,則表示小度Wi-Fi被識別了嗜闻,對于其他的設備,可以通過該命令在查看設備的Device ID桅锄。
2. dmesg
dmesg可以用來查看內核輸出的信息琉雳,我們用它來查看驅動是否加載了。插上小度Wi-Fi后竞滓,在終端中執(zhí)行dmesg
命令咐吼,如果驅動加載正常在最后會有如下輸出:
[ 142.050149] usb 2-1: new high-speed USB device number 2 using sunxi-ehci
[ 141.449845] cfg80211: World regulatory domain updated:
[ 141.455614] cfg80211: DFS Master region: unset
[ 141.460469] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time)
[ 141.471300] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
[ 141.480206] cfg80211: (2457000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
[ 141.489085] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm), (N/A)
[ 141.498000] cfg80211: (5170000 KHz - 5250000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (N/A)
[ 141.508545] cfg80211: (5250000 KHz - 5330000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (0 s)
[ 141.519081] cfg80211: (5490000 KHz - 5730000 KHz @ 160000 KHz), (N/A, 2000 mBm), (0 s)
[ 141.528078] cfg80211: (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)
[ 141.530052] usb 2-1: reset high-speed USB device number 2 using sunxi-ehci
[ 141.544599] cfg80211: (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm), (N/A)
[ 141.683042] mt7601u 2-1:1.0: ASIC revision: 76010001 MAC revision: 76010500
[ 141.699552] mt7601u 2-1:1.0: Firmware Version: 0.1.00 Build: 7640 Build time: 201302052146____
[ 142.113339] mt7601u 2-1:1.0: Warning: unsupported EEPROM version 0d
[ 142.120500] mt7601u 2-1:1.0: EEPROM ver:0d fae:00
[ 142.126447] mt7601u 2-1:1.0: EEPROM country region 01 (channels 1-13)
[ 142.372181] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[ 142.374575] usbcore: registered new interface driver mt7601u
也可以使用dmesg | grep mt7601
來精簡輸出:
? [ 10.030133] mt7601u 6-1:1.0: ASIC revision: 76010001 MAC revision: 76010500
? [ 10.495110] mt7601u 6-1:1.0: Warning: unsupported EEPROM version 0d
? [ 10.507867] mt7601u 6-1:1.0: EEPROM ver:0d fae:00
? [ 10.527104] mt7601u 6-1:1.0: EEPROM country region 01 (channels 1-13)
? [ 11.465717] usbcore: registered new interface driver mt7601u
只要看到usbcore: registered new interface driver mt7601u
就表示小度Wi-Fi已經(jīng)被識別出來了并且加載了吹缔。
3. lsmod 和 modinfo
假入沒有類似輸出商佑,我們可能要進一步確認mt7601u是不是加載了,那就需要用lsmod
厢塘,正常來說會輸出如下內容:
Module Size Used by
mt7601u 73012 0
mac80211 495881 1 mt7601u
cfg80211 470289 2 mac80211,mt7601u
mali_drm 5741 1
mali 194124 0
ump 37786 3 mali
rfcomm 21114 4
bnep 9149 2
hci_uart 11776 0
btbcm 5304 1 hci_uart
bluetooth 300113 10 bnep,btbcm,hci_uart,rfcomm
compat 25372 7 bnep,cfg80211,mac80211,mt7601u,hci_uart,rfcomm,bluetooth
可以看到mt7601已經(jīng)加載了茶没,但是沒用啊。我們在用sudo modinfo mt7601u
來查看驅動的具體信息晚碾,正常輸出如下:
filename: /lib/modules/3.4.39-h3/updates/drivers/net/wireless/mediatek/mt7601u/mt7601u.ko
version: backported from Linux (v4.4.2-0-g1cb8570) using backports v4.4.2-1-0-gbec4037
license: GPL
firmware: mt7601u.bin
srcversion: 06486A44A19698210D54450
alias: usb:v7392p7710d*dc*dsc*dp*ic*isc*ip*
alias: usb:v2A5Fp1000d*dc*dsc*dp*ic*isc*ip*
alias: usb:v2955p1001d*dc*dsc*dp*ic*isc*ip*
alias: usb:v2955p0001d*dc*dsc*dp*ic*isc*ip*
alias: usb:v2717p4106d*dc*dsc*dp*ic*isc*ip*
alias: usb:v2001p3D04d*dc*dsc*dp*ic*isc*ip*
alias: usb:v148Fp760Dd*dc*dsc*dp*ic*isc*ip*
alias: usb:v148Fp760Cd*dc*dsc*dp*ic*isc*ip*
alias: usb:v148Fp760Bd*dc*dsc*dp*ic*isc*ip*
alias: usb:v148Fp760Ad*dc*dsc*dp*ic*isc*ip*
alias: usb:v148Fp7601d*dc*dsc*dp*ic*isc*ip*
alias: usb:v13D3p3434d*dc*dsc*dp*ic*isc*ip*
alias: usb:v13D3p3431d*dc*dsc*dp*ic*isc*ip*
alias: usb:v0E8Dp760Bd*dc*dsc*dp*ic*isc*ip*
alias: usb:v0E8Dp760Ad*dc*dsc*dp*ic*isc*ip*
alias: usb:v0B05p17D3d*dc*dsc*dp*ic*isc*ip*
depends: mac80211,compat,cfg80211
vermagic: 3.4.39-h3 SMP preempt mod_unload ARMv7 p2v8
注意其中的alias抓半,其中的usb:vXXXXpXXXd
這部分實際上對應的是USB設備的deviceID,所以需要看一下有沒有小度Wi-Fi的ID:2955:1001格嘁,如果沒有笛求,那么你需要自己編譯mt7601來支持了,M1自帶的是支持小度Wi-Fi的。所以一切正常的話探入,完全可以驅動起來狡孔。對于其他Wi-Fi設備,可以通過lsusb來獲取DeviceID來查看驅動是否支持蜂嗽。
4. ip addr
雖然mt7601支持小度Wi-Fi苗膝,內核也提示已經(jīng)創(chuàng)建了接口,但是通過sudo ifconfig
還是看不到wlan0植旧。這時我們需要用sudo ip addr
來確認是不是已經(jīng)創(chuàng)建wlan0了還是有其他的網(wǎng)絡接口(實際官方的mt7601驅動創(chuàng)建的是ra0網(wǎng)絡接口)辱揭,假設你使用過其他Wi-Fi設備,此時為小度創(chuàng)建的接口可能是wlan1病附,這個需要確認一下问窃。
7: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
可以根據(jù)link/ether后的Mac地址:xx:xx:xx:xx:xx:xx來確認哪個接口是小度Wi-Fi。
如果這里沒有小度Wi-Fi輸出的話完沪,說明驅動還是有問題泡躯,但是我也不知道該從哪里去查了。
5. 配置小度Wi-Fi
到此為止丽焊,我們基本就可以定位小度Wi-Fi的驅動問題了较剃。下一步就是配置來啟用小度Wi-Fi。
5.1 啟用wlan0
這里我們需要根據(jù)ip addr的輸出來確認是wlanX技健。編輯/etc/network/interfaces
文件写穴,增加如下內容:
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
重啟系統(tǒng)或者使用sudo /etc/init.d/networking restart
來重啟網(wǎng)絡。
這時使用sudo ifconfig
應該可以看到wlan0了雌贱。
5.2 連接無線網(wǎng)絡
編輯/etc/wpa_supplicant/wpa_supplicant.conf
文件增加如下內容:
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="XXXXXX"
psk="YYYYYY"
}
其中是XXXXXX
你要連的無線網(wǎng)絡名稱啊送,YYYYYY
是網(wǎng)絡的密碼。
然后執(zhí)行如下命令來連接網(wǎng)絡:
sudo wpa_supplicant -B -iwlan0 /etc/wpa_supplicant/wpa_supplicant.conf
此時欣孤,應該還是沒有網(wǎng)絡馋没,需要使用如下命令來開關一下wlan0
sudo ifdown wlan0 # 關閉wlan0
sudo ifup wlan0 # 啟用wlan0
sudo ifconfig # 應該可以看到wlan0已經(jīng)獲取IP了
5.3 開機連接Wi-Fi
如果想要開機時自動連接Wi-Fi,需要編輯/etc/network/interfaces
文件降传,在5.1中增加的內容之后加入如下內容:
pre-up /sbin/wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf
post-down killall -q wpa_supplicant
至此篷朵,小度Wi-Fi就完全配置完成了。
最后啰嗦兩句婆排,從樹莓派2代開始声旺,就一直想要用上小度Wi-Fi,但一直以來都是以失敗告終段只,幾乎無從查找原因腮猖。這次又有時間折騰,先是編譯了M1的內核赞枕,接著又自己編譯了mt7601的驅動澈缺,其中經(jīng)歷又頗為曲折坪创,但是總算是理清了大致的脈絡,然后發(fā)現(xiàn)M1是默認支持小度的姐赡,但是卻沒有詳細的設置教程误堡,而且debian桌面上的wicd也是無法識別,所以又各種搜索雏吭,總算是驅動起來了锁施,心中甚是暢快。但回顧起來又不免感慨杖们,正所謂授人以魚不如授人以漁悉抵,能搜的帖子大多都是“魚”,單單是4中講到的確認接口的問題估計就會讓好多人無法設置成功摘完,因為很可能是wlan1而不是wlan0姥饰。雖然本文遠未到“授人以漁”的程度,但多少提供了一些命令來排查各個環(huán)節(jié)孝治,盡管是以M1為基礎環(huán)境列粪,但在樹莓派、香蕉派等上仍適用谈飒。希望各位能用好自己手中的小度Wi-Fi岂座、米Wi-Fi和360Wi-Fi等。