天天看點

讓linux開發闆聯網

連接配接路由器的方式可以有iwconfig或者通過wpa_supplicant,因為大部分路由器的加密方式是WPA,是以因為加密方式為 WPA-PSK 是以得用 wpa_supplicant 而不能使用 iwconfig wlan0 key xxx 形式,iwconfig key方式适用于WEP和不加密的方式。

iwconfig發現wlp1s0 no wireless extensions

root@imx8mqevk:~# iwconfig
wlp1s0 no wireless extensions      

解決辦法是在核心中添加相應的支援,如下:

Networking Support
    Wireless
        cfg80211 wireless extensions compatibility      

之後就好了

root@imx8mqevk:~# iwconfig
wlp1s0    IEEE 802.11  ESSID:off/any
          Mode:Managed  Access Point: Not-Associated   Tx-Power=0 dBm
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:on      

wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
        ssid="External-Internet"
        #psk="xxxx"
        psk=992194d7a6158009bfa25773108291642f28a0c32a31ab2556a15dee97ef0dbb
}      

ctrl_interface指定一個目錄,在這個目錄下wap_supplicant會生成一個wlan0類似的socket檔案,這個socket檔案wpa_cli需要使用到,wpa_cli通過”-p 這個目錄”來找到這個socket檔案

network=是無線接入點的具體配置,這部分内容可以通過​

​wpa_passphrase <ssid> [passphrase]​

​生成,例如:

$ wpa_passphrase TPLINK 12345678  
network={  
    ssid="TPLINK"  
    #psk="12345678"
    psk=992194d7a6158009bfa25773108291642f28a0c32a31ab2556a15dee97ef0dbb  
}      

ssid,接入點名稱

scan_ssid=1,如果無線接入點是隐藏的,這個就必須要

psk,是加密後的密碼

wpa_supplicant連接配接無線網

​wpa_supplicant -B -i wlp1s0 -c wpa_supplicant.conf -D nl80211,wext​

​​

會出現錯誤”rfkill: Cannot open RFKILL control device”

因為大多數時候核心中沒有配置rfkill,是以就沒有/dev/rfkill裝置節點,解決辦法就是核心中選上CONFIG_RFKILL

root@imx8mqevk:~# wpa_supplicant -B -i wlp1s0 -c wpa_supplicant.conf -D nl80211,wext
Successfully initialized wpa_supplicant
[ 2172.902427] wlp1s0: authenticate with a4:6c:2a:46:cb:9b
[ 2172.976340] wlp1s0: send auth to a4:6c:2a:46:cb:9b (try 1/3)
[ 2172.983279] wlp1s0: authenticated
[ 2172.992765] wlp1s0: associate with a4:6c:2a:46:cb:9b (try 1/3)
[ 2173.070361] wlp1s0: RX AssocResp from a4:6c:2a:46:cb:9b (capab=0x11 status=0 aid=159)
[ 2173.081233] wlp1s0: associated      

udhcpc