本帖最后由 網癮少年鄭某某 于 2019-3-29 15:29 編輯
圖片1.jpg (115.36 KB, 下載次數: 12)
下載附件
保存到相冊
2019-3-29 13:18 上傳
首先,請將 華為悅盒刷機ROOT,但注意要用保留IPTV功能的方案進行,然后把光貓與另兩個 路由設置在三個不同的網段,并把鋪路由IPTV拔號的這個MAC地址手工改為華為悅盒的MAC。
第二步,將網絡按上圖所示連接好設備,確保兩個路由各自拔號都能成功!PS: 若不記得拔號密碼請到網上營業(yè)廳在線重置取回密碼。 此時,你可以在電視盒中測試一下外網連接,將盒子IP設為靜態(tài)192.168.0.100,網關取值 192.168.0.1 其它項基本默認值即可,打開第三方APP,就可以看視頻,網絡功能正常再來測試一下IPTV網絡,將盒子IP設為靜態(tài)192.168.2.100,網關取值 192.168.2.1 其它項基本默認值即可,打開IPTV,就可以看直播,功能也正常。
提示一下,上面兩個小測試中,你可以觀察一下在測試用第三方APP時,光貓的千兆口燈在狂閃;而在測試IPTV時,則光貓的IPTV燈在狂閃,符合預期。
到現在為止,你已可以進行兩個網絡的切換了,但卻要人工操作,還是不方便,所以我們需要寫個腳本,讓這切換自動完成。(若對代碼編程沒接觸過且沒頭緒的,不建議往下折騰了)
第三步,測試IPTV運行時appid的變化規(guī)律 你需要準備一臺PC,保證這電腦與華為悅盒在同一局域網,在這臺電腦中運行CMD,在命令窗口中用telnet 192.168.0.100對盒子進行連接,再準備一個USB鍵盤與USB鼠標插好到華為悅盒中,等會寫腳本要用;在華為悅盒中安裝一個文本編輯器以便接下來編寫腳本,我是直接用root explorer完成的,在/system/bin目錄中新建一個測試腳本 test.sh 注意要將此文件的權限設定為可讀寫可執(zhí)行屬性,以編輯方式打開test.sh文件,用剛才接好的鍵盤輸入以下腳本內容并保存好文件:
#!/system/bin/sh while [ 1 ] do appid=$check_app check_app=$( dumpsys window w | grep -E com.huawei.iptv | grep / | busybox wc -l ) if [ "$check_app" != "$appid" ] ; then echo "appid: $check_app" fi done
編寫Shell腳本時一定要細心,因為shell語法非常變態(tài),對空格與標點很敏感,若發(fā)現腳本運行出錯,請檢查語法,有關shell學習請自行百度!
在電腦的cmd窗口運行剛才的測試腳本/system/bin/test.sh 細心觀察IPTV運行時appid的值是變化著的,網上有人說就直接取大于0的最小appid值作為判斷依據,這是不完美的,在斷電開機后,首次運行IPTV時,你會發(fā)現appid值的從小到大一直在變化著比如 3,5,8,15,26,33……,而關閉IPTV后,再運行IPTV,你會發(fā)現此時的appid的值并不會太小,既然運行IPTV時appid值的變化沒太大規(guī)律,那可以換個思路,觀察一下IPTV在退出時,這appid的值幾乎是固定的2-3個值22,23,24,這是我自己的盒子測試的結果,雖然不保證其他人的盒子也如此變化,但思路是正確的,你就觀察IPTV在退出時appid的變化規(guī)律,一旦發(fā)現了這規(guī)律,你就可以判斷IPTV何時退出了,就可以寫另一個腳本,在判斷IPTV退出時,自動切換外網IP,以下為本人自己的自動切換網絡的腳本:
#!/system/bin/sh #分配地址 ipA=“192.168.0.100 “ ipB=“192.168.2.100 “ routeA=“192.168.0.1” routeB=“192.168.2.1” networkline=““ appid=0 time_count=0 while [ 1 ] do time_count=`expr $time_count + 1` check_app=$( dumpsys window w | grep -E com.huawei.iptv | grep / | busybox wc -l ) case “$check_app” in 0 | 1 | 22 | 23 | 24) if [ “$networkline” != “DCHP-APP” ] ; then networkline=“DCHP-APP” echo “app mode...” ifconfig eth0 $ipA netmask $routemask sleep 0.5 ip route add default via $routeA dev eth0 echo “app mode done” fi ;; *) if [ “$networkline” != “PPPOE-IPTV” ] ; then networkline=“PPPOE-IPTV” echo “iptv mode...” ifconfig eth0 $ipB netmask $routemask sleep 0.5 ip route add default via $routeB dev eth0 echo “iptv mode done” fi ;; esac sleep 1 if [ $time_count -gt 362 ] ; then exit 0 fi done
將上面切換的腳本保存為 /system/bin/autonetwork.sh 并設置讀寫執(zhí)行的權限,腳本中使用到了expr命令,你可能需要從其它版本的sh中找到這expr文件復制到/system/bin中,同樣也要設置讀寫執(zhí)行的權限,強烈建議上面的腳本要自己在盒子中用鍵盤慢慢輸入,注意shell腳本變態(tài)的語法格式要求;若你是在windows中編輯好,再復制到盒子中,會無法運行,因為不同系統(tǒng)對換行的處理編碼是不同的,但你可以通過第三方程序對這種格式進行轉換,相關方法,請百度。 在電腦cmd窗口中,測試一下剛才的腳本 /system/bin/autonetwork.sh 若出現錯誤提示,則自己再檢查輸入是否有誤,最后直到沒有錯誤,腳本就完成了。
接下來,就想辦法讓盒子開機啟動時自動運行我們這個腳本,若按傳統(tǒng)的方案修改init的話,我們就要重新編譯并刷入修改后的rom非常麻煩,這里給出個更為簡單的方法:經過對init一步步的分析,追蹤到系統(tǒng)會在 init.bigfish.rc 中啟動一項bigfish-setup的服務,這項服務的腳本文本為/system/etc/init.bigfish.sh,這下好辦了,我們可以直接在這個init.bigfish.sh的最后面掛上我們的腳本即可,具體操作,就是修改/system/etc/init.bigfish.sh腳本文件,在最后面加上一行 /system/bin/autonetwork.sh & 保存修改并退出。 此時,已完成了全部工作了,你可以斷開盒子電源,重新啟動盒子,啟動后會出現一個提示框,大概是提醒系統(tǒng)已補破壞,不必理會,因為就是我們自己修改那個腳本文件的。
打開IPTV,看看直播,觀察光貓IPTV口的燈在狂閃,證明走的是iptv電信內網通道。關閉iptv后,運行一下第三方app,此時再觀察光貓的燈,iptv的燈已不再狂閃,改為千兆口的燈在狂閃,這就對了。 至此,不用wifi,只靠一條網線,就完美實現了有線雙網,然后就能去當貝市場里隨意下載安裝應用打開使用,再也不需要拔插網線或者斷開網絡了!
timg.jpg (18.34 KB, 下載次數: 8)
下載附件
保存到相冊
2019-3-29 15:28 上傳
|