K230设置自动连接wifi

less than 1 minute read

Published:

按照K230 linux WiFi使用指南 设置K230开发板的wifi密码. 感觉流程可以精简一些, 实现开机自动连接Wifi.

第一步, 启用无线网卡. ifconfig 或者 ip 命令都可以用, ifconfig 是相对较老的命令

# ifconfig wlan0 up
ip link set wlan0 up

第二步, 启动wpa_supplicant:

wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf

-B的作用是后台运行, -i指定无线网卡, -c指定配置文件. 和wifi相关的配置都可以在配置文件中写好.

所以在第二步前, 需要先准备一下配置文件. 嘉楠提供了默认的配置文件:

ctrl_interface=/var/run/wpa_supplicant
ap_scan=1

network={
  key_mgmt=NONE
}

这里没有设置wifi的名称和密码, 只能用来连开放的无线网络. 如果要设置wifi的名称和密码的话, 可以先:

wpa_passphrase wifi_test 12345678
network={
        ssid="wifi_test"
        #psk="12345678"
        psk=5c86769b524f416c47ece4465c526cf24e20ce3e565618f4a081130ae22402cc
}

wpa_passphrase生成加密的密码, 这样可以避免wifi密码泄漏.

接着写配置文件的时候可以写多个wifi名称和密码, 并且可以指定优先级, 以应多多种场景:

ctrl_interface=/var/run/wpa_supplicant
ap_scan=1

network={
    ssid="HomeWiFi"
    psk="home1234"
    priority=10
}

network={
    ssid="OfficeWiFi"
    psk="work5678"
    priority=5
}

network={
    ssid="MyPhone"
    psk="87654321"
    priority=1
}

有了wpa_supplicant的配置之后, 还需要启动udhcpc来获取ip地址:

udhcpc -i wlan0 -q

最后, 这整个流程也都可以写在一个脚本里, 比如/etc/init.d/wifi_connect.sh, 然后在系统启动的过程中调用这个脚本, 以实现开机自动启动:

#!/bin/sh
WLAN_IFACE="wlan0"
CONF_FILE="/etc/wpa_supplicant.conf"
ip link set $WLAN_IFACE up
wpa_supplicant -B -i $WLAN_IFACE -c $CONF_FILE
sleep 3
udhcpc -i $WLAN_IFACE -q

然后在/etc/init.d/rcS 中的最后调用这个脚本:

/etc/init.d/wifi_connect.sh &

这样系统启动的时候就会自动连wifi啦.