星期六, 11月 27, 2010

如何編譯 A688 手機的 Kernel

以下編譯環境為 Ubuntu 10.10 X64

1. 先安裝必要套件

$ sudo apt-get install git-core gnupg


 sun-java5-jdk flex bison gperf libsdl-dev


 libesd0-dev libwxgtk2.6-dev build-essential


 zip curl libncurses5-dev zlib1g-dev


2. 建立資料夾並下載相關 source code 及編譯工具


$ mkdir ~/A688



$ cd A688



$ git clone git://android.git.kernel.org/platform/frameworks/base.git
$ git clone git://android.git.kernel.org/platform/hardware/libhardware.git
$ git clone git://android.git.kernel.org/platform/hardware/libhardware_legacy.git
$ git clone git://android.git.kernel.org/platform/hardware/msm7k.git
$ git clone git://android.git.kernel.org/platform/prebuilt.git


3. 下載 Motorola Xt5 source code 並放到 ~/A688


https://opensource.motorola.com/sf/frs/do/viewRelease/projects.quenchxt/frs.xt5.xt502


4. 解開 source code


$ cd A688


$ tar –zxvf bionic.tar.gz


$ tar –zxvf dalvik.tar.gz


$ tar –zxvf external.tar.gz


$ tar –zxvf kernel.tar.gz


5. 從手機取出目前 kernel.gz 的 config 並放到 ~/A688/Kernel/


(1) 將手機連到電腦


(2) cd ~/A688/Kernel/


(3) adb pull /proc/config.gz config.gz


(4) gunzip config.gz 


(5) mv config .config


6. 設定環境變數


$ export PLATFORM_DIR=~/A688
$ export ARCH=arm
$ export CROSS_COMPILE=arm-eabi-
$ export PATH=~/A688/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:$PATH


7. 修改 Makefile


找到



KBUILD_CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \

                     -fno-strict-aliasing -fno-common \


                     -Werror \


                     -Werror-implicit-function-declaration



修改成



KBUILD_CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \

                     -fno-strict-aliasing -fno-common


  #                  -Werror \


  #                  -Werror-implicit-function-declaration



8. 開始編譯


$ make ANDROID_BUILD_TOP=
編好的 kernel 會在


 ~/A688/kernel/arch/arm/boot/zImage


9. 解開 boot.img 換成新的 kernel


$ cd ~/RomRepackTools_Linux


$ cp ~/A688/kernel/arch/arm/boot/zImage .


$ ./unpack-bootimg.pl boot.img


$ ./repack-bootimg.pl zImage boot.img-ramdisk boot_newkernel.img


10. 更新手機的 kernel


$ fastboot flash boot boot_newkernel.img

如何讓手機透過 USB 上網 (Reverse USB Tethering)

理論上只要手機的 kernel 有支援 Netfilter 都可以透過USB上網,

A688 之前有放出 kernel 的 source 所以許多之前沒辦法做的功能都被一一開啟,

其中一個就是讓手機透過 USB 使用電腦的網路,

這樣就不需要使用 3G 上網或是無線 AP 了,

只需要一條 USB 線連結可以上網的電腦即可,

我只有在 windows XP 和 windows 7 X64 的環境下試過,

不過其他 windows 環境應該都可以用才對,

這篇是教如何在 Windows 上使用的,

cwhuang 大大有寫了一篇

Reverse USB tethering 這篇是給 linux 使用的,

如果是使用 linux 的可以參考上面那篇

需求:

1. Android 手機 (Kernel 支援 Netfilter, Cyanogenmod ROM)

注意需要 Root 權限, 且 Kernel 需要支援 Netfilter 一般官方版的 Rom 都不支援,
所以需要自己重新編譯 kernel (不推薦難度比較高) 或是安裝 Cyanogenmod ROM,
安裝方法可以參考
http://snowwolf725.blogspot.com/2011/02/a688.html
雖然是針對 A688 但是其他 android 的手機大部分都相同

2. USB 連接線

