只是個偶然,iPhone 6s 處理器偵測軟體 CPU Identifier 開發歷程

作者 | 發布日期 2015 年 10 月 14 日 8:32 | 分類 Apple , iPhone , 晶片 line share follow us in feedly line share
只是個偶然,iPhone 6s 處理器偵測軟體 CPU Identifier 開發歷程


編按:本文為 iPhone 6s CPU 偵測程式〈CPU Identifier〉作者皮樂(Hiraku)所撰寫,描述了其撰寫這套可辨試 iPhone 6s 處理器版本的整個經過,原本為作者一時興起的作品,加上接續的統計數字沒想到引發一連串的後續效應,意外成了本次 iPhone 6s 的「晶片門」事件中重要的推手。

緣起

在 9 月底的某一天,應該是 28 日吧,剛好官網當天晚上公布台灣 10 月 9 日開賣,我還記得那一天我感冒特別嚴重,所以正打算早點睡覺。突然間,朋友發來了一個連結《拆解發現 iPhone 6s 系列 A9 有 14/16 nm 兩個製程版本》。我起初看一看,不是很在意內容,反正文章內說拆開才發現有分兩種,我連 6s 都等不及拿到了,何況去拆。但朋友覺得這個新聞很有意思,於是他開始嘗試用 IOKit 的方式去試著抓主機板序號,而我就在旁邊打 PS4 (說好的早點睡覺呢……),絲毫對於這件事不感興趣。

 

開工

約莫過了一個小時之後,我看他完全沒進度,於是去了解一下,瞄了一下他的 code ,覺得他用的方法不對,然後就在我的腦中搜尋解法。從我多年研究 JB 軟體的經驗中,尋找可能的 private API,接著就開始告訴他一些提示,經過一些 API 測試之後,成功抓到了手邊 5s、5c、6 Plus 的 CPU 類型,而他也幫忙完成了 UI 的部份,於是我們開始找人測試,從開工到 alpha 測試大概過了一個半小時,算是還滿快的。

 

實測

主要介面完成之後,由於我們手中沒有 iPhone 6s,於是我找了兩個日本人、一個新加坡人測,原本眾多媒體表示,iPhone 6s 應該都是三星,6s Plus 都是台積電(因為 iFixit 只各別拆了一支,加上那時候大家都以為 16nm 的台積電比較耗電,所以大家都以為是故意放在電力比較多的 6s Plus 裡面)。

iphone4.tw 配圖

結果我們找的三個人都是 6s ,卻出現了不同的結果,這在當時來說是個推翻全世界推論的大發現。但其實最初的版本有個問題,因為當時候網路上的資訊還不夠多,所以我們測出的「s8000」跟「s8003」根本不知道到底哪一個代號代表哪一家。

經過一番搜尋之後,我們發現在 theiphonewiki 上面有提到 s8003 是 APL1022,而 iFixit 下面有一個留言說 APL1022 是台積電,因此我們僅靠這唯一的線索推論 s8003 是台積電版本,還好最後沒猜錯,不然全世界的圖表就大亂了。

在可以測出同款手機有不同的 A9 廠商之後,我們開始好奇兩家 CPU 的分布了,既然會混著用,那麼到底哪一家的 CPU 比較多呢?為了實測,我就把結果串接回傳到後台,確認可以用之後,我們就用企業證書簽名發布了。

之所以不走 AppStore 管道有兩個原因:

  1. 這個東西有 private API,Apple 應該不會通過。
  2. 上架需要等 7 天, 7 天過去或許會被人搶先,我們要做,就要做全世界第一。

於是 9 月 29 日半夜兩點多,第一個版本終於正式發布了。

 

發布

發布後,其實一開始沒什麼人測,反正我也本來只是做好玩的,甚至大部份的測試結果都是有人拿舊機器,例如 iPhone 5s 來亂測的。有趣的是,最早期的時候,大家反而想拿到三星版的,因為三星的 14nm 比台積電 16nm 「看起來」製程還先進,甚至那時候還有一個好笑的公式說三星的效能好 10%,因為 (16-14)/16 四捨五入 = 10%,我一開始也是這樣以為三星的 CPU 比較好,直到開始有人評測,所有的評測結果,一面倒地顯示,雖然三星的 A9 效能好一點點,但是台積電的 A9 不耗電程度多很多,於是開始測 iPhone 6s 的人也多了,國外網站也開始陸陸續續報導這件事情。

 

