與 Android 進行 WLAN Direct 連線
首先 iw list 看是否支援。如果支援,那就
iw dev wlan0 interface add p2p0 type __p2pdev
這樣其實並不會多出一個叫 p2p0 的網路介面。iw dev 能看到多了個「Unnamed/non-netdev」裝置。不執行這個也可以連線上 WLAN Direct,但是當前的 managed Wi-Fi 連線會斷掉。執行之後再連線,managed 連線會持續,iw dev 裡會有兩個 Unnamed,不知道何故。另外這個type __p2pdev
加上去了我就不知道怎麼刪除了。試了幾個命令,結果搞得核心 oops 了……
然後是 wpa_supplicant 配置檔案:
ctrl_interface=/run/wpa_supplicant_p2p ap_scan=1 device_name=起一個名字 device_type=1-0050F204-1 driver_param=use_p2p_group_interface=1
wpa_supplicant 跑起來。注意這裡的介面名還是那個 managed 介面的。
wpa_supplicant -i wlan0 -c p2p_config.conf
然後 wpa_cli 連過去操作:
wpa_cli -p /run/wpa_supplicant_p2p
首先用 p2p_find 開啟搜尋。這時候對端裝置能夠看到自己了。使用 p2p_connect 對端MAC pdc go_intent=0 連線,在對端接受連線即可。
然後就可以給自己新增 IP 地址了。此時是可以用 dhcpcd 的,然而直接跑的話它會搶走預設路由,所以知道地址範圍之後手動加一個好了:
ip a add 192.168.49.22/24 dev p2p-wlan0-1
Android 裝置的地址是 192.168.49.1。
之後就可以用 adb connect 然後ofollow,noindex" target="_blank">scrcpy 了。
PS: Android 很喜歡四十幾的 IP 段呢。USB 網路共享是 192.168.42.129/24,Wi-Fi 網路共享是 192.168.43.1/24,而 WLAN Direct 是 192.168.49.1/24。不知道藍芽網路共享是多少呢。
PPS: scrcpy 在我的 XZ2C 上執行完美,但是在 MIUI 10 上是「只讀模式」,只能看,所有互動操作無效。