3. 手機安裝 Scripter 程式(非必要, android market 可下載)

4. 有支援 NAT,DHCP 的 無線 AP/Switch/Router/小烏龜 (非必要)

觀念解說:

Eth0 「區域連線」, RNDIS 「區域連線3」, USB0

Eth0 是電腦原本的網卡, 而 RNDI 是手機偽裝出來的網卡,

透過在 Eth0 中將網路分享給 RNDIS 達到讓手機上網的目的,

所以封包會經由 USB0 送給 RNDIS 再送給 Eth0

images1

設定:

1. [Menu]=>[設定]=>[無線與網路]=>[數據連線] 中勾選 USB 數據連線

device

2. 如果是 Windows XP 會提示安裝驅動程式, 選擇 C:\A688_Tools\RNDIS\ 就可以安裝好驅動程式,此時電腦的網路連線中會看到多出個網路連線, 其中」區域連線」是電腦原本的連線, 」區域連線3」 則是手機的虛擬連線

A688 Tools 下載: A688/A60/A88 資源收集

Revers_USB_Tether

3. 右鍵點選」區域連線」選內容, 然後在跳出的對話視窗中選擇 進階(XP)/共用(Win7)標籤頁, 然後勾選 「網際網路連線共用」, Win7 還要選擇要共用的連線」區域連線3」 (手機的連線)

PS. 「網際網路連線共用」需要電腦中至少要有兩張以上的網卡才會出現這個選項,
一張是你電腦上的網卡,一張是你手機模擬出來的網卡,
如果沒有的話, 問題應該是出在你沒有在手機中開啟 "USB 數據連線" 這個功能,
或是沒有正確安裝好手機網卡的驅動程式(也就是那個 RNDIS),

Revers_USB_Tether2

Revers_USB_Tether3

4. 如果沒有 NAT/DHCP Server 的網路裝置的話,還要設定手機連線的 IP

(1)選擇 TCP/IP4 選內容

Revers_USB_Tether4

(2)將 IP 設定成 192.168.0.254, 網路遮罩設成 255.255.255.0 , DNS,閘道 不用設定, 這邊的 IP 是隨意設定, 只要不要和電腦或是其他裝置衝到即可

Revers_USB_Tether5

5. 在手機端設定網路

如果有 NAT/DHCP Server 的話只要打:

su

netcfg usb0 dhcp

這樣手機就可以使用網路了, 在手機端要輸入指令可以安裝 「Terminal Emulator」 (Android market 有/ Cyanogenmod ROM 有內建)

cmd

如果沒有 NAT/DHCP Server 的話則要打下面的指令, 這邊的 162.168.0.1 是手機端的 IP 不能跟其他裝置衝到, 且必須與上面的」區域連線3」 中的 IP 相同網段

su

ifconfig usb0 192.168.0.1 netmask 255.255.255.0

busybox route add default gw 192.168.0.254

6. 透過下面的指令測試網路

ping 8.8.8.8

ping www.google.com

如果第一個測試都失敗的話應該是上面的設定沒設定好,

如果第一個可以過, 但是第二個可以過的話代表 DNS 沒設定好,

需要多下下面這個指令 8.8.8.8 是 Google 的 DNS IP

setprop net.dns1 8.8.8.8

7. 基本上做完上面六個步驟就能用手機上網了,但是每次都要打指令會很累, 如果有裝 scripter 這套軟體的話, 就可以把指令存起來, 這樣每次要用網路只要點一下就可以使用了, 只要先到

http://keremerkan.net/qr-code-and-2d-code-generator/

Select a Code Action: 選擇 Free Formatted Text

把上面的指令貼上去就可以做出 QR code ,

下面是我預先做好的 QR code (無 NAT/DHCP 版本)

code

透過 scripter 拍下來就可以直接執行, 執行後可以長按指令, 選擇保存該指令以便重複執行

星期四, 11月 25, 2010

A688 JTag Pinouts 及硬體拆解圖

