imx7通过wpa_cli使用wifi模块

    现使用的系统已经支持了当前使用的wifi模块,内含驱动,所以没有做任何更改,假设各位驱动已支持或移植完成。

wpa_supplicant是什么?

    wpa_supplicant是适用于Linux,BSD,Mac OS X和Windows的WPA请求者,支持WPA和WPA2(IEEE 802.11i / RSN)。它适用于台式机/笔记本电脑和嵌入式系统,就是一个无线网卡的管理工具。

    使用wpa_cli命令前,必须先开启 wpa_supplicant服务,使用命令:

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

    命令参数说明如下: 

wpa_supplicant [-BddhKLqqstuvW] [-P<pid file>] [-g<global ctrl>] \

        -i<ifname> -c<config file> [-C<ctrl>] [-D<driver>] [-p<driver_param>] \

        [-b<br_ifname>] [-f<debug file>] \

        [-o<override driver>] [-O<override ctrl>] \

        [-N -i<ifname> -c<conf> [-C<ctrl>] [-D<driver>] \

        [-p<driver_param>] [-b<br_ifname>] ...]

    各个选项及其含义:

     -b = optional bridge interface name  //增加网桥名称

     -B = run daemon in the background //后台执行

     -c = Configuration file //附加配置文件,即根据配置文件执行操作

     -C = ctrl_interface parameter (only used if -c is not) //控制网口参数

     -i = interface name //网口名称

     -d = increase debugging verbosity (-dd even more) //增加调试信息输出

     -D = driver name (can be multiple drivers: nl80211,wext) //驱动名称

     -g = global ctrl_interface //全局网口配置

     -K = include keys (passwords, etc.) in debug output //在debug输出中包含keys

     -t = include timestamp in debug messages //将各个debug信息前输出时间标签

     -h = show this help text //显示帮助信息

     -L = show license (GPL and BSD) //显示license

     -o = override driver parameter for new interfaces //覆盖driver参数

     -O = override ctrl_interface parameter for new interfaces //覆盖ctrl_interface参数

     -p = driver parameters //携带驱动参数

     -P = PID file //进程文件

     -q = decrease debugging verbosity (-qq even less) //在debug中不输出指定参数

     -v = show version //显示版本信息

     -W = wait for a control interface monitor before starting //启动前等待控制接口

     -N = start describing new interface //启动对新接口的描述

    其中 -D(驱动):

    nl80211 = 802.11 netlink cfg80211取代wext

     wext = Linux wireless extensions (generic)

     hostap = Host AP driver (Intersil Prism2/2.5/3)

     atmel = ATMEL AT76C5XXx (USB, PCMCIA)

     wired = Wired Ethernet driver

    其中,-c选项的配置文件保存了wifi的信息,包括账户、密码、加密方式、优先级等:

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
update_config=1
network={
key_mgmt=WPA-PSK //(NONE/WEP/WPA(WPA2)这三种加密方式)
ssid="CTC"
psk="12345678"
priority=7
}

    此时,wpa_supplicant就算配置好了,就可以使用wpa_cli命令进行配置,wpa_cli有交互式和命令行式两种:

命令行操作如下:

  • rfkill unblock all //开启射频
  • ip link set wlan0 up //开启wifi
  • wpa_cli //进入交互模式
  • > scan //扫描可接入网络
  • > scan_result //返回扫描结果
  • > add_network //添加新的网络,会回复一个编号,之后的操作都针对这个编号操作,比如此时回复 1 ,下面操作都使用1
  • > set_network 1 "ssid" //"网络名"
  • > set_network 1 "psk" //"网络密码"
  • > list_networks //列出当前配置网络
  • > select_network 1 //根据编号选择想要连接的网络
  • > remove_network 0 //移出不使用的网络
  • > enable_network 1 //使能这个网络配置
  • > status //查看当前网络状态
  • > save_config //保存当前网络配置
  • > quit //退出交互模式
  • $ udhcpc -i wlan0 //连接上AP后,自动获取网络
  • 后续操作:
  • > reconnect //重连当前选择wifi
  • > disconnect //断开当前选择wifi的连接
  • > disable_network //关闭wifi 

在使用命令行模式时,要特别注意对账号密码的处理。

  •  网络和密码需要添加双引号,双引号还要加斜杠或者单引号
  • wpa_cli -i wlan0 set_network 1 ssid '"CTC"' (-i wlan0 只有一个wifi网络时可加可不加)
  • wpa_cli  set_network 1 ssid \"CTC\"
  • wpa_cli  set_network 0 psk '"12345678"'
  • wpa_cli  set_network 0 psk \"12345678\"
  • 如果有特殊符号,特殊符号也需要处理,比如网络账户为:cc's net
  • 那么使用命令行就需要这样处理:wpa_cli set_network 1 ssid \"cc\'s net\"

至此,无线网络就可以正常使用。

发布了123 篇原创文章 · 获赞 133 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/baidu_33879812/article/details/100079946