天天看点

让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