本文內容涉及拆機,
在此特別提醒自行拆機將喪失手機保固,
拆壞了請別來找我XDDD
由於手邊沒有相機所以暫時只有文字改天再補圖,
如果要自行拆解手機的話因為 A688 的手機的螺絲是梅花六角形的,
所以你需要自行購買個梅花六角的 T5 螺絲起子,
先把電池 sim 卡記憶卡拔掉,
然後用 T5 起子把七個螺絲都鬆開後,
因為在手機的側邊都有凹槽和內牙勾住所以要沿著側面用東西撐開,
然後要注意 USB 孔那邊有可能卡住所以也要撐開下,
這樣就可以把後版拆開,
裡面還有兩個螺絲要鬆開,
還有幾個排線有跟機板連結建議先拔掉會比較好拆,
然後接著上面有個塑膠黑色蓋子要拆開,
那個蓋子不好拆開會被耳機孔卡住要注意下,
(拆的時候小力點那邊有個排線連著螢幕太大力搞不好連排線一起扯掉XD)
拆開後再拔掉和螢幕連結的排線就可以把機板從手機上面取下來了,
接著他的機板是雙層的底層是 CPU 和主要的 IC 元件,
上層是 Sim 卡和記憶卡的電路,
看最下面那張 JTag 的圖就知道了,
那個有個白色的底座從底座旁邊和下層機板連結的地方用指甲摳一下會鬆開,
從側面看那個底座會看到有凸出的小圓點就是兩個機板接合的地方,
(這邊光用文字很難描述說...)
這樣拆完後就會看到最下面那張 JTag 的圖了,
那圖是從網路上找來的感謝 Zamolxis

另外在 2010 年 8 月的時候電子工程專輯網站發表了,
台灣首派Android手機A60拆解分析
http://www.eet-china.com/ART_8800615096_617687_NT_75ba6563_2.HTM


該文讓我們對於相同硬體的 A688 有更深入的了解,
如果想要對照片中的硬體更加了解可以參考 Qualcomm 的內部文件,
下面是硬體零件及對應的 Qualcomm 文件編號
PM7540 80-VD691-1
RTR6285 80-VD861-1

引用 wiki 的說明:

JTAG是聯合測試工作組(Joint Test Action Group)的簡稱,是在名為標準測試訪問埠和邊界掃描結構的IEEE的標準1149.1的常用名稱。此標準用於測試訪問埠,使用邊界掃描的方法來測試印刷電路板。

藉由 JTag 可以修復因為刷了不適當的韌體導致無法開機的手機,
只要手機的硬體沒壞, 只要從另一台正常的手機上面備份韌體並利用 JTag 寫入,
詳細的使用說明可以參考 AMSS Linux Software Users Guide(80-VR192-1),
以及 JTAG/ETM Interface for ARM9-based MSM Devices(80-V7838-1),
或是 JTag 工具的使用說明,
JTag 工具目前確定有支援的是 SMTi JTag 和 ORT JTag 不過價格都差不多一萬塊左右
(這價格算是相當便宜了好用一點的都要十幾萬起跳XDD)

另外蠻久沒碰這隻手機了,
這幾天幫手機更新 2.2 韌體又發現許多好玩的東西,
像是 Cyanogenmod 也有了 A688 可用的版本,
另外 Motorola 有放出 XT502(與 A688 相同硬體) 的 kernel source,
有了 kernel source 可以玩許多新的花樣,
像是超頻(目前已經有 800Mhz 的 kernel 了), VPN, Ext4, 開 Swap, 透過 USB 連接電腦上網等等,
前幾天總算編譯成功了XD
之前都卡在奇怪的問題...
改天有空再來寫如何編譯 kernel 的教學吧XDD
https://opensource.motorola.com/sf/frs/do/viewRelease/projects.quenchxt/frs.xt5.xt502

A688 JTag Pinouts, thanks to Zamolxis

星期三, 11月 03, 2010

PlayStation 3 改機問題整理

原文 Post 在 PTT 的 Modchip 版,
自己的 Blog 也順便發一份

