GNU/Linux >> Belajar Linux >  >> Linux

Cara mengatur koneksi Wifi-Direct antara Android dan Linux

Saya banyak mengerjakan masalah ini dan inilah jawaban yang saya temukan:

  • Jawaban 1.1 Ada banyak kemungkinan dan yang benar bergantung pada apa yang ingin Anda capai. Anda dapat menemukan berbagai kemungkinan di sini:http://processors.wiki.ti.com/index.php/OMAP_Wireless_Connectivity_NLCP_WiFi_Direct_Configuration_Scripts

Saya ingin Linux sebagai GO dan Android sebagai klien, jadi yang berhasil bagi saya di Linux adalah:

// 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. Untuk menghancurkan koneksi P2P dan memulai kembali yang normal saya menggunakan skrip ini:

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

Di sini server mendengarkan koneksi dan klien android terhubung dengannya. Saya menggunakan server TCP yang sangat mudah ditemukan di situs web pertama dan berfungsi dengan sangat baik. Sangat penting untuk memulai udhcpd atau Anda tidak akan mendapatkan ikon "terhubung" di Android. Untuk sisi Android, saya mengikuti apa yang saya lihat di http://developer.android.com/training/connect-devices-wireless/wifi-direct.html dan bekerja dengan sempurna.

  • Jawaban 1.2 Dari wpa_cli Anda bisa mendapatkan banyak peringatan dan kesalahan yang berbeda. Saya melihat bahwa hanya dengan memanggil fungsi (seperti yang saya lakukan di cuplikan sebelumnya) membuat semuanya berfungsi meskipun ada peringatan. Saya mengabaikan mereka.

  • Jawaban 1.3 Koneksi menggunakan PIN berfungsi, ketika saya mencobanya saya tidak memulai udhcpd dan itu membuat koneksi saya setiap saat terputus. Itu bukan karena PIN atau PBC.

  • Jawaban 2.1 Server dan klien beralih antar muka. Ini adalah perilaku yang sangat mirip dengan apa yang biasanya Anda lakukan dengan soket. Anda membuat soket pendengar, seseorang terhubung, Anda membuat soket baru untuk menangani klien itu di utas terpisah sementara soket pendengar masih ada, menunggu pengguna lain. Anda melakukan hal yang sama dengan antarmuka. Memulai wpa_cli yang memantau antarmuka wlan0 dan yang memantau antarmuka p2p-wlan0-0 memberikan gambaran bagus tentang apa yang terjadi selama perubahan.

  • Jawaban 2.2 Klien "pergi" ke antarmuka lain dan sekarang siap menerima IP. Jalankan server DHCP dan TCP!

  • Jawaban 2.3 Jangan gunakan IP statis. Hanya saja agar servernya ok, client harus menggunakan IP DHCP. Mungkin ada cara untuk menangani IP statis, tetapi tidak berguna untuk tujuan saya.

  • Jawaban 2.4 Selesai. Itulah masalahnya selama ini

  • Jawaban 1.4 Ini berfungsi sempurna bahkan dengan Android/linux.

Maaf jika saya membuat kesalahan dalam jawaban saya, saya masih belum mendapatkan gambaran lengkap tentang koneksi WiFi-Direct, saya hanya berharap ini dapat membantu orang lain.


(Mungkin bukan jawaban yang lengkap, tapi arah yang benar)

Masalahnya ada di sisi Linux. Saya mengalami masalah serupa antara Cyanogenmod (Android 5) dan Fedora 22, mencoba menggunakan Wifi Direct (Wifi P2P) untuk Perangkat Lunak Tampilan Nirkabel Intel untuk OS Linux (WDS).

Secara khusus, connman Intel menyimpang (ditulis dari awal) kembali pada tahun 2009 dari standar di Linux, NetworkManager. Connman tampaknya merupakan satu-satunya penerapan Wifi Direct (Wifi P2P) untuk Linux, dan telah ditulis untuk pasar tersemat (seluler).

Karena masalah RPM, connman tetap belum teruji di sistem saya, tetapi perangkat lunak seharusnya menyediakan komunikasi dbus yang dibutuhkan Linux.

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


Linux
  1. Cara Mengatur dan Menghapus Variabel Lingkungan Lokal, Pengguna dan Sistem di Linux

  2. Cara Mengatur atau Mengubah Nama Host Sistem di Linux

  3. Cara memeriksa Versi OS dan Linux

  1. Buat koneksi SSH antara Windows dan Linux

  2. Cara Mengatur dan Mendaftar Variabel Lingkungan di Linux

  3. Cara memasang dan memasang sistem file di Linux

  1. Cara Mengatur atau Mengubah Nama Host di Linux

  2. Cara Memasang dan Mengatur Tor Browser di Linux

  3. Cara Menginstal dan Menggunakan Git di Sistem Linux