如何使用wpa_supplicant及wpa_cli 创建p2p

  • 1. p2p_connect 方式协商P2P
    • 1.1 PIN码方式加入
    • 1.2 PBC方式加入
  • 2. p2p_group_add 方式提前创建Group 组
    • 2.1 PBC方式加入
    • 2.2 PIN码方式加入(from GO)
    • 2.3 PIN码方式加入(from Client)
    • 2.4 Invite方式加入
  • 3. dnsmasq.conf 及 wpa_supplicant.conf 内容
    • 3.1 dnsmasq.conf
    • 3.2 wpa_supplicant.conf

最近在搞linux 系统的p2p,特此简单总结下。

1. p2p_connect 方式协商P2P

使用p2p_connect的方式,其完整命令如下:

wpa_supplicant -B -i wlan0 -c /data/cfg/wpa_supplicant.conf
wpa_cli
p2p_find
p2p_connect  52:7c:85:b2:de:34   pbc go_intent=1    (当go_intent=15时,强制当前设备为GO角色)
p2p_group_remove p2p-wlan0-0

完整示例如下:

[root:/]# wpa_supplicant -B -i wlan0 -c /data/cfg/wpa_supplicant.conf
Successfully initialized wpa_supplicant
[root:/]# wpa_cli
Selected interface 'p2p-dev-wlan0'
// 1. 使能p2p 且允许被其他设备搜索到
> p2p_find
OK
<3>P2P-DEVICE-FOUND 7e:76:68:0e:d7:d9 p2p_dev_addr=7e:76:68:0e:57:d9 pri_dev_type=10-0050F204-5 name='HUAWEI Mate 20 Pro (UD)' config_methods=0x188 dev_capab=0x25 group_capab=0x2b vendor_elems=1 new=1// 2. 当其他设备搜索到当前设备时,会发起连接请求
<3>P2P-GO-NEG-REQUEST 52:7c:85:b2:de:34 dev_passwd_id=4 go_intent=14// 3. 收到连接请求后通过 p2p_connect 连接其mac, 角包为两者协商
> p2p_connect  52:7c:85:b2:de:34   pbc go_intent=1
OK
<3>P2P-FIND-STOPPED// 4. 协商结果,当前设备为 client角色,其他设备为 GO角色
<3>P2P-GO-NEG-SUCCESS role=client freq=5180 ht40=1 peer_dev=52:7c:85:b2:de:34 peer_iface=72:ec:4b:ac:5a:53 wps_method=PBC
<3>P2P-GROUP-FORMATION-SUCCESS
<3>P2P-GROUP-STARTED p2p-wlan0-0 client ssid="DIRECT-UC-HUAWEI Mate 30 Pro" freq=5180 psk=96ffd94980aa6e6d103d01af20a293d5d566bd49e68b29f110e10df537ad7306 go_dev_addr=52:7c:85:b2:de:34 [PERSISTENT]// 5. 断开连接
> p2p_group_remove p2p-wlan0-0
OK
<3>P2P-GROUP-REMOVED p2p-wlan0-0 client reason=REQUESTED

注意,当 go_intent=15 时,说明强制当前设备为Go角色。

> p2p_find
OK
<3>P2P-DEVICE-FOUND 52:7c:85:b2:de:34 p2p_dev_addr=52:7c:85:b2:de:34 pri_dev_type=10-0050F204-5 name='HUAWEI Mate 30 Pro' config_methods=0x188 dev_capab=0x25 group_capab=0x0 vendor_elems=1 new=0<3>P2P-INVITATION-RECEIVED sa=52:7c:85:b2:de:34 go_dev_addr=82:c5:f2:a9:32:1d unknown-network
<3>P2P-GO-NEG-REQUEST 52:7c:85:b2:de:34 dev_passwd_id=4 go_intent=14> p2p_connect  52:7c:85:b2:de:34   pbc go_intent=15
OK
<3>P2P-FIND-STOPPED
<3>P2P-GO-NEG-SUCCESS role=GO freq=5200 ht40=1 peer_dev=52:7c:85:b2:de:34 peer_iface=82:ba:1c:59:35:ba wps_method=PBC
<3>P2P-GROUP-FORMATION-SUCCESS
<3>P2P-GROUP-STARTED p2p-wlan0-2 GO ssid="DIRECT-VZ" freq=5200 passphrase="LRVoCUqG" go_dev_addr=82:c5:f2:a9:32:1d
<3>AP-STA-CONNECTED 82:ba:1c:59:35:ba p2p_dev_addr=52:7c:85:b2:de:34

1.1 PIN码方式加入

