[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 吋還是很大的人來說, 這種小螢幕模式還挺便利的 :)

[App] Widget for removing desktop tips on ZenFone

ZenUI 有些很討人厭的地方, 桌面的提示文字就是其中之一

消除文字的方法不外建立捷徑, 書籤, 放 widget.

只是美美的桌布就是要拿來看的, 被亂七八糟的 icon 擋住視線不是很舒服, 由於手機找不到可以消除文字的設定, 拆了下原廠 apk, 也發現這部份是寫死在 code 裡面, 就算 root 也無法解除. 索性寫了個透明的 app widget 解決這小問題.

程式在這邊: EmptyDesktop.apk
安裝後去小工具找 "淨空桌面"

拉到任一個空的桌面上

登登 ! 可以看到一整個妹啦 (L)

Xposed Framework on ZenFone

安裝好之後先別重開機, 透過 adb 進入手機, 在 /data/data/de.robv.android.xposed.installer/conf 下面新增 jit_reset_offset 這個檔案, 寫入 148 後重開機即可使用 :)
adb shell
su
echo 148 > /data/data/de.robv.android.xposed.installer/conf/jit_reset_offset
chmod 664 /data/data/de.robv.android.xposed.installer/conf/jit_reset_offset
Enjoy Xposed ! ;-)
參考資料: https://github.com/rovo89/Xposed/issues/6 # 基本上對象也是 ASUS 的裝置, 所以.. :)

How to modify boot image of Genymotion VM

如果你有裝 Parallels Desktop or VMWare Fusion:

  • 點擊掛載 android_system_disk.vmdk, 找到 ramdisk 所在地開啟 terminal, 移出 ramdisk 到比如說 /tmp/test
  • cd /tmp/test; mkdir root; cd root; gunzip -c ../ramdisk | cpio -i
  • 做你想做的事情: 塞檔案, 編輯檔案, 比如編輯 default.prop, 把 ro.secure=1 改為 0
  • find . | cpio -o --format newc | gzip > ../ramdisk.new
    - 把 ramdisk.new 放回原來的目錄並更名為 ramdisk, 收工 !