==================
改機前的問題

Q. 名詞解釋
A: USB Dongle = 電子狗
USB Dongle 原意是指接在 USB 上作為軟體認證的硬體,
後來只要是接在 USB 上的小型硬體也被稱為 USB Dongle,
在 PS3 改機討論所稱的 Dongle 一般泛指可以改機執行自製程式的 USB 硬體

OFW = Office FirmWare = 官方韌體
由 Sony 所發布的韌體更新檔案

CFW = Custom FirmWare = 自製韌體
由民間自行修改發布的韌體


Q. 目前 PS3 改機的方式為何?
A: 分成兩種使用電子狗或是自製韌體,
方法一是PS3接上特殊的 USB 設備,
然後利用 PS3 Service 模式的漏洞達到破解的效果,
目前都是軟改不需修改硬體電路,
缺點:
(1)每次開機都要進行改機
(2)無法直接執行 3.55 的遊戲需要修正
(3)需要電子狗
(4)無法使用 PSN (需要修正偽裝成3.55版才能使用)
優點:
(1)可以更新遊戲
(2)可以執行遊戲備份程式

方法二是使用自製韌體,
先升級到官方韌體 3.41 或 3.55,
再下載好自製韌體放在 USB 隨身碟接到 PS3 上如同更新韌體一般,
更新完後就可以安裝自製程式,
缺點
(1)目前還沒有可以執行備份遊戲的自製程式,
目前要執行備份遊戲的方法是將遊戲包裝成 PKG 檔過程比較麻煩,
不過相信很快應該就會有新版的備份程式釋出
(2)遊戲無法更新
優點
(1)不需要電子狗
(2)直接在 XMB 選單上執行跟 PSN 下載回來的小遊戲一樣
(3)直接支援 3.55 的遊戲(需使用 3.55 的自製韌體)
(4)可以使用 PSN

Q. 所有的主機都能夠改機嗎?
A: 任何版低於 3.55 的版本都可以(3.56不行)

[電子狗]
使用電子狗系統韌體版本需小於等於 3.41
3.41 以上的韌體需要先降級才能使用,
目前有支援的版本是 3.01, 3.10, 3.15, 3.41
其他版本要先升級到這幾個版本
可以到
http://www.eurasia.nu/wiki/index.php/Ps3OsRels
下載對應的韌體更新檔
(注意 3.41 有兩個版本要下載新的那個才有修正大容量硬碟不支援的 bug)
[自製韌體]
任何版低於 3.55 的版本都可以
自製韌體安裝:
http://bbs.a9vg.com/thread-1664888-1-1.html

Q. 有推薦的自製韌體嗎?
A: 3.41 版自製韌體推薦 hermes v4b
3.55 版推薦 Wutangrza/kmeaw CFW
大陸人寫的自製韌體相關問題整理
http://bbs.a9vg.com/thread-1674012-1-1.html
可以參考本版 vyser 大大所寫的刷機流程
#1DHNh6Hw (在文章列表貼上前面的代碼)

Q. 如何降級韌體版本?
A: 注意如果你的主機出廠韌體是 3.50 以上版本,
不建議使用降級程式有很大機會變磚,
另外如果是厚機降級後可能會失去藍光播放功能,
薄機也有一定機率會導致藍光無法撥放,
所以在降級之前請使用 FTP (需要先JB)備份 dev_flash 文件夾,
降級後再還原回去,
或是降級後使用修復程式修復
藍光失效修復方法 http://bbs.a9vg.com/thread-1652116-1-1.html
[需要的東西]
使用降級韌體的電子狗、兩個lv2diag文件、修改版的3.
41固件
[3.42/3.50 以下版本]
http://ps3.tgbus.com/zt/pojie/dzgjc/201011/20101118093956.shtml

[3.55 版本]
http://ps3.tgbus.com/zt/pojie/pjzx/201101/20110115025510.shtml

