雖然說是 alpha 版,還是先把目前的成果 release 給有興趣的朋友修改。 :)

檔案放在這:https://github.com/shakalaca/android_device_asus_a500cg

幾點注意事項:

可以先用原廠的 boot.img

  • 單純 AOSP 是沒法編譯出可以動的 boot.img,得透過打包工具將 kernel & ramdisk.img 拼起來。
  • ASUS 對 init 做了不少修改,所以就算拼湊出 boot.img,相機/WiFi/BT.. 都完全沒法用,如果不使用自行編譯的 init 其實整個 ramdisk.img 跟原廠的沒什麼兩樣。
  • 測試過原廠的 boot.img 相對穩定許多。:)

編譯 CM11 開機 audio driver 無法正確載入

  • audio policy 設定出錯,無法設定 output device,推測應該有個 library 得用原廠的。
  • 如果硬要用其實可以刪除 (或跳過) /system/lib/hw/audio*.redhookbay.so,然後在螢幕還沒關起來的狀態下將聲音設定都關閉,可以稍微正常使用。

目前無法使用的功能

  • GPS:gpsd 會 crash
  • ARM program:AOSP 4.4.x 沒有整合 Houdini,不過可以參考 GeeksPhone 的 patch
  • SDCARD:看起來應該是權限或者路徑設定問題,需要 patch。這會造成相機可以 preview 但無法存檔。
  • Video:codec 沒有成功載入。

暫不提供編譯好的 system.img

  • 家裡網路怪怪的,上傳會失敗,請有能力編譯有空間的朋友幫忙產生一版吧。 :)
  • 編譯前請先接上手機執行 extract-files.sh,會從手機上將必要的檔案拉回來編譯 (../../../vendor/asus)

Still in alpha stage, but I think it is better to release early and people interested in AOSP build for ZenFone can jump in :)

Use stock boot.img

  • Of course you can use my tool to pack kernel and ramdisk.img, but BT/WiFi/Camera ... won't work because lots of propietary library only work with init modified by ASUS.
  • Stock boot.img works fine with custom AOSP build .. for now you can just trust it.

Malfunction component

  • GPS: gpsd crashes
  • Program written for ARM platform: Houdini is not integrated in AOSP 4.4.x, but I think we can use the patch from GeeksPhone
  • SD Card: Permission or path configuration issue I thought
  • Video: Not fully tested but most of my test files cannot be played..

For CM11

  • You can build for CM11, but you should remove audio*.redhookbay.so and uncheck all sound releated settings after boot.
  • Need patch from GeeksPhone

For recovery

  • Never have time to build and test :(

電腦請先安裝驅動程式 (Windows 平台)

操作必須知道的基礎知識

  • fastboot 的進入方法:關機狀態按著電源鍵與音量大開機。
  • recovery 的進入方法:關機狀態按著電源鍵不放開機,當手機震動一下時再按音量小,看到 ASUS logo 後放開,等到出現驚嘆號與倒地的機器人時,按著音量小不放再按一下音量大即可出現選單。
  • fastboot 與 recovery 的操作方法:音量大小可以上下移動光標,電源鍵為選擇。

透過 recovery 刷回原廠 ROM 的方法

進入正題,不管是新手老手總是有出錘的一天,最怕的就是手機再起不能,這邊列出常見的異常狀況以及排除方式,希望能幫助到需要的朋友,如果有錯誤歡迎留言指教。:)

Continue Reading →

先講無聊的部份:

  1. Intel Z3560/Z3580 的 CPU, boot.img/fastboot.img/recovery.img 的 HEAD_PADDING 後面的 UNKNOWN_SIZE728 bytes,而 BOOTSTUBSTACK_SIZE 也是 8192 bytes。
  2. RootZenFone 修改一下即可使用,晚點再發佈小更新。
  3. recovery 裡面的 sideload 是壞的,adb port 根本無法打開,拿到時有做一次軟體更新還是沒修復,猜想應該不想讓人使用吧?fastboot 裡有 SD Download,看來日後的 factory image 會是 .raw 格式。

比較有趣的部份:

fastboot 有個小後門,可以拿來做 root 的應用:

Continue Reading →

2015-02-05 Update: 2.21.40.44 之後的版本都無法使用這個方法。

主站:http://goo.gl/t61tfm (ASUS Webstorage)
分流:https://www.mediafire.com/folder/ueq2l8b27tgn6//RootZenFoneKitKat (MediaFire)

主要改善一些情形:

  1. ZenFone 5 的版本拆成三份程式 (WW/TW/CHT),可以依照自己手機的版本下載對應的工具包。
  2. ZenFone 6 的版本拆成兩份程式 (WW/TW),可以依照自己手機的版本下載對應的工具包。
  3. 腳本檔案最開頭有個 set SkipUpdateBootloader=YES,如果在過程中碰到 FAILED (remote: not allowed to update unsigned image on secure device),請把 YES 改成 NO 之後再試試看。程式會自動更新裝置上的 bootloader,讓他有機會可以進行解鎖。
  4. 修正 OTA 更新後第一次開機時沒有 ROOT 的狀況。

詳細使用說明請參考原文:Simple ROOT program for rooting ZenFone 5/6 KitKat

