Tag: android


[Root] Downgrade ZenFone from 1.15.40.35_20140715

2014-07-20 Update: 補上 fastboot 步驟,抱歉少了這一步是無法修改 recovery 的 ^^
這一版的升級做了一個不算小的修改:在 recovery 的 default.prop 將 ro.build.date.utc 的數值調小:

ro.build.date.utc=12684704

這樣的修改會導致手機無法降版,因為目前官網上抓下來的 ROM file 裡面的 script 最前面這麼寫:

assert(greater_than_int(getprop("ro.build.date.utc"), 1392739200));

雖然應該沒多少人喜歡換版本,但這邊還是筆記一下退版的方法,root 限定。又因為這樣的退版如果沒處理好可能導致之後無法升級軟體版本,我就只講方法不做懶人包了。:P
- 下載舊版 (比如 1.14.40.50) 的 ROM file,解開後在 recovery 目錄下找到 boot.img,recovery-from-boot.p 與 etc/install-recovery.sh
- 透過 fastboot 刷入 boot.img (fastboot flash boot boot.img)
- 修改 install-recovery.sh,把 /system/recovery-from-boot.p 換成 /data/local/tmp/recovery-from-boot.p
- 將這兩個檔案透過 adb push 到 /data/local/tmp
- 進去手機以 root 執行 install-recovery.sh

接著就可以依照原先的方式降版了。

Enable Chromecast screen mirroring feature on your device

這次就不包懶人 app 了,需要 root,主要的邏輯在 enabler.sh,基本上沒啥傷害 (?)

先抓 sqlite3 binary for Android
再抓從電腦執行的前導程式 go.bat,裡面只有 adb command 而已。
最後是主要啟用的腳本檔 enabler.sh,裡面做的事情很簡單:修改 Play Service 的 database 開啟使用 Chromecast Screen Mirroring 的旗標。

所以東西都抓下來後,執行 go.bat 就好了。聽說有些 Samsung 的機器不能跑,不過我手上也就這麼多台手機,有 Chromecast 但手上的裝置不再官方支援列表的就自行參考看看吧。

Reference: http://forum.xda-developers.com/showthread.php?t=2730422

[Root] SOP when failed to apply OTA update

之前發在 Mobile01,轉回來做個記錄..
不少網友 OTA 更新失敗都是因為 Root 後就把系統檔案修改或者刪除,這邊提供一個標準還原流程。(因為已經被問到爛了)
下載符合手機版本的原廠 ROM
ZenFone 5 請到這邊找 http://www.asus.com/tw/Phones/ASUS_ZenFone_5/HelpDesk/
ZenFone 6 請到這邊找 http://www.asus.com/tw/Phones/ASUS_ZenFone_6/HelpDesk/
從 驅動程式及工具程式 進去, 選 Android 就可以看到一堆列表.
解開下載的檔案,會得到格式如下的壓縮檔:

UL-ASUS_T00?-$$-#.##.##.#-user.zip

如果手機是 ZenFone 5,? 為 F 或 J;如果手機是 ZenFone 6,? 為 G。
$$ 代表區域,可能是 TW (台灣版),CHT (中華客製版),CN (中國版)或 WW (全球版),注意要跟手機的版本一樣。
而 #.##.##.# 為版號,也要跟手機的版本一致。
把剛剛下載回來的檔案,版號的部分 (#.##.##.#) 改為 10000,所以會產生類似 UL-ASUS_T00F-TW-10000-user.zip 這樣的檔案名稱。
手機透過 usb 傳輸線連接到電腦,在檔案總管可以找到 ZenFone 的內部儲存空間,把檔案丟進去。
傳輸完畢,先 unroot。
拔開傳輸線以後,會出現升級提示,確認手機電力充足,按確定即可重置作業系統,這個動作不會清除手機資料。
* 還原完畢,root 後等 OTA 更新出來,按保留 root 接著套用更新。如果安裝新版的 Root ZenFone 直接啟用 OTA 生存模式,再套用更新即可。
然後再一次呼籲,root 後不喜歡的內建軟體可以停用,但不要刪除否則 OTA 更新一定會失敗。至於什麼 Lucky patcher 會改到 framework 的鬼東東,除非你意識清楚否則 OTA 更新一定會失敗。

[Root] RootZenFone 1.3r

一直想更新很久了, 但無奈手邊事情太多, 再加上有些功能考慮要獨立出來做, 所以程式碼寫了又砍砍了又寫.. 最後決定只先加入最重要的功能: OTA 生存模式.
連結在這: http://goo.gl/YuqeGH (Dropbox)
分流在這: http://goo.gl/oCIGN0 (Mega)
已經 root 的朋友安裝後直接點 "啟用 ROOT 生存模式 (升級後自動保留 ROOT)", 還沒 root 的朋友這一版在 root 後會自動啟用該功能.


因為這是個會修改系統檔案的 hack, 所以如果之後 OTA 更新失敗, 請依照下面的 SOP 進行:
0. 先確定還有收到 OTA 更新通知.
1. 開啟 RootZenFone, 解除 ROOT 生存模式 (將修改過的系統檔案還原)
2. 狂點 “ 已經 root 囉 :) “ 就會出現舊的 “ 升級後保留 ROOT “ 按鈕

