GNU/Linux >> Tutoriels Linux >  >> Linux

Comment configurer une connexion Wifi-Direct entre Android et Linux

J'ai beaucoup travaillé sur ce problème et voici les réponses que j'ai trouvées :

  • Réponse 1.1 Il existe de nombreuses possibilités et la bonne dépend de ce que vous essayez d'accomplir. Vous pouvez trouver les différentes possibilités ici :http://processors.wiki.ti.com/index.php/OMAP_Wireless_Connectivity_NLCP_WiFi_Direct_Configuration_Scripts

Je voulais Linux comme GO et Android comme client, donc ce qui a fonctionné pour moi sous Linux est :

// 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.B. Pour détruire la connexion P2P et redémarrer la connexion normale, j'utilise ce 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

Ici, le serveur écoute une connexion et le client Android s'y connecte. J'ai utilisé un serveur TCP très simple trouvé sur le premier site Web et cela a fonctionné à merveille.Il est important de démarrer l'udhcpd ou vous n'obtiendrez pas l'icône "connecté" dans Android.Pour le côté Android, j'ai suivi ce que j'ai vu sur http://developer.android.com/training/connect-devices-wirelessly/wifi-direct.html et cela a parfaitement fonctionné.

  • Réponse 1.2 À partir de wpa_cli, vous pouvez obtenir de nombreux avertissements et erreurs différents. J'ai vu que le simple fait d'appeler la fonction (comme je l'ai fait dans l'extrait précédent) faisait que tout fonctionnait malgré les avertissements. Je les ai ignorés.

  • Réponse 1.3 La connexion utilisant le code PIN fonctionne, lorsque je l'ai essayé, je ne démarrais pas udhcpd et cela plantait ma connexion à chaque fois. Ce n'était pas dû au code PIN ou au PBC.

  • Réponse 2.1 Le serveur et le client changent d'interface. C'est un comportement très similaire à ce que vous faites habituellement avec les sockets. Vous créez un socket d'écoute, quelqu'un se connecte, vous créez un nouveau socket pour gérer ce client dans un thread séparé pendant que le socket d'écoute est toujours là, attendant d'autres utilisateurs. Vous faites de même avec les interfaces. Le démarrage d'un wpa_cli qui surveille l'interface wlan0 et d'un autre qui surveille l'interface p2p-wlan0-0 donne une bonne idée de ce qui se passe pendant le changement.

  • Réponse 2.2 Le client "est allé" à l'autre interface et est maintenant prêt à recevoir une adresse IP. Démarrez les serveurs DHCP et TCP !

  • Réponse 2.3 N'utilisez pas d'adresse IP statique. Uniquement pour le serveur est ok, le client doit utiliser une IP DHCP. Il existe peut-être un moyen de gérer les adresses IP statiques, mais ce n'était pas utile pour mes objectifs.

  • Réponse 2.4 Terminé. C'était le problème depuis le début

  • Réponse 1.4 Cela fonctionne parfaitement même avec Android/linux.

Désolé si j'ai fait une erreur dans ma réponse, je n'ai toujours pas une vue d'ensemble des connexions WiFi-Direct, j'espère simplement que cela pourra aider quelqu'un d'autre.


(Peut-être pas une réponse complète, mais la bonne direction)

Le problème est du côté Linux. Je rencontre des problèmes similaires entre un Cyanogenmod (Android 5) et Fedora 22, en essayant d'utiliser Wifi Direct (Wifi P2P) pour le logiciel d'affichage sans fil d'Intel pour Linux OS (WDS).

Plus précisément, le connman d'Intel a divergé (écrit à partir de zéro) en 2009 de ce qui était standard sous Linux, NetworkManager. Connman semble être la seule implémentation de Wifi Direct (Wifi P2P) pour Linux, et a été écrite pour le marché embarqué (mobile).

En raison d'un problème de RPM, connman n'a pas encore été testé sur mon système, mais le logiciel devrait fournir les communications dbus dont Linux a besoin.

Site Web :https://01.org/connman


Linux
  1. Établir une connexion SSH entre Windows et Linux

  2. Comment définir et supprimer des variables d'environnement locales, utilisateur et système sous Linux

  3. Comment définir ou modifier le nom d'hôte du système sous Linux

  4. Comment vérifier la version du système d'exploitation et de Linux

  5. Comment monter et démonter un système de fichiers sous Linux

Comment installer et utiliser YouTube-DL sur le système Linux

Comment changer le nom d'utilisateur et le nom d'hôte sur le système Linux

Comment installer et configurer AnyDesk sur le système Linux

Comment installer et configurer Django sur le système Linux

Comment installer et configurer PrestaShop sur le système Linux

Comment définir $PATH dans le système Linux de manière permanente