So richten Sie eine WLAN-Direktverbindung zwischen Android und Linux ein

9

Ich möchte zwei Geräte mit Wifi-Direct verbinden. Einer ist ein PC mit Linux (während meines Tests verwende ich Linux Mint 17.2), der andere ist ein Android-Smartphone (Samsung Galaxy S3 mit Android 4.3. Nicht verwurzelt und möchte nicht root).

Nachdem ich eine Reihe von Anleitungen im Internet gelesen hatte, entschied ich mich, wpa_supplicant unter Linux zu verwenden und eine App für Android zu erstellen. Dies ist einer der besten Anleitungen, die ich für wpa_supplicant gefunden habe: Ссылка

Wenn ich iw list starte, sehe ich, dass die "Supported interface modes:" P2P_client und P2P_GO erlaubt. Meine wpa_supplicant.conf enthält:

%Vor%

Die App ist diesem Beispiel sehr ähnlich (aus einem Buch) Ссылка (Ich habe den ganzen Socket-Teil entfernt).

Es funktioniert wie erwartet. Wenn ich es mit zwei Android-Geräten versuche, können sie sich sehen und verbinden (es erscheint das Wifi-Direct-Symbol).

Jetzt versuche ich, Android und Linux zu verbinden, aber ich glaube, ich verstehe nicht wirklich, wie wpa_supplicant funktioniert. Ich habe auch diese Frage gesehen, die sehr ähnlich zu dem ist, was ich gefragt habe, aber sie beantwortet meine Zweifel nicht wirklich ... direkte Wifi-Kommunikation zwischen Android Smartphone und anderen Geräten

Mein Problem ist, dass ich nicht verstehen kann, wie man den Handshake zwischen den beiden Geräten macht und wie man das Netzwerk einrichtet.

Wpa_supplicant ist mein Problem. Ich renne:

%Vor%

Aber ich hatte viele Probleme: - Der Gerätename (und andere Parameter) wurden nicht so eingestellt, wie ich es in der .conf-Datei angegeben habe - wpa_supplicant versucht weiterhin, sich mit allen Netzwerken zu verbinden - p2p_find war wirklich langsam ...

Ich ging also in / usr / share / dbus-1 / system-services und entfernte die beiden Dateien

%Vor%

Jetzt kann ich

%Vor%

und es stirbt wirklich und trennt mich von Wifi, ohne die folgende Sekunde neu anzuschließen. Jetzt kann ich wpa_supplicant starten und die drei Probleme sind gelöst.

Ich gehe in wpa_cli, starte "p2p_find" und gleichzeitig aktiviere ich die Suche in der App.

Android und Linux können sich jetzt sehen.

%Vor%

Mit "p2p_peers" kann ich den Handy MAC sehen.

%Vor%

Hier kann ich nicht weitermachen. Ich habe verschiedene Möglichkeiten ausprobiert, aber keiner von ihnen hat funktioniert. Mein Ziel ist Linux als Gruppenbesitzer zu haben.

  • Frage 1.1: Welches ist der richtige Weg, um die beiden Geräte zu haken?
  • Frage 1.2: Wenn ich p2p_connect versuche, bekomme ich oft "Michael MIC failure detected" zwischen den Ergebnissen, was bedeutet es in diesem Wettbewerb?
  • Frage 1.3: Android versucht gerade, sich mit PBC zu verbinden. Es gibt eine Möglichkeit, mit PIN zu verbinden?

Da ich keine Verbindung zu Android / Linux herstellen konnte, versuchte ich, mit Linux / Linux (Linux Mint wie GO, Ubuntu als Client) etwas Übung zu machen, indem ich Beispiele aus dem Internet wie die im ersten Link verwendete. Ich habe auch hier eine Reihe von Problemen.

In Mint versuche ich

%Vor%

in Ubuntu versuche ich

%Vor%

Wenn ich psp_connect in Mint schreibe, erzeugt es eine neue Schnittstelle p2p_wlan0 _0 und gibt

zurück %Vor%

dann schlägt der von Ubuntu gestartete p2p_connect fehl.

  • Frage 2.1 Warum wechselt die Benutzeroberfläche beim Erstellen der Gruppe?
  • Frage 2.2 Wie kann diese Änderung richtig gehandhabt werden? Nach der Änderung kann ich Ubuntu nicht mehr p2p_find (ich muss einige Zeit warten oder alles neu starten)
  • Frage 2.3 Sollte Ubuntu seine Benutzeroberfläche ändern?
  • Frage 2.3 In der neuen Schnittstelle sollte ich die IP sowohl für Ubuntu als auch für Mint einstellen ... wie soll ich das mit statischen IPs machen?
  • Frage 2.4 Wenn ich zum Beispiel einen DHCP Server und einen Client einrichten möchte?

  • Frage 1.4 Und mit Android (Client) / Linux (GO)?

