连接路由器的方式可以有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
更新内核后重启再次执行发现wpa_suplicant已经好了
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
wpa_supplicant执行成功之后,还需要通过DHCP服务器来分配ip地址udhcpc -i wlp1s0
,udhcpc运行时使用默认的脚本”/usr/share/udhcpc/default.script”,然后通过ifconfig就可以看到wlp1s0的ip地址已经配置好了,由于之前通过wpa_supplicant连接的External-internet是可以上外网的,那么现在开发板也可以上外网了。ping www.baidu.com是可以ping通的。