网络配置

WIFI

目前通过wpa_supplicant工具来配置无线网络,这是一个连接、配置WIFI的工具,它主要包含wpa_supplicantwpa_cli两个程序。

命令行配网

WIFI使能

echo 1 >/sys/class/rkwifi/driver
ifconfig wlan0 up

成功后,执行ifconfig能看到wlan0 节点

启动wpa_supplicant进程

wpa_supplicant -B -i wlan0 -c /data/cfg/wpa_supplicant.conf

如果/data/cfg/wpa_supplicant.conf文件不存在就创建,添加如下配置项:

vi /data/cfg/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1

通过wpa_cli配置WiFi

常用命令:

wpa_cli -i wlan0 scan             // 搜索附近wifi网络
wpa_cli -i wlan0 scan_result      // 打印搜索wifi网络
wpa_cli -i wlan0 add_network      // 添加一个网络连接

如果要连接加密方式是[WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS] (wpa加密),wifi名称是name,wifi密码是:psk。操作如下:

wpa_cli -i wlan0 set_network 0 ssid '"name"'
wpa_cli -i wlan0 set_network 0 psk '"psk"'
wpa_cli -i wlan0 set_network 0 key_mgmt WPA-PSK
wpa_cli -i wlan0 enable_network 0    //使能WiFi

如果要连接加密方式是[WEP][ESS] (wep加密),wifi名称是name,wifi密码是psk。操作如下:

wpa_cli -i wlan0 set_network 0 ssid '"name"'
wpa_cli -i wlan0 set_network 0 key_mgmt NONE
wpa_cli -i wlan0 set_network 0 wep_key0 '"psk"'
wpa_cli -i wlan0 enable_network 0

如果要连接加密方式是[ESS] (无加密),wifi名称是name。操作如下:

wpa_cli -i wlan0 set_network 0 ssid '"name"'
wpa_cli -i wlan0 set_network 0 key_mgmt NONE
wpa_cli -i wlan0 enable_network 0

使能保存WIFI连接信息

wpa_cli -i wlan0 set update_config 1

保存WIFI连接信息

wpa_cli -i wlan0 save_config

连接已有的连接

wpa_cli -i wlan0 list_network        // 列举所有保存的连接
wpa_cli -i wlan0 select_network 0     // 连接第1个保存的连接
wpa_cli -i wlan0 enable_network 0      // 使能第1个保存的连接

关闭WiFi

ifconfig wlan0 down

或直接修改配置文件

修改如下文件:

vi /data/cfg/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1

添加如下配置项

network={
ssid="WiFi-AP"		// WiFi 名字
psk="12345678"		// WiFi 密码
key_mgmt=WPA-PSK	// 加密方式
# key_mgmt=NONE		// 不加密
}

重新读取上述配置:

wpa_cli reconfigure

重新连接:

wpa_cli reconnect

手机配网

手机配网方式多样,可以通过Softap配网,也可以通过蓝牙配网。

这里介绍ROC-RK3308-CC自带的配网方式。

Softap 配网

配网APP下载:RkEcho.apk,同时在SDK里面也能找到:SDK/external/app/RkEcho.apk

Buildroot 配置:

_images/softapserver_config.png

源码开发目录:

/external/softapServer/ -- WIFI  APK 端相关操作
/external/softapDemo/ -- WiFi 相关操作

准备手机安装 apk RkEcho.apk,这是必须的。

然后确保 wifi server 进程启动

wpa_supplicant -B -i wlan0 -c /data/cfg/wpa_supplicant.conf

配网流程:

● 开启热点,执行命令如下:

softapServer Rockchip-Echo-123

_images/wifi_server.png

注意:wifi热点的命名方式必须为 Rchip-Echo-xxx

● 热点开启完毕后,打开手机,进入手机自身的设置,点击连接刚刚设置好的热点,如:Rckchip-Echo-123。

● 连接成功后,打开手机已经安装好的apk,进行如下操作:

打开 apk,点击 wifi setup -> CONFIRM -> 确认 -> wifi 列表 -> 点击你要连接的网络名字 -> 输入密码 -> 点击确认。

_images/network_conf.png

● 听到语音提示,网络已连接,就可以开始使用啦!

● 检查网络是否连通:

ping www.baidu.com

● 注意要点:

  1. softspServer Rockchip-Echo-123 执行后命令行是无法退出的,直到配网完成

  2. 名字千万不要写错,否则 apk 无法进入确认界面(Rockchip-Echo-xxx)

  3. 此功能暂时只支持Android手机。

以太网

以太网使能

ifconfig eth0 up

IP地址设置

动态获取IP地址

WIFI动态获取IP地址,执行下面指令:

udhcpc -i wlan0 -R

以太网动态获取IP地址,执行下面指令:

udhcpc -i eth0 -R

设置静态IP地址

以太网设置静态IP步骤如下:

ip addr add 168.168.100.78/255.255.0.0 dev eth0 #ip地址/子网掩码
ip route flush dev eth0
ip route add 168.168.0.1 dev eth0		#网关
ip route add default via 168.168.0.1 dev eth0 #添加默认路由
echo -e "nameserver 114.114.114.114\nnameserver 8.8.8.8" > /userdata/resolv.conf #设置DNS

WIFI设置静态IP步骤同上。