GNU/Linux >> Linux Esercitazione >  >> Linux

Come impostare una connessione Wi-Fi Direct tra Android e Linux

Ho lavorato molto su questo problema ed ecco le risposte che ho trovato:

  • Risposta 1.1 Ci sono molte possibilità e quella corretta dipende da ciò che stai cercando di ottenere. Puoi trovare le varie possibilità qui:http://processors.wiki.ti.com/index.php/OMAP_Wireless_Connectivity_NLCP_WiFi_Direct_Configuration_Scripts

Volevo Linux come GO e Android come client, quindi ciò che ha funzionato per me in Linux è:

// 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. Per distruggere la connessione P2P e riavviare quella normale utilizzo questo 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

Qui il server ascolta una connessione e il client Android si connette ad essa. Ho usato un server TCP molto semplice trovato sul primo sito Web e ha funzionato a meraviglia. È importante avviare udhcpd o non otterrai l'icona "connesso" in Android. Per il lato Android, ho seguito ciò che ho visto su http://developer.android.com/training/connect-devices-wireless/wifi-direct.html e ha funzionato perfettamente.

  • Risposta 1.2 Da wpa_cli puoi ottenere molti avvisi ed errori diversi. Ho visto che semplicemente chiamando la funzione (come ho fatto nel frammento precedente) ha fatto funzionare tutto nonostante gli avvertimenti. Li ho ignorati.

  • Risposta 1.3 La connessione tramite PIN funziona, quando l'ho provata non stavo avviando udhcpd e questo ha bloccato la mia connessione ogni volta. Non era dovuto a PIN o PBC.

  • Risposta 2.1 Sia il server che il client stanno cambiando interfaccia. È un comportamento molto simile a quello che fai di solito con i socket. Crei un socket in ascolto, qualcuno si connette, crei un nuovo socket per gestire quel client in un thread separato mentre il socket in ascolto è ancora lì, in attesa di altri utenti. Fai lo stesso con le interfacce. L'avvio di un wpa_cli che monitora l'interfaccia wlan0 e uno che monitora l'interfaccia p2p-wlan0-0 dà una buona idea di cosa sta succedendo durante il cambiamento.

  • Risposta 2.2 Il client "è passato" all'altra interfaccia ed è ora pronto a ricevere un IP. Avvia i server DHCP e TCP!

  • Risposta 2.3 Non usare IP statico. Solo solo per il server va bene, il client dovrebbe usare un IP DHCP. Forse c'è un modo per gestire gli IP statici, ma non è stato utile per i miei obiettivi.

  • Risposta 2.4 Fatto. Questo è sempre stato il problema

  • Risposta 1.4 Funziona perfettamente anche con Android/linux.

Scusa se ho commesso qualche errore nella mia risposta, non ho ancora il quadro completo delle connessioni WiFi-Direct, spero semplicemente che questo possa aiutare qualcun altro.


(Potrebbe non essere una risposta completa, ma la giusta direzione)

Il problema è sul lato Linux. Sto riscontrando problemi simili tra Cyanogenmod (Android 5) e Fedora 22, nel tentativo di utilizzare Wifi Direct (Wifi P2P) per il software Intel Wireless Display per sistema operativo Linux (WDS).

Nello specifico, il connman di Intel si è discostato (scritto da zero) nel 2009 da quello che era stato lo standard in Linux, NetworkManager. Connman sembra essere l'unica implementazione di Wifi Direct (Wifi P2P) per Linux ed è stato scritto per il mercato embedded (mobile).

A causa di un problema di RPM, connman rimane non testato sul mio sistema, ma il software dovrebbe fornire le comunicazioni dbus di cui Linux ha bisogno.

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


Linux
  1. Stabilire una connessione SSH tra Windows e Linux

  2. Come impostare e annullare l'impostazione di variabili di ambiente locali, utente e a livello di sistema in Linux

  3. Come impostare o modificare il nome host del sistema in Linux

  4. Come controllare la versione del sistema operativo e di Linux

  5. Come montare e smontare un file system in Linux

Come installare e utilizzare YouTube-DL su sistema Linux

Come modificare nome utente e nome host su sistema Linux

Come installare e configurare AnyDesk su sistema Linux

Come installare e configurare Django su sistema Linux

Come installare e configurare PrestaShop su sistema Linux

Come impostare permanentemente $ PATH nel sistema Linux