Wifi-Direct を使用して 2 台のデバイスを接続したいと考えています。1つはLinuxを搭載したPC(テスト中はLinux Mint 17.2を使用しています)、もう1つはAndroidスマートフォン(Android 4.3を搭載したSamsung Galaxy S3。ルート化されておらず、ルート化したくない)です。
インターネットでいくつかのガイドを読んで、Linux で wpa_supplicant を使用し、Android 用のアプリを作成することにしました。これは、wpa_supplicant について私が見つけた最高のガイドの 1 つです: https://web.archive.org/web/20210114180304/https://processors.wiki.ti.com/index.php/OMAP_Wireless_Connectivity_NLCP_WiFi_Direct_Configuration_Scripts
iw list を実行すると、「サポートされているインターフェイス モード:」で P2P_client と P2P_GO が許可されていることがわかります。私の wpa_supplicant.conf には以下が含まれます。
ctrl_interface=/var/run/wpa_supplicant
update_config=1
ap_scan=1
device_name=My-pc
device_type=1-0050F204-1
driver_param=use_p2p_group_interface=1
p2p_go_intent=15
p2p_go_ht40=1
アプリはこの例と非常によく似ています (本からのものです) myapplication/WiFiDirectActivity.java
期待どおりに動作します。2 台の Android デバイスで試してみると、お互いを認識して接続できます (Wifi-Direct アイコンが表示されます)。
今、Android と Linux を接続しようとしていますが、wpa_supplicant がどのように機能するのかよくわかっていないようです。私が尋ねたものと非常によく似たこの質問も見ましたが、私の疑問に実際には答えていません... Androidスマートフォンと他のデバイス間の直接Wifi通信
私の問題は、2 つのデバイス間でハンドシェイクを行う方法と、ネットワークをセットアップする方法を理解できないことです。
Wpa_supplicant は私の問題です。走る:
sudo wpa_supplicant -wlan0 -Dnl80211 -c/etc/wpa_supplicant.conf
sudo wpa_cli
しかし、私は多くの問題を抱えていました:
- device_name (およびその他のパラメーター) が、.conf ファイルで指定したとおりに設定されていませんでした
- wpa_supplicant は引き続きすべてのネットワークへの接続を試みます
- p2p_find は本当に遅かった...
/usr/share/dbus-1/system-services に移動し、2 つのファイルを移動しました
fi.epitest.hostap.WPASupplicant.service
fi.w1.wpa_supplicant1.service
今ならできる
sudo killall wpa_supplicant
そして、それは本当に死んで、次の秒に再接続せずにWifiから切断します. これで wpa_supplicant を起動できるようになり、3 つの問題は解決されました。
wpa_cli に入り、「p2p_find」を起動すると同時に、アプリ内から検索を有効にします。
Android と Linux が相互に認識できるようになりました。
P2P-DEVICE-FOUND 00:11:22:44:88:ff p2p_dev_addr=00:11:22:44:88:ff
pri_dev_type=10-0050F204-5 name='GT-I9300' config_methods=0x188
dev_capab=0x24 group_capab=0x0 vendor_elems=1 new=0
「p2p_peers」で携帯電話のMACが見えます。
> aa:bb:cc:dd:ee:ff
ここは先に進めません。さまざまな可能性を試しましたが、どれも機能しませんでした。私の目標は、Linux をグループ オーナーにすることです。
- 質問 1.1: 2 つのデバイスをハンドシェイクする正しい方法はどれですか?
- 質問 1.2: p2p_connect を試すと、結果の間に "Michael MIC failure detected" が表示されることがよくありますが、このコンテストではどういう意味ですか?
- 質問 1.3: 現在、Android は PBC に接続しようとしています。PINで接続する方法はありますか?
Android/Linux に接続できないことがわかったので、最初のリンクのようなインターネットの例に従って、Linux/Linux (GO として Linux Mint、クライアントとして Ubuntu) で練習を試みました。ここでもいろいろと問題があります。
ミントで試してみます
p2p_connect MAC_UBUNTU pin auth
Ubuntuで試してみます
p2p_connect MAC_MINT PIN_GENERATED_BY_MINT
Mint で psp_connect を記述すると、新しいインターフェイス p2p_wlan0 _0 が作成され、返されます
P2P-DEVICE-LOST p2p_dev_addr=MAC_UBUNTU
次に、Ubuntu から起動された p2p_connect が失敗します。
質問 2.1 グループを作成するときにインターフェイスを切り替えるのはなぜですか?
質問 2.2 この変更を処理する正しい方法は何ですか? 変更後、Ubuntu を p2p_find できなくなりました (しばらく待つか、すべてを再起動する必要があります)。
質問 2.3 Ubuntu はインターフェイスを変更する必要がありますか?
質問 2.3 新しいインターフェイスでは、Ubuntu と Mint の両方に IP を設定する必要があります...静的 IP でこれを行うにはどうすればよいですか?
質問 2.4 たとえば、DHCP サーバーとクライアントをセットアップしたい場合は?
質問 1.4 Android(クライアント) / Linux(GO) では?