Q. PS3 改機的基本配備或需求是甚麼?
A: 1. PS3 主機 (電玩店老闆有賣)
2. 電子狗或其他改過的 USB 設備 (使用自製韌體不需要,部分電玩店老闆有賣)
3. 一片正版遊戲片作為引導片 (非必要, 電玩店老闆有賣)

Q. 改機後的備份遊戲是存放在何處?
A: 存放在 PS3 內接硬碟內,目前也有支援外接硬碟,
不過若是外接硬碟內的備份檔有單一檔案大於 4GB,
則有可能無法執行備份遊戲

Q. 市面上的電子狗很多我該如何選?
A: 面對電玩店老闆有如刺蛇般滔滔不絕,
介紹狗海般各類型小狗,對岸的大大寫了篇選購的教學可以參考:
http://bbs.a9vg.com/read.php?tid=1568464
注意的三個項目:
使用的晶片(蕊片),是否能夠自行更新韌體(固件),韌體是否有持續更新

Q. 我想自己做電子狗該如何做?
A: 按 '/' 搜尋 cassine 大大在本版的 "如何自製PSJB工具" 系列文

Q. 哪些 USB 裝置可以當作電子狗使用?
A: 目前可以拿來改造成電子狗的裝置一覽表
http://wiki.gbatemp.net/wiki/PS3_Jailbreaking_Devices_List
手機的部分
http://psfreedom.com/wiki/Device_compatibility_list


改機時會遇到的問題

Q. 電子狗買好了接下來該如何改機?
A: 1. 先把 PS3 主機關機
2. 拔除電源線和所有 USB 裝置 (重要)
3. 接上電源線,USB孔只接上破解棒
4. 按下 PS3 上面的"開機按鈕"並快速按下"退片鍵"
5. 成功的話應該會在遊戲選項中多出兩個★開頭的選項,
表示已經處於改機模式下
★/app_home/PS3_GAME/ 備份遊戲的掛載點
★install Package Files 安裝自製程式的選項

Q. 改機成功後如何備份遊戲和執行備份遊戲
A: [USB Dongle 改機]
猴子來襲 blog 上的威爾斯柏的圖文教學可以參考
http://psper.tw/ps3-open-manager/
1. 把 Open Backup Manager 程式的 pkg 安裝檔複製到隨身碟根目錄中
假設是放到 H:\obm.pkg
2. PS3 開機在改機模式下, 選擇 ★install Package Files
3. 選擇 obm.pkg 安裝 Open Backup Manager
4. 此時在遊戲選單中會多出個 Open Backup Manager 的程式點選執行
5. 按 "select" 鍵可以備份遊戲
6. 按 x 執行備份的遊戲

[自製韌體改機]
由於目前備份程式需要修改後才能正常執行,
所以目前的方法是把備份檔包裝成 pkg 執行,
詳細方法如下 http://bbs.a9vg.com/thread-1666010-1-1.html

Q. 有推薦的 Backup Manager 嗎?
A: Gaia Manager (GM) 介面精簡易懂
Multi Manager(MM) 有多種介面還可更換佈景主題, 不過檔案較大
Roger Manager(RM) 聽說自製系統使用此管理程式比較不會死當(?)
對於執行遊戲的相容性差異不大

Q. 怎麼把備份遊戲從電腦複製到 PS3 (或是PS3->電腦)
A: 請安裝 blackb0x ftp server
猴子來襲 威爾斯柏的圖文教學:
http://psper.tw/blackb0x-ftp-server/
或是使用 Awesome Filemanager
電腦上的 FTP Client 推薦 Filezilla 和 FlashFXP,
設定中強制使用主動模式並限制連線數為 1

Q. 每次開機都要重新改機?
A: [電子狗]
目前是每次開機都需要重新破解進入破解模式(
自製程式不用重新裝)
[自製韌體]
不用

Q. 所有的遊戲都能免引導光碟嗎?
A: 大部分遊戲可以免光碟但是還是有部分遊戲需要放引導片(任何一片正版遊戲光碟)

