GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit Wifi-Direct připojení mezi Androidem a Linuxem

Na tomto problému jsem hodně pracoval a zde jsou odpovědi, které jsem našel:

  • Odpověď 1.1 Existuje mnoho možností a ta správná závisí na tom, čeho se snažíte dosáhnout. Různé možnosti naleznete zde:http://processors.wiki.ti.com/index.php/OMAP_Wireless_Connectivity_NLCP_WiFi_Direct_Configuration_Scripts

Chtěl jsem Linux jako GO a Android jako klienta, takže to, co mi v Linuxu fungovalo, je:

// 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. Ke zničení P2P připojení a restartu normálního používám tento skript:

#!/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

Zde server čeká na připojení a klient Android se k němu připojí. Použil jsem velmi snadný server TCP, který jsem našel na prvním webu, a fungoval jako kouzlo. Je důležité spustit udhcpd, jinak se v Androidu nezobrazí ikona „připojeno“. Na straně Androidu jsem se řídil tím, co jsem viděl na http://developer.android.com/training/connect-devices-wirelessly/wifi-direct.html a fungovalo to perfektně.

  • Odpověď 1.2 Z wpa_cli můžete získat mnoho různých varování a chyb. Viděl jsem, že pouhým voláním funkce (jako v předchozím úryvku) vše fungovalo navzdory varováním. Ignoroval jsem je.

  • Odpověď 1.3 Připojení pomocí PIN funguje, když jsem to zkoušel, nespouštěl jsem udhcpd a to mi pokaždé zhroutilo připojení. Nebylo to kvůli PIN nebo PBC.

  • Odpověď 2.1 Server i klient přepínají rozhraní. Jedná se o velmi podobné chování, jaké obvykle děláte se sokety. Vytvoříte naslouchací soket, někdo se připojí, vytvoříte nový soket pro obsluhu tohoto klienta v samostatném vláknu, zatímco naslouchací soket stále existuje a čeká na další uživatele. Totéž uděláte s rozhraními. Spuštění wpa_cli, které monitoruje rozhraní wlan0 a jednoho, který monitoruje rozhraní p2p-wlan0-0, poskytuje dobrou představu o tom, co se děje během změny.

  • Odpověď 2.2 Klient "přešel" na druhé rozhraní a je nyní připraven přijmout IP. Spusťte servery DHCP a TCP!

  • Odpověď 2.3 Nepoužívejte statickou IP. Pouze pro server je v pořádku, klient by měl používat DHCP IP. Možná existuje způsob, jak zacházet se statickými adresami IP, ale pro mé cíle to nebylo užitečné.

  • Odpověď 2.4 Hotovo. To byl celý ten problém

  • Odpověď 1.4 Toto funguje perfektně i se systémem Android/linux.

Omlouvám se, pokud jsem ve své odpovědi udělal nějakou chybu, stále nemám úplný obrázek o připojení WiFi-Direct, jen doufám, že to pomůže někomu dalšímu.


(Možná to není úplná odpověď, ale správný směr)

Problém je na straně Linuxu. Setkávám se s podobnými problémy mezi Cyanogenmod (Android 5) a Fedora 22, když se pokouším použít Wifi Direct (Wifi P2P) pro Intel Wireless Display Software pro Linux OS (WDS).

Konkrétně se connman společnosti Intel odchýlil (napsán od nuly) v roce 2009 od toho, co bylo v Linuxu standardem, NetworkManager. Zdá se, že Connman je jedinou implementací Wifi Direct (Wifi P2P) pro Linux a byl napsán pro embedded (mobilní) trh.

Kvůli problému s RPM zůstává connman na mém systému nevyzkoušený, ale software by měl poskytovat komunikaci dbus, kterou Linux potřebuje.

Web:https://01.org/connman


Linux
  1. Jak nastavit a zrušit místní, uživatelské a systémové proměnné prostředí v Linuxu

  2. Jak zkontrolovat verzi OS a Linuxu

  3. Jak připojit a odpojit souborový systém v Linuxu

  1. Vytvořte SSH spojení mezi Windows a Linuxem

  2. Jak nastavit nebo změnit název hostitele systému v systému Linux

  3. Jak nastavit a vypsat proměnné prostředí v Linuxu

  1. Jak nastavit nebo změnit název hostitele v Linuxu

  2. Jak nainstalovat a nastavit prohlížeč Tor v systému Linux

  3. Jak nainstalovat a používat Git v systému Linux