3. 點選 “ 升級後保留 ROOT “
4. 套用 OTA 更新
5. 快樂更新系統, 並留言給我更新軟體 :p

[Root] Show Navigation Bar

有人覺得 ZenFone 的實體按鈕沒有背光不方便,這邊提供一個顯示 Navigation Bar 的方法,只是有點擠..

mount -o rw,remount /system
echo qemu.hw.mainkeys=0 > /system/default.prop
chmod 644 /system/default.prop

重開機之後可以看到

4.3 (?) 因為某次 exploit 之後,對 property 的管制變嚴了,導致 /data/local.prop 無法設定某些值,還好 /system/default.prop 仍然可用,在不修改 /system/build.prop 的前提下,可以把一些設定塞到這邊。

Reference: https://android.googlesource.com/platform/frameworks/base/+/master/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java

[Root] Connect phone to internet via USB

電腦透過 USB 連接線使用手機的網路上網稱 USB Tethering,而反過來手機透過 USB 連接線使用 PC 的網路上網,稱作 Reverse USB Tethering。前幾天在論壇上面看到有人提出 ZenFone 能否使用 Reverse USB Tethering 的問題,覺得頗有意思,研究了一個晚上總算整理出一套流程,我所使用的手機是 ZenFone 5,版本為 Android 4.3。

  • 如果用的是 Mac,請先安裝 RNDIS Driver: HoRNDIS
  • 手機先 root。
  • 如果想讓瀏覽器以外的 app 使用網路,大部分狀況透過安裝 Xposed & HackConnectivityService 即可解決。

步驟:
1. 手機連接到電腦上,到設定 -> 更多內容 -> 網路共用與 Wi-Fi 無限基地台 -> 點選 USB 網路共用。
2. 如果你用的是 Mac,打開 System Preferences -> Network,應該可以看到 Android 這個連線裝置出現,或者點左下角的 + 新增。

預設是 DHCP 取得 IP 位址,請耐心等候他出現 192.168.42.x 的值,再切換到 System Preferences -> Sharing,點選 Internet sharing。右邊的畫面中 Share your connection from: 請選你目前的網路連線裝置,比如 Thunderbolt Ethernet 或者 Wi-Fi;To computers using: 勾選 Android (就是剛剛看到的裝置)。

2. 如果你用的是 Windows 7,先等系統安裝好相關的驅動程式。

接著到控制台 -> 網路和網際網路 -> 網路連線,可以看到會多出一個區域連線 (在這邊是 "區域連線 2")。

在你預設的網路連線介面上按右鍵選共用 (在這邊是 "區域連線"),點選最上面的 "允許其他網路使用者透過這台電腦的網際網路連線來連線(N)",下面的 "家用網路連線" 請選擇前面多出來的區域連線 (在這邊是 "區域連線 2")

3. 此時電腦打開 Terminal 或者命令提示列,透過 adb shell 連接手機,su 為 root。
4. 依序執行下面的代碼:(或者抓 reverse_usb_tether.sh)

netcfg rndis0 dhcp

讓手機取得新的 IP 位址可以連線出去。

ndc resolver flushif rndis0
ndc resolver flushdefaultif
ndc resolver setifdns rndis0 8.8.8.8 8.8.4.4
ndc resolver setdefaultif rndis0

設定 DNS,不過似乎大部分的 app 都還是無法連線,得靠下面這行

iptables -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to-destination 8.8.8.8:53

其中 8.8.8.8 可以換成你喜歡的 dns server (比如 168.95.1.1)

到這網路已經可以正常使用,不過某些 app 卻無法正常運行,比如 Play Store 無法下載 app/Google Drive 無法開啟文件.. 原因是這些 app 都會檢查是否有 Wi-Fi 或者數據網路的連線。嘗試過很多偏方,到目前為止都沒有 " 完美 " 的解決方案 (Android 4.3 以上的版本多了一些檢查),安裝 Hack Connectivity Service (得先安裝 Xposed 並啟用) 是一種解法,只是你在使用前得先有可連線的 Wi-Fi,關閉後再跑一次前面的流程,最後打開該 app 選擇 Hack 分類下的 Wifi 即可。

Reference: [Tool][Windows Only][Root] Android Reverse Tethering 3.19