Q. 怎麼知道哪些備份遊戲能玩哪些不能玩?
A: 這裡有遊戲相容性列表
http://www.psjcl.com


改機之後的問題

Q. 改機後可以上網對戰或是使用 PSN 嗎?
A: [電子狗]
大陸人有放出可以偽裝成 3.5 版的破解棒韌體,
可以使用該破解棒偽裝成 3.5 的韌體連上 PSN 和上網對戰,
但是很不幸 Sony 目前已經堵住這個漏洞。
[自製韌體]
可以, 透過 fuckPSN, 可是有傳出 Sony 可能會 Ban 機的傳聞,
所以風險自負

Q. 改機後支援金手指嗎?
A: 目前還不支援 cheat engine 之類的修改程式,
不過獎盃的修改和部分遊戲存檔的修改方式已經有人找出來了
Update:
日本有廠商有推出金手指軟體,
需要另外付費購買, 但是目前尚未出現使用的詳細說明

Q. 是否支援 PSMove?
A: 3.41 版的韌體有支援 PSMove

Q. 自行更換硬碟要注意什麼?
A. satandavid 大大撰寫的從採購到更換詳細解說 :
http://forum.gamer.com.tw/Co.php?bsn=60281&sn=337192

Q. 硬碟容量支援到多大?
A: 內接有支援到 1TB, 外接 USB 有支援到 2TB
能否支援更大容量的硬碟未知

Q. 備份到硬碟的遊戲如何更新?
A: 需要下載好更新檔後透過 demomanager 安裝
詳細過程可以參考大陸人寫的教學
http://bbs.a9vg.com/read.php?tid=1569519
部分遊戲更新後可能有使用到新版韌體的功能,而無法正常執行遊戲
Update:
目前新版的韌體有支援直接更新遊戲,
所以可以直接更新, 除非更新上有問題才需要用上面的方式更新

Q. 有辦法不將 PS3 連上網更新遊戲嗎?/如何透過電腦下載遊戲更新檔?
A: 可以使用 PSNUpdateHunter 或是 Awesome Update Finder
下載 PKG 更新檔到隨身碟然後接到 PS3 主機自行安裝
PSNUpdateHunter 介紹文:
http://bbs.a9vg.com/read.php?tid=1599148&fpage=1
Awesome Update Finder 介紹文:
http://bbs.a9vg.com/read.php?tid=1599010&fpage=1

Q. 我可以自己用藍光燒錄機備份遊戲片嗎?
A: 不行, PS3 遊戲光碟有特殊的識別碼,
該識別碼在光碟生產時就直接記錄在光碟片上,
無法透過燒錄機進行修改,
PS3 用該識別碼判斷光碟是資料片或是遊戲片,
使用空白片燒錄會被當成資料片而無法執行遊戲

Q. 新買的遊戲要求更新韌體到 3.55 以上有辦法不更新就能玩嗎?
A: 有下面四種情況
(1) 刪除 PS3_UPDATE 資料夾後就可以直接玩
(2) 使用 PS SFO Editor/PS3SYS 修改 PS3_GAME\PARAM.SFO 將運行的版本改成 3.41
(3) 拿其他 3.41 遊戲的 Eboot.bin 取代原本的 PS3_GAME\Eboot.bin
這情況是 Eboot.bin 使用新的金鑰加密,
所以原本 3.41 的系統無法解密 3.42 以上版本的 Eboot.bin
代表性遊戲是榮譽勳章
(4) 上面的都做了還是無法玩 => 暫時無解

Q. 有辦法不進 Backup Manager 就直接執行備份遊戲嗎?
A: 有, 方法如下, 設定完成後遊戲會出現在 PS3 XMB 的選單上面
http://bbs.a9vg.com/read.php?tid=1601435&fpage=1

Q. 如何透過 XLink Kai 進行連線對戰
A: 設定方法及目前支援遊戲
http://disp.cc/b/modchip#109-GRM

還有大大要補充嗎??
如果有用字不恰當的地方也麻煩各位大大指正,謝謝~~