0.系統環境
設備: Phicomm N1
韌體: OpenWrt R22.6.16 (2022-06-16 10:27:09 by flippy)
內核: 5.15.47-flippy-73+o
1.使用前必備
在OpenWrt中安裝以下模塊
- kmod-usb-net
- kmod-usb-net-rndis
- kmod-usb-net-cdc-ether
- adb
安裝支持手機USB共享的內核模塊(通過ssh終端操作)
- 安裝前先更新模塊
opkg update
- 安裝所有模塊
opkg install kmod-usb-net kmod-usb-net-rndis kmod-usb-net-cdc-ether adb
2.如何使用
2.1 OpenWrt的設定
-
通過瀏覽器進入路由器管理界面
-
進入"網路"下的"介面"界面

-
洗掉所有的WAN口(名字中帶WAN的都洗掉)

-
添加新介面

-
設定新介面

-
設定防火墻
如果防火墻沒有選中WAN, 那么就要選中WAN再保存

由于我之前已經添加成功了, 所以已經有了usb0這個介面了, 上面只是演示這個步驟.
2.2 手機的設定
不同手機可能有細微的不同, 可能需要搜索查詢一下.
- 打開開發者選項
- 打開USB除錯
2.3 連接手機和路由器
- 將手機和N1通過資料線連接到一起(使用前確保資料線可以傳輸資料)
- 打開手機的熱點共享界面
- 點擊USB網路共享
- 共享成功以后,WAN口和LAN口中會出現MAC地址和IPV4地址,并且可以看到接收和發送的資料在變動

2.4 自動連接網路方法
在上面的方法中, 我們可以看到每一次重啟手機或者路由器都需要在手機中點擊USB網路共享, 這樣很麻煩, 我們可以通過以下兩種方法在自動化這個程序.
2.4.1 定時自動運行Shell腳本通過ADB除錯開啟USB網路共享
- 在線安裝腳本(需要路由器本身可以科學沖浪)
wget -O /usr/bin/net_check.sh https://raw.githubusercontent.com/ericwang2006/AutoRNDIS/master/net_check.sh
wget -O /usr/bin/wan_check.sh https://raw.githubusercontent.com/ericwang2006/AutoRNDIS/master/wan_check.sh
chmod +x /usr/bin/net_check.sh /usr/bin/wan_check.sh
-
依次運行完以上代碼以后, 進入計劃任務

-
添加以下兩行代碼
#如果手機沒有開啟USB網路共享就開啟,5分鐘檢測一次
*/5 * * * * /usr/bin/net_check.sh
#如果長時間斷網就重啟一次手機,50分鐘檢測一次
*/50 * * * * /usr/bin/wan_check.sh
- 點擊提交
PS:手動安裝也行, 將wan_check.sh和net_check.sh下載到本地, 通過xshell或者mobaxterm上傳到/usr/bin目錄下, 再執行chmod +x /usr/bin/net_check.sh /usr/bin/wan_check.sh, 然后再重新設定計劃任務.
2.4.2 定時自動運行Shell腳本通過ADB模擬點擊來開啟USB網路共享
現在很多手機已經不讓未root的手機adb直接操作usb網路共享, 這時我們就能用這種方法, 理論上來說這種方法是通用的, 不需要root就能使用.
我們對之前net_check.sh檔案進行修改.
#!/bin/sh
id=$(adb devices | grep device$)
if [ -z "$id" ]; then
d=$(date '+%F %T')
echo "[$d]device not found"
echo "[$d]device not found" >>/tmp/net_check.log
else
reg='((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))'
ip=$(ifconfig usb0 | grep -Eo "inet addr:$reg" | grep -Eo "$reg")
if [ -z "$ip" ]; then
d=$(date '+%F %T')
echo "[$d]fix network connection"
echo "[$d]fix network connection" >>/tmp/net_check.log
# 設定USB的狀態是網路共享
# adb shell svc usb setFunctions rndis
# 此處開始adb執行代碼
adb shell am start -n com.android.settings/com.android.settings.Settings #啟動設定app
sleep 1s
adb shell input tap 292.5 231.8 #進入"網路與互聯網"
sleep 1s
adb shell input tap 262.5 645.5 #進入"熱點和網路共享"
sleep 1s
adb shell input tap 518 309.7 #開啟"USB網路共享"
sleep 2s
adb shell am force-stop com.android.settings #關閉設定app
else
d=$(date '+%F %T')
echo "[$d]device status ok"
fi
fi
"adb shell input tap"后面跟的是手機要點擊的坐標(x,y).
"adb shell am start -n com.android.settings/com.android.settings.Settings"則是進入設定.
簡單來說就是通過adb模擬人手點擊的動作,來自動化運行這個程序,不同手機要點擊的坐標肯定不一樣,需要自己提前知道,開發者選項中開啟"指標位置",就可以看到每一步點擊的坐標了.
3.參考資料
視頻
腳本下載鏈接
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/549154.html
標籤:其他
下一篇:Wiki.js配置LDAP認證