統計

對岸有一句流行語,叫做「no zuo no die」,意思大概就是你不去找死就不會有事,問題都是自己捅出來的。從一開始我做這個 App,到後來統計,感覺都是「no zuo no die」,最早期的統計,是只有記錄手機類型(例如 iPhone 5s / 6s / 6s Plus ……)跟 CPU 型號,這兩個資訊而已。

iphone4.tw 配圖

後來我太無聊,加上好奇,增加了型號偵測和地區偵測,這兩項其實很簡單,例如我的玫瑰金是 iPhone 6s Plus 64 GB,就是 MKU92TA,前面的 MKU92 代表解鎖的 A1687 版 iPhone 6s Plus 64GB 玫瑰金,TA 則代表台灣,最一開始,我覺得這統計根本沒啥用,因為第一波開賣的國家其實比例都差不多,就是上下幾 % 變化而已,於是就放著不管他,直到 10 月 9 日開賣,我才發現這項統計在台灣有不一樣的意義。

 

台灣開賣

10 月 9 日凌晨,跟往年一樣,我跟著許多人一起排隊,不一樣的是,今年在隊伍裡大家熱烈討論著 iPhone 6s CPU 的話題,但幾百人當中,除了幾個本來就認識我的朋友之外,沒有一個人知道,作者就在他們眼前,我跟他們聊天時,我還在那邊說「哇寫這個軟體的人是不是吃飽太閒啊」,沒錯,我就是吃飽太閒。我真的是吃飽太閒 XD

排隊那天下大雨,我在那邊刷 PTT 文章,看到有人說,是否可以用一個叫做 libmobiledevice 來用電腦檢查 iPhone 的 CPU,腦力激盪了一下,我把以前 iPhone 3GS 時代改寫的一個小程式稍微修改,就這樣,我又邊排隊邊寫出了 Mac 版的檢測器(編按:Mac 版目前已暫時下架,但使用者仍可自行 compile)。

在早上開賣取貨的時候,我馬上把未開機的 iPhone 插上電腦,過幾秒螢幕開始發亮,之後又過了一下,我的電腦顯示了「s8000 Samsung」幾個字,於是不需要啟用(activate)iPhone 的檢測器就這樣完成了。

iphone4.tw 配圖

而後,開賣過了幾個小時,一切就如大家所見的一樣,增加的統計資料越來越多,於是大家開始發現台灣的 iPhone 6s 三星處理器佔比多到非常誇張的程度……而之後大家討論的換貨退貨找消基會……這又是另外好長好長的一件事了。

 

結論

講這麼多,其實我想說的是,這件事情真的是出乎我意料之外,原本只是無聊想知道到底能不能不拆機檢查 CPU 到底是哪一家做的,沒想到最後軟體會上國外媒體甚至上電視,這一切都是始料未及的。而我對於拿到哪一家 CPU,其實不是那麼在意,如前面所見,我拿到的是 Samsung 的版本,但我也同意 Apple 說的,平常使用的時候不會用那麼耗電的方法在弄,若是真的在日常使用造成問題,或者很多人反映,我相信 Apple 也會召回的(像是 iPhone 5 電池問題、電源鍵問題,iPhone 6 Plus 鏡頭問題都有召回)。

所以,我覺得既然買到了,就先用用看,如果真的覺得有差,再去換整新品就好。不必那麼費工夫買一堆拆到中台積電為止,其他拿去退貨(刷卡也是有額度的吧……)當然每個人有自己的選擇,我也只是提出我自己的作法,最後還是希望大家買到自己喜歡的機器!

(本文由 皮樂(Hiraku)授權轉載,原始出處為 iPhone4.TW,未經授權不得任意轉載)

延伸閱讀: