Wifi P2P при сохранении соединения Wifi на rasperry pi 3 Raspbian с использованием wpa_supplicant

Я довольно наивен в этой теме, поэтому прошу прощения за любой тупой ответ с моей стороны. Я хочу подключить Raspberry Pi 3 к моему телефону Android через Wifi Direct(или P2P), сохраняя при этом нормальное соединение Wi-Fi. Всякий раз, когда я запускаю команду wpa_cli, она отключается от обычного соединения Wi-Fi, в то время как команды 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, так что, возможно, в этом проблема. Возможно, вы уже поняли, насколько мало у меня знаний, поэтому, пожалуйста, объясните это в простых терминах, почему это происходит.

2 ответа

Я думаю, это зависит от того, как вы используете 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.

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

В интерфейсе Wi-Fi Direct устройства Android выберите DIRECT-RPi_3. Введите PIN-код 00000000 через клавиатуру смартфона Android для регистрации.

      interface p2p-wlan0-0
wps_pin any 00000000

Проверьте подключение смартфона Android с помощью Wi-Fi Direct к Raspberry Pi для получения дополнительной информации.

Это происходит потому, что Wi-Fi Direct означает, что ваш телефон создает отдельную сеть Wi-Fi (см. Wi-Fi Direct в Википедии) при открытии соединения Wi-Fi Direct, которое отличается от сети Wi-Fi, к которой вы уже подключены. до (нормально созданный тобой роутер). Тем не менее, интерфейс Wi-Fi на Raspberry Pi может подключаться только к одной сети одновременно.

Поэтому, когда вы подключаетесь к своему телефону через Wi-Fi Direct, Raspberry Pi сначала покидает сеть, созданную маршрутизатором, для подключения к сети Wi-Fi, созданной телефоном.

Если вы хотите подключиться к разным сетям Wi-Fi одновременно, вы можете добавить другой интерфейс Wi-Fi к Raspberry Pi, например, с помощью USB-накопителя Wi-Fi. С двумя интерфейсами вы можете подключиться к двум различным сетям, не отключая соединение с одной из сетей.

Другие вопросы по тегам