goaty wrote:
我預購時就買了,然後很早就發生這個問題,之前ms有一個很長的問題討論中,有提出來過。基本上root解的方式我不知道,除了root解外,我試過大家當時的所有建議,不過基本上都無效,惟一的方式是換AP。換後,問題就沒了。我當時感覺應該是有一些硬體的問題。
對, 我研究了Motorola Owner Forum 很久了,
其中裡面有一位user提出, root後關掉Wifi Power Saving Mode 後, 問題就解決了,
但由於要root, 沒人試 & 沒有人回應, 我試了後果然真的解決了!
原文在這:
https://supportforums.motorola.com/message/105858;jsessionid=8990D618669CAD49EB83B509F91FF0E7.node0
是由一位叫"javidroid"的user提出的, 非常感謝!
我猜想部份router(AP)有問題, 部份沒問題, 是由於router的相容性問題!
由於Milestone每次Wifi連接後, 會設成Power Mode Auto,
每過一段時間, 當wifi進入Sleep Mode 後 (只是wifi), 就會不回應Router (AP) 的訊號,
Router(AP) 就會將手機連接斷開.
當Milestone Wifi 醒來後, 並不會向Wifi重新要求連接,
而是當作沒事發生繼續連接, 這時候Router(AP) 不會接受.
可能部份router接受這種連接方式, 沒有問題,
但部份則不會接受, 就會發生問題.
在之前, 家中某一位置上網, 5-10 分鐘內一定斷,
關掉power saving後, 沒斷過!
而且一直開著, 把 "Wifi Sleep Policy" set去 "Never" 後,
關掉螢幕一整晚也沒斷過!
關掉power saving前, ping time 非常不穩, 每5次都會有3-4 次是>= 200 ms,
關掉後, 非常穩定的持續11ms......
方法是在root後, 安裝 Android Terminal Emulator, 再執行以下操作:
1.) 開啟wifi, 等待 Wifi 連接成功後, 才執行以下操作
2.) 打入 "su" 再按enter, 會詢問是否允許執行, 按"Always".
3.) 返回terminal 後, 會看到卡住了, 只要按Menu -> Exit (or Reset Term) 後, 重新開啟即可.
(重開terminal後要再打入"su"再按enter)
4.) 如果已有 superuser 權限, prompt會變成 "#".
5.) 打入"wlan_cu" 後按enter
6.) 按 "w" enter, "p 1" enter, 會把Power Mode 變成 "1 = Active".
(預設是 0 = Auto)
7.) 按".." 返回上一個目錄, 再"q" enter 退出, 之後就可以了!
*** 要注意的是, 經查看Android Source Code "WifiStateTracker.java", 每次Wifi 成功連接後 (or say DHCP IP acquired), Android 會將Wifi Power Mode 設定成AUTO, 是每一次連接後也會設定成AUTO. 所以每次連接後, 都要重新執行以上操作 ***
由於太麻煩了, 所以我寫了一個App, 用來執行以上操作, 原理很簡單, 只是幫你執行以上的指令(echo -e "W\nP 1\n" | /system/bin/wlan_cu)!
但目前要手動操作 (開App按button), 如果真的有需要, 我可以改寫成每次wifi連接後自動執行一次.
稍後會放上Market, 但由於不確定其他手機會否有"wlan_cu"指令,
所以我會限制只有Milestone才可使用.