Steps 设备1 (Client) 设备2(Go)
1 wpa_cli wpa_cli
2 p2p_find
3 p2p_find
4 p2p_connect 82:ba:1c:59:35:ba pin go_intent=1
示例:10632994
5 p2p_connect 52:7c:85:b2: de:34 10632994 go_intent=15
6 ifconfig p2p-wlan0-0 169.254.108.49 netmask 255.255.0.0 ifconfig p2p-wlan0-0 169.254.108.1 netmask 255.255.0.0
7 ping 169.254.108.1 ping 169.254.108.49

1.2 PBC方式加入

Steps 设备1 (Client) 设备2(Go)
1 wpa_cli wpa_cli
2 p2p_find
3 p2p_find
4 p2p_connect 82:ba:1c:59:35:ba pbc go_intent=1
5 p2p_connect 52:7c:85:b2: de:34 pbc go_intent=14
6 ifconfig p2p-wlan0-0 169.254.108.49 netmask 255.255.0.0 ifconfig p2p-wlan0-0 169.254.108.1 netmask 255.255.0.0
7 ping 169.254.108.1 ping 169.254.108.49

2. p2p_group_add 方式提前创建Group 组

2.1 PBC方式加入

Steps 设备1 (GO) 设备2(Client)
1 wpa_cli wpa_cli
2 p2p_group_add
3 Ctrl-c to exit
4 ifconfig p2p-wlan0-0 169.254.108.1 netmask 255.255.0.0
5 dnsmasq -C /data/bin/dnsmasq.conf --interface=p2p-wlan0-0 --no-dhcp-interface=usb0
6 p2p_find
7 p2p_connect 82:ba:1c:59:35:ba pbc join
8 wpa_cli -i p2p-wlan0-0 wps_pbc Ctrl-c to exit
9 ping 169.254.108.49 ping 169.254.108.1

2.2 PIN码方式加入(from GO)

Steps 设备1 (GO) 设备2(Client)
1 wpa_cli wpa_cli
2 p2p_group_add
3 Ctrl-c to exit
4 wpa_cli -i p2p-wlan0-0 wps_pin any
(shows <pin>,如: 73077947)
5 ifconfig p2p-wlan0-0 169.254.108.1 netmask 255.255.0.0
6 dnsmasq -C /data/bin/dnsmasq.conf --interface=p2p-wlan0-0 --no-dhcp-interface=usb0
7 p2p_find
8 p2p_connect 82:ba:1c:59:35:ba 73077947 join
9 wpa_cli -i p2p-wlan0-0 wps_pbc Ctrl-c to exit
10 ping 169.254.108.49 ping 169.254.108.1

2.3 PIN码方式加入(from Client)

Steps 设备1 (GO) 设备2(Client)
1 wpa_cli wpa_cli
2 p2p_group_add
3 Ctrl-c to exit
4 ifconfig p2p-wlan0-0 169.254.108.1 netmask 255.255.0.0
5 dnsmasq -C /data/bin/dnsmasq.conf --interface=p2p-wlan0-0 --no-dhcp-interface=usb0
6 p2p_find
7 p2p_connect 82:ba:1c:59:35:ba pin join
示例:10632994
8 wpa_cli -i p2p-wlan0-0 wps_pin any 10632994
9 ping 169.254.108.49 ping 169.254.108.1

2.4 Invite方式加入

Steps 设备1 (GO) 设备2(Client)
1 wpa_cli wpa_cli
2 p2p_group_add
3 Ctrl-c to exit
4 ifconfig p2p-wlan0-0 169.254.108.1 netmask 255.255.0.0
5 dnsmasq -C /data/bin/dnsmasq.conf --interface=p2p-wlan0-0 --no-dhcp-interface=usb0
6 p2p_find
7 p2p_invite group=p2p-p2p0-0 peer=82:ba:1c:59:35:ba
8 p2p_connect 52:7c:85:b2: de:34 pbc join
9 wpa_cli -i p2p-wlan0-0 wps_pbc Ctrl-c to exit
9 ping 169.254.108.49 ping 169.254.108.1

3. dnsmasq.conf 及 wpa_supplicant.conf 内容

3.1 dnsmasq.conf

user=root
interface=wlan0 p2p-dev-wlan0
#listen-address=127.0.0.1
dhcp-range=169.254.108.2,169.254.108.51
#server=8.8.8.8

3.2 wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant
#update_config=1
device_name=p2p-5G-test
device_type=10-0050F204-5
config_methods=display push_button keypad virtual_push_button physical_display
p2p_add_cli_chan=1
p2p_go_ht40=1
pmf=1network={ssid="SSID"psk="PASSWORD"key_mgmt=WPA-PSKpriority=1
}network={ssid="DIRECT-p2p-5G-test"bssid=82:c5:f2:a9:32:1dpsk="123456789"proto=RSNkey_mgmt=WPA-PSKpairwise=CCMPauth_alg=OPENmode=3disabled=2
}ap_scan=1
network={ssid="TP-LINK_aaaa"psk="135246789"key_mgmt=WPA-PSKpriority=1
}