Use PS3 controller on ZenFone

簡單筆記一下如何在 ZenFone 上使用 PS3 手把 :)

預備物品:
- ZenFone (Rooted)
- PS3 手把
- Mini usb 連接線
- 可外接電源的 OTG 線 (非必須)

預備軟體: (這邊使用 Sixaxis Controller)
- 如果你沒有 OTG 線, 請在電腦裝 SixaxisPairTool
- 手機裝 Sixaxis Controller

步驟: (如果沒有 OTG 線)
1. 手機先安裝 app,開啟後點選 Start,畫面下方會出現手機的 BT 位址,記下來。
2. 電腦安裝 Sixaxis Pair Tool,完成後連接 PS3 手把。
3. 把剛剛記下來的 BT 位址寫入對話框裡面,點選 Update 更新 PS3 手把連線的設定。
4. 完成後拔開連接線,等 PS3 手把燈熄滅。
5. 按 PS 鍵開啟手把電源,手機上的 app 如果顯示 "Client 1 connected" 代表成功。
6. 請參考 eprice 上的文章 用 PS3 手把玩遊戲:Sixaxis Controller 軟體篇 設定 app。

步驟: (如果有 OTG 線)
1. 手機先安裝 app,開啟後點選 Start。
2. 將 PS3 手把與手機透過 OTG 線連接,OTG 線記得接上電源。
3. 點選 app 上的 Pair,更新 PS3 手把連線的設定。
4. 完成後拔開連接線,等 PS3 手把燈熄滅。
5. 按 PS 鍵開啟手把電源,手機上的 app 如果顯示 "Client 1 connected" 代表成功。
6. 請參考 eprice 上的文章 [用 PS3 手把玩遊戲:Sixaxis Controller 軟體篇](www.eprice.com.tw/mobile/talk/12

差別只在於你想透過手機還是電腦把手機的 BT 位址寫入 PS3 手把 :)

最後補上一些設定畫面,開啟後會先詢問是否要設定鍵盤

反正遲早都要使用,把 Sixaxis Controll 勾起來吧

使用前會要求 Root 權限

點選 Start 時,偶爾會出現 Bluetooth FC 的畫面,別理他

點選 Pair 把手機的 BT 位址寫入手把

接著會彈出 USB 設定,點確定就對了

完成後會顯示 "Master address updated"

接著開啟手把電源 (PS 鍵), 如果出現 "Client x connected" 代表成功連線囉!

此時點選 "Change IME" 測試看看

動一下手把的上下左右,如果看到淺色框框跑來跑去代表真的有抓到囉

[Root (Optional)] 讓 ZenFone 讀取隨身碟

2014-06-04 Updated:
經網友指正, 其實只要供電沒問題, 就算沒 root 也可使用, 目前可以搭配下列軟體:

OTG Disk Explorer Lite # 讀取較大檔案需付費版本
Nexus Media Importer

不過介面上還是 root 搭配內建檔案管理員比較方便, 看個人喜好囉.

ZenFone 所使用的 Intel solution 其實有支援 OTG, 但無奈 ZenFone 的板子可能出於成本考量, 又或者上層實作需要多一些時間, 所以少拉幾條線 (推測) 以致於無法對外接 USB 裝置供電, 導致無法讀取隨身碟 (最多人想要的功能) 這邊就不談 OTG 的原理與應用, 直接來看怎麼讓 ZenFone 可以讀隨身碟吧.

  • 首先手機得 root, 並且安裝相關工具, 我推薦使用 StickMount
  • 再來你得買一條有附額外 USB 接頭的 OTG 線, 像這樣:

    所以接下來的使用就很容易, 把隨身碟與手機透過 OTG 線連接, 那一條額外的 USB 線接上電源 (ZenFone 的手機充電器即可)
    Setup
    等著奇蹟發生
    USB stick insertion prompt
    沒意外點選確定他就會自動掛載了, 或者也可以先打開 StickMount, 插入隨身碟後點選 Mount
    Mount USB stick
    接著打開檔案管理員, 找到 usbStorage, 點進去會看到 sd?1, 裡面就是隨身碟的資料囉.
    Open File Manager
    用完記得先 Unmount
    Unmount USB Stick

Reference

[Root] 讓 ZenFone 5 也有單手操作模式

雖然說這功能只有 ZenFone 6 有, 但兩者的軟體大同小異, 追蹤一下要實現很簡單.
asus.software.whole_system_onehand.xml 丟到 /system/etc/permissions/ (記得 chmod 644) 重開機以後先去重設快速設定清單

接著就會看到單手操作出現囉

畫面會變成這樣..

對於某些覺得 5 吋還是很大的人來說, 這種小螢幕模式還挺便利的 :)