GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo configurar una conexión Wifi-Direct entre Android y Linux

Trabajé mucho en este problema y aquí están las respuestas que encontré:

  • Respuesta 1.1 Hay muchas posibilidades y la correcta depende de lo que esté tratando de lograr. Puede encontrar las diversas posibilidades aquí:http://processors.wiki.ti.com/index.php/OMAP_Wireless_Connectivity_NLCP_WiFi_Direct_Configuration_Scripts

Quería Linux como GO y Android como cliente, así que lo que funcionó para mí en Linux es:

// Kill current supplicant and avoid its automatic recreation
system("mv /usr/share/dbus-1/system-services/fi.* .");
system("killall udhcpd");
system("wpa_cli -i wlan0 terminate -B");
usleep(300000);

// Start new supplicant
system("wpa_supplicant -Dnl80211 -iwlan0 -c /etc/p2p_supplicant.conf -B");
system("wpa_cli -iwlan0 p2p_group_add");
system("ifconfig p2p-wlan0-0 192.168.1.2");

// Connect with a peer
for (;;) {
  system("wpa_cli -ip2p-wlan0-0 wps_pbc");
  system("udhcpd /etc/udhcpd.conf");
  // Here start your TCP server on a port
  Server server([port]);
  server.startServer();
}

nótese bien Para destruir la conexión P2P y reiniciar la normal, uso este script:

#!/bin/bash
wpa_cli -i wlan0 terminate -B
wpa_cli -i p2p-wlan0-0 terminate -B
cp ./fi.* /usr/share/dbus-1/system-services/
service network-manager restart

Aquí el servidor escucha una conexión y el cliente de Android se conecta a él. Usé un servidor TCP muy fácil que se encuentra en el primer sitio web y funcionó de maravilla. Es importante iniciar el udhcpd o no obtendrá el ícono "conectado" en Android. Para el lado de Android, seguí lo que vi en http://developer.android.com/training/connect-devices-wireless/wifi-direct.html y funcionó perfectamente.

  • Respuesta 1.2 Desde wpa_cli puede obtener muchas advertencias y errores diferentes. Vi que simplemente llamar a la función (como hice en el fragmento anterior) hizo que todo funcionara a pesar de las advertencias. Los ignoré.

  • Respuesta 1.3 La conexión usando PIN funciona, cuando lo intenté no estaba iniciando el udhcpd y eso colapsaba mi conexión cada vez. No fue por PIN o PBC.

  • Respuesta 2.1 Tanto el servidor como el cliente están cambiando de interfaz. Es un comportamiento muy similar al que suele hacer con los sockets. Creas un socket de escucha, alguien se conecta, creas un nuevo socket para manejar ese cliente en un hilo separado mientras el socket de escucha todavía está allí, esperando a otros usuarios. Haces lo mismo con las interfaces. Iniciar un wpa_cli que monitorea la interfaz wlan0 y uno que monitorea la interfaz p2p-wlan0-0 da una buena idea de lo que sucede durante el cambio.

  • Respuesta 2.2 El cliente "fue" a la otra interfaz y ahora está listo para recibir una IP. ¡Inicie los servidores DHCP y TCP!

  • Respuesta 2.3 No use IP estática. Solo para el servidor está bien, el cliente debe usar una IP DHCP. Tal vez haya una forma de manejar IP estáticas, pero no fue útil para mis objetivos.

  • Respuesta 2.4 Listo. Ese fue el problema todo el tiempo

  • Respuesta 1.4 Esto funciona perfectamente incluso con Android/linux.

Lo siento si cometí algún error en mi respuesta, todavía no entiendo la imagen completa de las conexiones WiFi-Direct, simplemente espero que esto pueda ayudar a alguien más.


(Puede que no sea una respuesta completa, pero sí la dirección correcta)

El problema está en el lado de Linux. Estoy encontrando problemas similares entre un Cyanogenmod (Android 5) y Fedora 22, intentando usar Wifi Direct (Wifi P2P) para el software de visualización inalámbrica de Intel para el sistema operativo Linux (WDS).

Específicamente, el estafador de Intel divergió (escrito desde cero) en 2009 de lo que había sido estándar en Linux, NetworkManager. Connman parece ser la única implementación de Wifi Direct (Wifi P2P) para Linux, y fue escrito para el mercado integrado (móvil).

Debido a un problema de RPM, connman sigue sin probarse en mi sistema, pero el software debería proporcionar las comunicaciones dbus que necesita Linux.

Sitio web:https://01.org/connman


Linux
  1. Establecer una conexión SSH entre Windows y Linux

  2. Cómo configurar y desactivar variables de entorno locales, de usuario y de todo el sistema en Linux

  3. Cómo configurar o cambiar el nombre de host del sistema en Linux

  4. Cómo verificar la versión del sistema operativo y Linux

  5. Cómo montar y desmontar un sistema de archivos en Linux

Cómo instalar y usar YouTube-DL en el sistema Linux

Cómo cambiar el nombre de usuario y el nombre de host en el sistema Linux

Cómo instalar y configurar AnyDesk en el sistema Linux

Cómo instalar y configurar Django en un sistema Linux

Cómo instalar y configurar PrestaShop en el sistema Linux

Cómo configurar $PATH en el sistema Linux de forma permanente