详细可参考:《Wi-Fi direct》

如何使用wpa_supplicant及wpa_cli 创建p2p相关推荐

  1. 【转】wpa_supplicant与wpa_cli之间通信过程

    [转]wpa_supplicant与wpa_cli之间通信过程 转自:http://blog.chinaunix.net/uid-26585427-id-4051479.html wpa_suppli ...

  2. wpa_supplicant、wpa_cli的使用

    wpa_supplicant工具包含wpa_supplicant和wpa_cli这2个程序,其中wpa_supplicant程序作为服务端在后台运行,服务wpa_cli客户端的请求,从而实现WiFi的 ...

  3. 【webrtc】所有 transport 的控制器 JsepTransportController:创建p2p传输通道

    webrtc的p2p就是ice p2p通道就是ice通道 传输控制器JsepTransportController 在PC里. JsepTransportController 的 CreateIceT ...

  4. wpa_supplicant与wpa_cli之间通信过程

    wpa_supplicant编译: 1. wpa_supplicant/Android.mk : -- wpa_cli -- wpa_supplicant -- libwpa_client.so 2. ...

  5. Android官方开发文档Training系列课程中文版:连接无线设备之通过WIFI创建P2P连接

    原文地址:http://android.xsoftlab.net/training/connect-devices-wirelessly/wifi-direct.html#permissions Wi ...

  6. wpa_supplicant, wpa_cli用法

    Android系统中对于WIFI的设置集成到了"设置"中,其实跟手动设置差不多.这里介绍下如何手动连接WIFI,以方便以后调试WIFI. 第一步要做的就是要加载WIFI模块驱动了. ...

  7. WiFi Direct 在wpa_supplicant中的流程一(初始化P2P)

    P2P在wpa_supplicant中的初始化流程 WIFI-Driect在WPA_S中的初始化流程: 注册action wpas_p2p_init() 代码段1 wpas_p2p_init() 代码 ...

  8. wpa_supplicant wpa_cli 无线网络配置

    目前可以使用wireless-tools 或wpa_supplicant工具来配置无线网络.请记住重要的一点是,对无线网络的配置是全局性的,而非针对具体的接口. wpa_supplicant是一个较好 ...

  9. 基于wpa_supplicant库的WIFI连接功能实现--wpa_cli命令解析

    从这里开始,就正式进入到主题了,笔者分几节来介绍如何一点点实现基于wpa_supplicant库的WIFI连接功能.最终实现的就是类似于智能手机上的wifi连接界面功能.开发平台是linux3.2.0 ...

最新文章

  1. python做啥用-python主要用于做什么
  2. c# cookie帮助类
  3. Ajax Toolkit 控件学习系列(5) ——CalendarExtender使用
  4. python实用脚本 知乎_停课不停学|38 个免费 Python 项目合集,从小白到老司机!...
  5. React开发(125):ant design学习指南之form中的hasFeedback
  6. css,html走的坑:(1.2)
  7. 介绍一款基于SpringBoot开发OA开源产品
  8. 数据质量才是数据分析的关键
  9. 在 Hibernate 中出现 database product name cannot be null 时怎么解决?
  10. 算法——Java实现栈
  11. Android 开发 修改app应用的名字和图标
  12. 我在舒舍的短租生活之旅
  13. 测试人员的职业规划 --整理标注
  14. flutter 斗音页面
  15. 直方图实现快速中值滤波opencv
  16. 用手写板向计算机输入汉字是什么技术,使用手写板输入文字的简单介绍
  17. python 爬虫 处理429错误
  18. ssh远程连接发送命令行
  19. xp系统禁用wmi服务器,xp中哪些服务是可以关闭的
  20. 小猪佩奇python_python3 案例分享--小猪佩奇

热门文章

  1. 计算机工程学院运动会加油稿50字,运动会加油稿50字(30篇)
  2. 年度盘点丨2017十大最佳科技创新产品!
  3. 0x80073712_win10 1709更新失败提示错误0x80073712怎么办
  4. 人工智能主要是学什么的?
  5. 电力英语及计算机成绩查询入口官网,考试成绩查询入口
  6. C语言+EasyX实现数字雨
  7. BeanCopy 常用工具类
  8. [生存志] 第87节 张仪犀首纵横大战
  9. ENSP华为模拟器:基础命令及简写
  10. js添加和删除元素节点