Kida 07.08.2015, 11:55
quelle

3 Antworten

3

Ich habe viel an diesem Problem gearbeitet und hier sind die Antworten, die ich gefunden habe:

  • Antwort 1.1 Es gibt viele Möglichkeiten und die richtige hängt davon ab, was Sie erreichen wollen. Sie finden die verschiedenen Möglichkeiten hier: Ссылка

Ich wollte Linux als GO und Android als Client, also funktionierte für mich in Linux:

%Vor%

N.B. Um die P2P-Verbindung zu zerstören und die normale zu starten, benutze ich dieses Skript:

%Vor%

Hier wartet der Server auf eine Verbindung und der Android-Client stellt eine Verbindung her. Ich benutzte einen sehr einfachen TCP-Server, der auf der ersten Website gefunden wurde, und es funktionierte wie ein Zauber. Es ist wichtig, das udhcpd zu starten, sonst wird das Symbol "Verbunden" in Android nicht angezeigt. Für die Android-Seite folgte ich dem, was ich auf Ссылка gesehen habe und es funktionierte perfekt .

  • Antwort 1.2 Von wpa_cli können Sie viele verschiedene Warnungen und Fehler erhalten. Ich sah, dass das einfache Aufrufen der Funktion (wie im vorherigen Snippet) trotz der Warnungen funktioniert hat. Ich ignorierte sie.

  • Antwort 1.3 Die Verbindung mit PIN funktioniert, als ich es ausprobiert habe, habe ich die udhcpd nicht gestartet und meine Verbindung stürzte immer ab. Es war nicht wegen PIN oder PBC.

  • Antwort 2.1 Sowohl der Server als auch der Client wechseln die Schnittstelle. Es ist ein sehr ähnliches Verhalten wie bei Sockets. Sie erstellen einen abhörenden Socket, jemand verbindet, Sie erstellen einen neuen Socket, um diesen Client in einem separaten Thread zu behandeln, während der abhörende Socket immer noch da ist und auf andere Benutzer wartet. Sie machen das gleiche mit Schnittstellen. Das Starten eines wpa_cli, das die wlan0-Schnittstelle überwacht, und eines, das die Schnittstelle p2p-wlan0-0 überwacht, gibt eine gute Vorstellung davon, was während der Änderung passiert.

  • Antwort 2.2 Der Client "ging" zur anderen Schnittstelle und ist jetzt bereit, eine IP zu erhalten. Starten Sie die DHCP- und TCP-Server!

  • Antwort 2.3 Verwenden Sie keine statische IP-Adresse. Nur für den Server ist ok, der Client sollte eine DHCP IP verwenden. Vielleicht gibt es eine Möglichkeit, mit statischen IPs umzugehen, aber das war für meine Ziele nicht nützlich.

  • Antwort 2.4 Fertig. Das war das Problem die ganze Zeit

  • Antwort 1.4 Dies funktioniert auch mit Android / Linux perfekt.

Entschuldigung, wenn ich in meiner Antwort einen Fehler gemacht habe, bekomme ich immer noch nicht das ganze Bild von WiFi-Direktverbindungen, ich hoffe einfach, dass dies jemand anderem helfen kann.

    
Kida 05.11.2015, 15:40
quelle
0

(Kann keine vollständige Antwort sein, aber richtige Richtung)

Das Problem ist auf der Linux-Seite. Ich stoße auf ähnliche Probleme zwischen einem Cyanogenmod (Android 5) und Fedora 22 und versuche Wifi Direct (Wifi P2P) für Intels Wireless Display Software für Linux OS (WDS) zu verwenden.

Insbesondere hat sich der Connman von Intel im Jahr 2009 von dem, was in Linux, NetworkManager üblich war, getrennt (geschrieben von Grund auf neu). Connman scheint die einzige Implementierung von Wifi Direct (Wifi P2P) für Linux zu sein und wurde für den Embedded (Mobile) Markt entwickelt.

Aufgrund eines RPM-Problems bleibt Connman auf meinem System noch nicht getestet, aber die Software sollte die dbus-Kommunikation Linux-Anforderungen bereitstellen.

Website: Ссылка

    
Anon 27.12.2015 14:45
quelle
0

Haben Sie einfach versucht, Ihre Hotspot-Option auf Android zu aktivieren? Dann verbinde dich mit dem Ubuntu-Gerät, überprüfe die verbundene IP in den Android-Hotspot-Optionen und gib sie deiner App. Es funktioniert für mich für die Fernsteuerung meines Ubuntu-Systems.

    
GabyGab 10.02.2017 13:05
quelle