2010-03-16

製作金卡 (Gold Card)

根據神人的研究,發現 HTC 的韌體更新程式 RUU (ROM Update Utility),為了怕使用者誤用、拿到不正確語系或版號的韌體去刷手機,於是在安裝程式裡面動了手腳,增加一些檢查機制,阻擋這類跨區或跨版本的韌體升級,這樣能避免不懂的使用者亂刷刷壞,間接也阻止了不同版本的韌體在不同地區的手機上使用。不過,如同之前改機前言所述,如果透過管道弄到「歐洲工程版」的 RUU,這道檢查機制就變成阻擋改機的第一道關卡。先從原理來看,RUU 在執行前,會要求使用者確認手機和電腦已經連接,一旦連接,安裝程式和手機就能溝通,藉由溝通結果來做檢查。而這個檢查機制主要有兩種:第一種開放給電話系統商使用,就是透過 SIM 卡檢查(讀取 ID 或序號之類的),來判斷是不是那一家的系統(Ex. 中華電信 or 台哥大),第二種是手機製造商(就是 HTC 自己啦),依照銷售的區域、機種和型號,判斷更新執行的權限,會檢查的包含了裝置識別碼 (MID; Model Identification) 和客戶識別碼 (CID; Customer Identification)。這次提供改機後門的 RUU 和電話系統商無關、有限定手機型號,所以只要是 Magic 手機應該都能夠用,唯一阻擋在前面的只剩下 CID 檢查(硬去執行 RUU 會因為 CID incorrect 而 update fail)。所以要能做到 CID Unlock,才能開始改機的第一步:安裝歐版的 RUU。(聽說也可以直接修改更新安裝程式,跳過檢查直接達到 SIM Unlock & CID Unlock 的目的..)

實際 CID 檢查的詳細步驟我不是很瞭解,不過聽說在開機時、手機裡的 SPL (Second Program Loader, Android 上的 Bootloader, 類似 BIOS) 會讀取記憶卡做檢查,只要在手機的記憶卡裡寫入一些「引導資料」、讓 SPL 載入,當 RUU 要做 CID 檢查時,就能直接 bypass 啦!這張「被寫入引導資料」的記憶卡,就是所謂的「金卡」(Gold Card)。在製作金卡之前,要先確認幾個前提,首先所有步驟只和記憶卡有關,所以製作過程手機插著哪張記憶卡,就只能用那張卡來進行改機動作(也就是說不能產生寫入金卡資料後寫進別張記憶卡使用)。再者,這張卡必須是 FAT32 檔案系統(目前一般大容量記憶卡的標準格式),最後,有些人認為雜牌爛卡也會是金卡製作的失敗原因之一,所以最好是有品牌或好一點的記憶卡(我自己是用威剛 A-Data 8GB Class 6,買手機送的)。

製作金卡的第一個步驟是先取得手機的 CID。熟悉 Linux 的人可以透過手機的終端機程式(例如用 ConnectBot 連 Localhost、或是其他像 Android Terminal Emulator 之類的終端機工具,請自行安裝)從檢視下述檔案內容,或是先確認過電腦與手機連線狀況後,透過 ADB 工具(可以從下載的 Android SDK 壓縮檔裡 tools 目錄下取得),執行命令查看檔案內容:

adb shell cat /sys/class/mmc_host/mmc1/mmc1:*/cid

或是使用 adb shell 登入,以及在手機上的終端機程式下命令:

cat /sys/class/mmc_host/mmc1/mmc1:*/cid

回應: 25

 

2010-03-11

HTC Magic 與電腦正確連線

不管是改機或做金卡,或是之後要對手機系統做一些進階的操作,都要先確認手機已經和電腦連線,這裡的連線不只是插上 USB 線,還要能確認電腦能夠透過接線相互溝通。其實 Magic 透過 USB 接上電腦,不用裝什麼驅動程式、預設就會被當作一台 USB「讀卡機」使用,只要在手機上選擇「掛載 SD 卡」,電腦就能像存取一般隨身碟一樣直接存取手機的記憶卡。但這種狀態下,並不能保證更新程式或其他工具能直接透過指令和手機的作業系統溝通,這時候必須安裝 HTC Driver,才能確保外部工具和手機系統能夠完整連線。這個驅動程式現在是包在 HTC Sync 裡面(舊版才有獨立版本)、在 HTC Support 官網就有提供,最新版本是 2.0.33,安裝程式會幫你裝進「HTC Driver」和「HTC Sync」,後者是一個開機會執行啟動的服務、主要是幫你 Sync Exchange/Outlook 資料用的,如果不需要的話可以獨立移除。一旦驅動程式裝好,只要你的手機接上電腦,除了原來當「讀卡機」的機制一樣會在你電腦跑出一個「卸除式磁碟」外,在裝置管理員裡,會多出一個 Android USB Devices 類別,裡面會有個 My HTC 的裝置,這樣才能確保手機裝置有正確連線,後面有一些透過電腦和手機連動的動作才能正確執行。(包含手機的「行動網路共用」,就是把能 3G 上網的手機當作數據機讓電腦能共用 3G 上網,這個 HTC driver 一定要裝..)

