导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    【FAQ】全志R系列wpa_supplicant和wpa_cli简介

    其它全志芯片讨论区
    r329 r328 r818 faq 技术支持
    1
    1
    2219
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • q1215200171
      budbool LV 9 最后由 编辑

      问题背景

      硬件:R系列芯片
      软件:Tina

      问题简述

      说明:该FAQ旨在记录wpa_supplicant和wpa_cli的一些基础知识,方便在Tina系统上做网络联通性的排查。

      问题分析

      wpa_supplicant是一个连接、配置WiFi的工具,它主要包含wpa_supplicant与wpa_cli两个程序。 可以通过wpa_cli来进行WiFi的配置与连接,前提要保证wpa_supplicant正常启动。
      相当于wpa_supplicant 是服务端,wpa_cli 是客户端。

      1.wpa_supplicant

      启动wpa_supplicant应用
      wpa_supplicant -i wlan0 -Dnl80211 -c/etc/wifi/wpa_supplicant.conf -O /etc/wifi/sockets -B
      wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wifi/wpa_supplicant.conf -B
      wpa_supplicant -B -iwlan0 -c/etc/wifi/wpa_supplicant.conf -Dwext
      -D 驱动程序名称(可以是多个驱动程序:nl80211,wext)
      -i 接口名称
      -c 配置文件
      -B 在后台运行守护进程

      配置文件 /etc/wpa_supplicant.conf文件里,添加下面代码:
      ctrl_interface=/var/run/wpa_supplicant //
      update_config=1 // 强制更新覆盖配置 
      ctrl_interface指向的是一个目录,在这个目录中默认会生成一个文件/var/run/wpa_supplicant/wlan0,这是local socket address,相当于UNIX Domain Socket,程序和后台程序wpa_supplicant进行通信(其实是wpa_supplicant作为后台服务程序是通过本地socket和客户端进行通信的)
      update_config = 1时会在(客户端发送SAVE_CONFIG命令)更新这个配置文件。

      Tina上wpa_supplicant的启动是放在/etc/init.d/wpa_supplicant自启动脚本中的。

      2.wpa_cli

      wpa_cli 是客户端,用来进行WiFi的配置与连接。

      启动wpa_cli应用

      wpa_cli 有命令和交互的方式进行操作
      wpa_cli -i wlan0 scan   //搜索附件wifi热点
      wpa_cli -i wlan0 scan_result   //显示搜索wifi热点
      wpa_cli -i wlan0 status //当前WPA/EAPOL/EAP通讯状态
      wpa_cli -i wlan0 ping //pings wpa_supplicant
      

      添加新的连接

      wpa_cli -i wlan0 add_network //添加一个网络连接,会返回
      wpa_cli set_network ssid ‘“name”’ //ssid名称
      wpa_cli set_network psk ‘“psk”’  //密码
      wpa_cli set_network scan_ssid 1
      wpa_cli set_network priority 1 //优先级
      

      保存连接

      wpa_cli -i wlan0 save_config //信息保存到默认的配置文件中,前面提到的/etc/wpa_supplicant.conf
      

      断开连接

      wpa_cli -i wlan0 disable_network
      

      连接已有连接

      wpa_cli -i wlan0 list_network //列举保存过得连接
      wpa_cli -i wlan0 select_network //连接指定的ssid
      wpa_cli -i wlan0 enable_network //使能制定的ssid
      

      网络连接成功的配置文件示例

      ctrl_interface=/var/run/wpa_supplicant/
      ap_scan=1
      network={
      scan_ssid=1
      ssid="xxxx"
      psk="xxxx"
      bssid=
      priority=2
      }
      

      例如:

      wpa_cli -i wlan0 scan;
      wpa_cli -i wlan0 scan_result;
      wpa_cli -i wlan0 add_network;
      wpa_cli -i wlan0 set_network 0  ssid '"AW-PDC-PD2-fly2.4g"';
      wpa_cli -i wlan0 set_network 0  key_mgmt WPA-PSK;
      wpa_cli -i wlan0 set_network 0  psk '"xxxxxxxx"';
      wpa_cli -i wlan0 save_config;
      wpa_cli -i wlan0 select_network 0;
      wpa_cli -i wlan0 enable_network 0;
      wpa_cli -i wlan0 list_network;
      wpa_cli -i wlan0 status;
      

      问题记录

      • 错误1
        Successfully initialized wpa_supplicant
        ioctl[SIOCSIWENCODEEXT]: Invalid argument
        ioctl[SIOCSIWENCODEEXT]: Invalid argument

      原来在命令中sudo wpa_supplicant -B -D n180211,wext -i wlo1 -c /home/wpa_supplicant.cfg
      错把nl80211写成n180211,注意是数字1与字母l的区别。

      • 错误2
        wpa supplicant: No network configuration found for current AP
        说明配置文件写的不对,尤其从网上复制过来时常有看不见的tab字符等。
        解决办法:从Archlinux文档上复制了一份格式正确的配置,再改一改就OK了

      • 错误3
        ctrl_iface exists and seems to be in use - cannot override it
        Delete ‘/var/run/wpa_supplicant/wlo1’ manually if it is not used anymore
        Failed to initialize control interface ‘/var/run/wpa_supplicant’.
        You may have another wpa_supplicant process already running or the file was
        left by an unclean termination of wpa_supplicant in which case you will need
        to manually remove this file before starting wpa_supplicant again.
        系统已经存在打开的多个wpa_supplicant实例,执行一下sudo killall wpa_supplicant杀死所有wpa_supplicant即可。

      • 错误4
        Successfully initialized wpa_supplicant
        [ 2093.037373] ieee80211_do_open: vif_type=2, p2p=0, ch=3, addr=34:0f:51:ac:5f:97
        [ 2093.045662] [STA] !!!xradio_vif_setup: id=0, type=2, p2p=0, addr=34:0f:51:ac:5f:97
        [ 2093.055088] [AP_WRN] BSS_CHANGED_ASSOC but driver is unjoined.
        nl80211: deinit ifname=wlan0 disabled_11b_rates=0
        [ 2093.088882] [STA_WRN] !!! xradio_remove_interface: vif_id=0
        wlan0: Failed to initialize driver interface

      1 条回复 最后回复 回复 引用 分享 1
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • 1 / 1
      • First post
        Last post

      Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

      行为准则 | 用户协议 | 隐私权政策