Change log:

  1. Split into 3 versions (WW/TW/CHT) use exact version or you may fail to apply future OTA update. (v1 only supports TW version) For those used v1 before, just run again to update correct recovery.
  2. For those encounter FAILED (remote: not allowed to update unsigned image on secure device), change set SkipUpdateBootloader=YES to set SkipUpdateBootloader=NO in the script and do it again. This will update your bootloader that supports unlocking.
  3. Fix error getting ROOT permission after OTA update.

最後感謝那些捐款的朋友,你們的心意我收到了,真的很感動也很感謝 :) 小弟會持續努力讓 ZenFone 可以輕鬆 ROOT,下一步就是製作 AOSP ROM 了!

目前的計畫大概會是這樣,時間就看造化了:

  1. 持續改進 RootZenFoneKitKat,下次 OTA 為觀察重點,期望能順利升級並且自動保留 ROOT。
  2. 持續找尋新的方式讓 RootZenFone 可以繼續使用 (先集中火力在 ZenFone 系列)。
  3. 改善 TWRP / Philz-CWM Recovery 的 lag 狀態以及一些小 bug。
  4. 製作 AOSP ROM for ZenFone,不過老實說這需要大量的時間透過 try & error 的方式不斷調整,雖然目前有不少資料可以參考:https://github.com/gpdroid, https://github.com/lenovo-k900 但有人可以加入的話也許能讓這件事更快發生 ;-)

2015-02-05 Update: 2.21.40.44 之後的版本都無法使用這個方法。

2014-10-06 Update: 更新 v2 版本,分開 CHT, TW, WW 版的 recovery。另外之前命名錯誤,其實 CHT 是指中文訊息,EN 指的是英文訊息,但裡面的 recovery 都為 TW。

先前有提到可以打包在 PC 上跑的程式對 ZenFone 5/6 KitKat 版本 (TW) 進行 root,這幾天花了點時間打包好了,在這邊搭配一些簡單的說明希望可以幫助到不太會操作 adb 與 fastboot 的朋友。

Continue Reading →

整理一下目前已知可行的方法:

方法一:

  1. 手機降版本至 1.18.40.10 之前的版本
  2. 進入 recovery 做一次 wipe data (factory reset)
  3. 使用 RootZeonFone 進行 root
  4. 透過 recovery sideload OTA 升級包 或者將 OTA 升級包丟入 SD 卡中的方式升級至 4.4

方法二:

  1. 手機不透過官方 app 解鎖
  2. 刷第三方 recovery
  3. 進入 recovery 刷 root (SuperSU or SuperUser)
  4. 刷回原先的 recovery 並上鎖 (optional 不一定要做)

都需要大量手動操作,沒有簡單的方式,第二種也許可以整理出一鍵點擊 root 在電腦上執行的小程式,我會找時間再弄弄看,或者有網友願意打包,畢竟工具都已經公開,只差串起來的腳本程式。 :)

今天 ZenFone 5/6 更新到 4.4.2,雖然已經 root 的機器升級後 root 還在,但已經確認華碩在 4.4.2 的升級修補了 RootZenFone 所使用的漏洞。

log 在此:

W/BroadcastQueue(  574): Permission Denial: broadcasting Intent { act=asus.intent.action.INSTALL_DEMOAPK flg=0x10 } from com.asus.LogTool (pid=3038, uid=10136) requires asus.permission.CALL_DEMOAPP due to receiver com.asus.livedemoservice/.receiver.LiveDemoReceiver

目前暫時沒有時間開發新的 root 程式,如果你用過 RootZenFone 這支 app 覺得對你幫助很大,也希望我能繼續開發新的 root 程式,可以透過 Paypal 贊助研發經費。 :)

雖然目前還沒看到包含自製核心的 ZenFone 5/6 第三方 ROM,不過好工具總是不嫌多,為了讓日後開發 ROM 以及刷 ROM 的玩家無後顧之憂,趁工作空檔研究了一下官方解鎖 app,終於發現一種不用透過官方 app 解鎖的方法!:D

原理

... 其實我也不清楚,反正經過多方實驗後手機還沒變成磚頭最重要。:P

好處

官方解鎖麻煩在於手機從此收不到 OTA 更新檔案,得等官方釋出完整 ROM 之後手動更新,速度較慢。本方法直接繞過官方的.. 某種程序直接解鎖,日後換回原廠 ROM 依舊可以收到 OTA 更新檔案,最重要的是還可以重新上鎖,這代表... ;-)

前置

Continue Reading →

手機解鎖後刷自製的 recovery,除了可以隨意的 root、升降版本,更重要的是可以打包優化過後的 ROM 刷進去。比如說我想要降版到 1.17.40.16,去官網抓回 ROM 後解開,修改 META-INF/com/google/android/updater-script,把幾行 assert 的訊息拿掉:

assert(!less_than_int(15014039, getprop("ro.build.date.utc")) || greater_than_int(getprop("ro.build.date.utc"), 1392739200));
assert(getprop("ro.build.asus.sku") == "TW");

還有 recovery 目錄與相關的設定也移除,因為想保留自製的 recovery:

package_extract_dir("recovery", "/system");
set_perm(0, 0, 0544, "/system/etc/install-recovery.sh");

一切就緒後將整包目錄壓回原來的 zip 檔案,開機進入 recovery 透過 adb sideload 刷入,重開機確認成功降版,一切看似美好,直到重新進入 recovery..

Continue Reading →