一方面因为没什么时间,另一方面因为不敢做小白鼠,所以并没有很急着升级,昨天在家养病,看到目前各种信息比较具体完备了,就动手干了。我的整个环境是这样的:
- 我的iPhone是美版3G,升级前运行越狱的OS 2.2.1,baseband未升级。
- 我的电脑是MacBook Pro,运行Mac OS X 10.5.7。
首先,要说明2个升级3.0的原则/注意事项,下面的操作流程是基于这2点原则的。
- 很多先行者的教训告诉我们,升级并越狱之后用iTune backup恢复的话,有可能带来各种奇怪的问题,如信号不好、电量快速消耗等等,所以最好当作一部新机来重新安装和配置,这意味着原有的重要信息需要手工进行备份。
- Hactivated(使用jail-break工具伪激活)的iPhone将很大可能无法正常使用Push Notification这个3.0最重要的新功能,目前唯一的解决方案就是使用一张AT&T的卡进行官方激活——所有美版的iPhone都带有这个卡(你要是已经扔了那就找人借),这个方案只适用于iPhone 3G,2G版本目前无解,具体可以参见这里。
Step 1 Backup
其实我没啥要备份的,联系人等信息都是以电脑的为准,一些游戏存档我不在乎重来一次,本来要备份Stanza里下载的书的,后来证明这个其实无法备份,最后还是重新下载了一堆,我做的备份包括:
- Cydia的源和软件包列表;
- iTune Backup。
最后这个虽然实际上用不到,但是还是留下以备万一。
Step 2 Restore, Jail-break & Activation
关机,取出原来的SIM卡,把AT&T原卡插进去,只要是AT&T 3G卡都可以,无论之前是否激活过,然后开机,连上电脑。
使用PwnageTool制作自定义固件来升级到越狱的OS 3.0,具体流程参见这个非常详细的指引,一些注意事项如下:
- 用redsn0w也能实现一样的目的,具体指引参见这里,但是我没试,下面的描述都是基于PwnageTool的。
- 无论哪种方式,都注意不要选择让它自动激活,因为要用官方激活才能正常使用Push Notification,在General Setting中不要选择”Activate the phone”选项即可。
通过DFU安装OS 3.0及固件并重启之后,进入iPhone的网络设置中关闭3G,否则之后某些SIM卡激活会失败。
当iTune提示时选择作为全新iPhone来重新设置,不要用2.*版本的备份来恢复,这会花去更多时间,但是值得。
接着iTune会尝试激活iPhone,iPhone上会显示”Waiting for activation”,看到这个提示其实就可以了,关掉这个提示,进入下一步。
安装ultrasn0w来进行软解:
- 首先进入网络设置,配置好WiFi和VPN(可选)并确保连接好;
- 启动Cydia,添加源:
http://repo666.ultrasn0w.com
;- 查找并安装:
ultrasn0w
;- 关机,取出AT&T的卡,将原来的SIM卡重新放进去;
- 重新打开iPhone,一切顺利,找到信号之后会弹出”iPhone has been activated”信息。
Step 3 Advanced Hacking
首先开启SSH和修改密码。
- 启动Cydia,查找和安装:
OpenSSH
;- 重启iPhone;
- 用SSH客户端连接到iPhone修改root和mobile用户的密码,root帐号原始密码是alpine,是的,3.0这个没改。
破解MobileInstallation,虽然我很少用破解的软件,但是一些比较贵的软件不试用下没法下决心买,所以这一步还是要做的。
- 启动Cydia,添加源:
http://cydia.hackulo.us
;- 查找和安装:
AppSync for OS 3.0
;- 重启iPhone。
然后是对付我的上古时代的SIM卡,让它能够显示漂亮的运营商图标,因为它返回的运营商标识符是”CT-GSM”,所以需要一些特殊处理。
- 启动Cydia,添加源:
http://www.iphone.org.hk/apt
;- 查找和安装:
HK Carrier Firmware 3.0
;- 用SSH或者SFTP连接到iPhone,找到并且修改这个文件:
/System/Library/Carrier Bundles/CMCC_cn.bundle/carrier.plist
,是的,3.0有中国运营商独立的bundle了,修改方法是:打开StatusBarImages
节点,复制下面第一个item,将复制出来的item下面的CarrierName
属性改为CT-GSM
,具体的截图可以参见我之前的2.2.*升级说明。- 重启iPhone,你会看到运营商图标。
Step 4 Install JB-ed Software
- 启动Cydia;
- 添加源:
http://apt.ripdev.com
;- 查找并安装:
Icy
;- 添加源:
http://cydia.iclarified.com
;- 查找并安装:
MobileLog
*;- 查找并安装:
MCleaner
*;- 查找并安装:
SBSettings
;- 查找并安装:
WinterBoard
;- 查找并安装:
Deep
;- 查找并安装:
Cycorder
;- 查找并安装:
unzip
。- 重启iPhone。
这些软件都支持OS 3.0,标记*号的是收费软件,其余免费。现在你可以进入WinterBoard设置启用Deep这个主题(或者你选择安装的任何其他主题)。
Step 5 iTune Sync & Final Setting
重新连接iPhone到iTune,设置好各种内容的同步设定,然后开始同步,我有超过10G的歌曲和视频,这部分我会放到最后,先把联系人、铃声、图片同步好,然后是选中的应用程序们,最后是歌曲和视频。这个过程用了近40分钟,完成之后16G容量只剩下1.4G,汗。
找个舒服的地方躺下来,开始进行最后的配置:
- 重新摆放应用程序,现在跨页拖放比以前好用,不用一页一页中转了,可以直接拖过好几页。
- 测试各主要应用程序,尤其是需要联网、需要填用户名密码啥的,都一一登录测试。
- 目前我用到的唯一支持Push Notification的软件是BeejiveIM,运行一次,登录,退出程序,从电脑另一个帐号发信息,可以看到信息推送工作正常;这时候进入系统设置会看到Push Notification的控制开关——在你运行一个需要Push支持的应用之前,这个开关不会出现!如果只是为了测试Push的话,没必要去买这个10美刀的昂贵东西,可以试试这个免费的AP Mobile。
配置好上网参数:
- GPRS/Edge:我用
cmnet
接入点,关闭WiFi进行数据通信测试;- MMS:
APN=cmwap,MMSC=mmsc.monternet.com,Proxy=10.0.0.172,Max.=50000
,找台别的手机测试彩信收发。
Conclusion: My Favorites of OS 3.0 Upgrade
- 有史以来iPhone 3G最完美的软解,这解决了以前卡贴带来的一系列问题:信号切换较慢;开启飞行模式之后无法正常恢复;GPS模块启动和定位缓慢甚至不能定位。
- 使用AT&T原卡激活之后可以正常的启用Push Notification。
- 待机时间变长,我睡觉8小时消耗电量为7%,以前约为10%;使用时候电量消耗未有大的变化。
- 可用内存增加,以我的机器为例,原来是30M左右,目前空闲内存一般都有40M。
- 由于使用了新的WebKit内核,Safari渲染速度明显提高;稳定性也得到加强,关闭窗口之后原窗口自动刷新的问题更少出现,这个怀疑和上述内存优化有关。
- Copy & Paste!! 是的,这个早就该有,但是终于还是有了,而且操作手感极佳,支持图片和格式化文本也是亮点。
- 新版的SBS非常漂亮强大,BossPrefs可以退休了;SBS可以打开内置的电量数值显示,很不错。
- 彩信、短信功能的加强和操作的一些细节优化也不错。
NOTE: About Cydia vs. Icy
从我第一次使用Icy开始就非常喜欢它简洁优雅的界面以及快速的启动,但是很遗憾这次升级时的试用让我对Icy有些失望,它对于一些关键性的包依赖居然出现了严重的问题。我最开始安装OpenSSH时候是用Icy做的,结果无法正常登录,报错是:
dyld: lazy symbol binding failed: Symbol not found: _login
这明显是依赖库缺失或版本冲突,我使用Cydia重新安装之后解决。
另外,在Cydia添加Icy的方法较好(见上),如果用越狱工具同时安装两套包管理则有可能出现一些微妙的问题。
所以目前我还是两者共存,一般的事情用Icy还是可以的,但是固件升级这样重大的改变或者一些关键包的更新,还是Cydia吧。期待Icy能够早日成熟起来,它的简洁和漂亮真是Cydia无法比拟的。
Other Useful Tips
3.0有个可耻的bug,那就是当你群发短信息的时候会被默认采用MMS来发,这个可以通过修改carrier.plist来修正,对于我来说仍然是这个文件:
/System/Library/Carrier Bundles/CMCC_cn.bundle/carrier.plist
,加入下图所示的这个节点即可:
help.BenN.at
各种运营商相关的网络配置生成器,可以帮助打开tethering功能,用iPhone的Safari访问这个地址。
最新版本的SBS(3.0.1)加入了一个实验性的新功能:Free Memory,强制回收空闲内存,但是可惜把一个文件放错位置了,导致这个功能实际上并没有生效,修复方法是用SSH进iPhone,以root权限运行:
mv /var/mobile/Library/Commands /var/mobile/Library/SBSettings/