當 HTC driver 裝好,每當手機有接上電腦,便會多出這個手機裝置

要檢查手機連線是否正常,可以透過 ADB (Android Debug Bridge) 工具來做一些測試。ADB 工具其實是包在 Google 提供的 Android SDK 裡面(解壓縮後 tools 目錄下的那些執行檔),提供程式開發者拿來與手機或模擬器溝通的 Debug 公用程式,所以可以透過下載 SDK 解壓縮後取得。打開 DOS 視窗、切換到公用程式的目錄下,直接下執行檔命令 adb,就會列出所有 adb 參數和使用說明,如果要確認手機和電腦有正確連線,可以用命令:

adb devices

回應: 13

 

2010-03-05

HTC Magic 改機步驟

本文是用來紀錄徒手讓 HTC Magic 在具備官方韌體的狀態下,能夠額外具備 Root 身份的能力(前言在此)。由於對 Android 的系統架構還很模糊,差不多就是照著人家指導的方法 Step by Step 地完成,過程很順利、但其實對每個步驟的原理還是不知其所以然,所以也不要問我為什麼哪個步驟不行、在那個平台或機種怎麼改,我沒辦法也不知道該如何回答。(我只是整理筆記...)

一開始出貨的 Magic 用的是相當陽春的 Android 1.5 OS,不帶 HTC Sense UI, 透過一些技巧很容易就能取得 root 的最高系統權限(SPL v1.33,詳看此文),不過在 2009/10/23 HTC 推出官方的升級後 (FW: 3.03.751.4,要透過下載外部公用程式來升級),雖然讓 Magic 擁有了和 Hero 一模一樣的軟體介面和應用程式,但卻阻擋了 root 的取得,一時讓 root 過的使用者在更新韌體後哀鴻遍野、怨聲載道。一開始沒趕上改機的熱潮,所以當我的 Magic 乖乖升了官方韌體、額外具備 Sense UI 和一堆 HTC 客製的應用程式,只覺得官方韌體也相當不錯,還沒感受到改機的急迫性。不過在用了一段時間後,漸漸發現好多必須利用 root 身份執行的應用程式和功能相當吸引我,於是在後來新改機步驟出現之後,我也躍躍欲試、一頭栽進改機刷韌體的熱潮當中。這個新的改機步驟緣由是 HTC 在歐洲釋出了一個帶 su (switch user,就是能切換身份到 root 的工具) 的 RUU (ROM Update Utility),透過這個官方的韌體升級程式更新後除了擁有最新的韌體外 (FW: 3.04.401.2),內含最大權限的 root 身份!不過不是一般人都能用這個韌體升級程式,HTC 有利用鎖銷售地區的方法限制使用者執行(怕亞洲客戶刷到歐洲韌體)。道高一尺魔高一丈,有人發現製作所謂的「金卡」(GoldCard),能夠規避 CID Check、達到任何人都能使用歐洲工程版 RUU 的目的。有了最大權限,就能透過更換 Recovery Image (工程模式的 Kernel)、進一步利用神人修改的 SPL (Second Program Loader, Android 上的 Bootloader, 類似 BIOS),替換掉官方限制的版本,徹底解除 Android 系統的封印!在這之後,不管你想換什麼版本的韌體 (v1.5, 1.6, 甚至 2.0, 2.1),還是想擁有什麼權限,都能易如反掌啦!

嘴巴講講很簡單,實際上步驟還挺繁複的,而且,還要準備不少工具和程式。以下步驟僅適用於「具備 Sense UI、HTC 官方版韌體的 Magic 手機」,其他廠牌和型號機種一概不能用!大致流程如下,每個主題步驟很多,另行專文連結詳述:

回應: 6