【问题标题】:Wifi P2P while maintaining a Wifi connection on rasperry pi 3 Raspbian using wpa_supplicantWifi P2P,同时使用 wpa_supplicant 在树莓派 3 Raspbian 上保持 Wifi 连接
【发布时间】:2017-07-29 22:19:13
【问题描述】:

我对这个话题很幼稚,所以请原谅我的任何愚蠢的回答。 我想通过 Wifi Direct(或 P2P)将我的树莓派 3 连接到我的 android 手机,同时保持其正常的 wifi 连接。每当我运行 wpa_cli 命令时,它都会断开正常的 wifi 连接,而 P2P 命令工作正常。我知道这是可能的,因为所有最近的 android 都具有此功能。我为此尝试了很多互联网搜索,但似乎没有人讨论这个问题。我的 wpa_supplicant.conf 是 -

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
device_name=RPi_3
device_type=1-0050F204-1
country=GB

network={
        ssid="Sarthak"
        psk="sam.s.home_9h"
        key_mgmt=WPA-PSK
}

冷启动后,我通常开始使用 wpa_cli 而没有任何先前的 wpa_supplicant 命令,所以这可能是问题。您可能已经判断出我的知识有多么少,所以请简单解释一下为什么会发生这种情况。

【问题讨论】:

    标签: linux wifi-direct wifip2p wpa-supplicant


    【解决方案1】:

    我认为这取决于您如何使用 wpa_cli 来建立连接。您没有提到发出的命令,但我认为您正在使用以下命令:

    wpa_cli -i wlan0 list_networks # list all configured networks; in you example, you appeared to have just defined network n. 0
    wpa_cli -i wlan0 select_network 0
    

    select_network 0 命令未使用 P2P,它只是将 Raspberry Pi 连接到网络配置文件 0 中定义的接入点。

    或者,您可能已经使用以下命令创建了第二个网络:

    wpa_cli -i wlan0 add_network # this returns the new network profile number; let us consider that 1 is returned
    wpa_cli -i wlan0 set_network 1 ssid \"MYSSID\"
    wpa_cli -i wlan0 set_network 1 psk \"passphrase\"
    wpa_cli -i wlan0 enable_network 1 # alternatively to these commands, you might have added a new network profile by editing wpa_supplicant.conf
    wpa_cli -i wlan0 list_networks # in this example, we added network 1
    wpa_cli -i wlan0 save_config # optional command to save the newly defined network profile 1 into wpa_supplicant.conf
    wpa_cli -i wlan0 select_network 1 # this leaves network 0 and connects to network 1
    

    这些命令再次不使用 P2P,只是将 Raspberry Pi 的连接从网络配置文件 0 中定义的接入点切换到配置文件 1 中定义的其他 AP。

    Wi-Fi Direct 使用不同的 wpa_cli 命令并允许兼容的设备形成自组织通信组,而不会中断传统的基于接入点的 Wi-Fi 通信。

    您应该将device_name=RPi_3 更改为device_name=DIRECT-RPi_3

    然后您可以使用wpa_cli -i p2p-dev-wlan0 p2p_connect <addr> <8-digit password> display 与 Android 设备协商组。或者,您可以定义自治组或持久组。

    组协商模式示例:

    wpa_cli -i p2p-dev-wlan0
    set config_methods keypad
    p2p_find
    p2p_connect <addr> <8-digit password> display
    

    持久组模式示例(假设p2p_group_add创建组p2p-wlan0-0):

    wpa_cli -i p2p-dev-wlan0
    set config_methods keypad
    set_network 0 mode 3
    set_network 0 disabled 2
    p2p_group_add persistent=0
    interface p2p-wlan0-0
    

    在 Android 设备的 Wi-Fi Direct 界面中,选择 DIRECT-RPi_3。 通过 Android 智能手机的键盘面板输入 PIN 00000000 进行注册。

    interface p2p-wlan0-0
    wps_pin any 00000000
    

    查看Connect Android smartphone with Wi-Fi Direct to a Raspberry Pi 了解更多信息。

    【讨论】:

      【解决方案2】:

      发生这种情况是因为 Wi-Fi Direct 意味着您的手机在打开 Wi-Fi Direct 连接时正在创建一个单独的 Wi-Fi 网络(请参阅Wi-Fi Direct on Wikipedia),这与您已经连接的 Wi-Fi 网络不同到(通常由您的路由器创建)。但是,树莓派的 Wi-Fi 接口一次只能连接一个网络。

      因此,当您通过 Wi-Fi Direct 连接手机时,Raspberry Pi 首先会离开路由器创建的网络,连接到手机创建的 Wi-Fi 网络。

      如果您想同时连接到不同的 Wi-Fi 网络,您可以为 Raspberry Pi 添加另一个 Wi-Fi 接口,例如使用 Wi-Fi U 盘。通过两个接口,您可以连接到两个不同的网络,而无需关闭与其中一个网络的连接。

      【讨论】:

      • 感谢您的回复,我知道您一次只能通过 Wif 连接到一个 AP 的单个接口。我想我可以用一个例子更好地解释这一点。我有一个齿轮 s2 和一个 s6 边缘。每当手机需要与手表同步大文件时,它会打开一个 wifi 直接连接,手表连接到该连接,同时保持与互联网的正常 Wifi 连接。即使我在网上冲浪,也会发生文件交换。所以主要的问题是,在不添加另一个物理接口的情况下,是否可以使用 pi 进行类似的操作。
      • 为了做到这一点,wifi 芯片组必须支持称为“多角色”的功能。显然,您的 S6 边缘确实支持这一点。树莓派的芯片组是broadcom BCM43438,我没有发现任何说它支持多角色(主要来源是相应驱动程序wireless.wiki.kernel.org/en/users/drivers/brcm80211的linux内核wiki页面)
      猜你喜欢
      • 2016-07-09
      • 2022-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多