Re: [情報] 震驚!iPhone5s幾乎所有傳感器都存在問題已回收

看板iOS作者 ( )時間10年前 (2013/10/21 11:14), 編輯推噓68(68031)
留言99則, 69人參與, 最新討論串4/4 (看更多)
文章內有對, 也有不對的地方. ※ 引述《threee ()》之銘言: : 以下節錄文章片段: : 為什麼iPhone 5s的加速計會出現故障?RealityCap的CEO Eagle Jones找到原因,是硬件 : 設計方面的問題。 : 根據Chipworks以及iFixit的拆解,他發現iPhone 5s改採用的加速計型號是Sensortech : BMA220,而非以前在iPhone 5、iPhone 4s、iPad 2等蘋果產品裡的意法半導體L3G4200D : 。這兩項產品有什麼差異? 只有iPhone5是用 L3G4200D, 6軸的(3軸g-sensor, 3軸gyro). 之前的iPhone 4/4s, iPad有用6軸的320DL, 330, 也有用兩顆ST的IC兜起的. 甚至iPad也有用InvenSense的 MEMS. 不過倒是第一次用 Bosch 的G-Sensor沒錯. : Jones解釋,衡量加速計的性能,有兩項關鍵指標: : ‧意法半導體的噪聲密度(Noise Density)和Bosch的輸出噪聲(output noise),這兩 :  個數據將影響加速計測量結果的精準。從規格表來看,Bosch的加速計在這方面要遜色 :  於意法半導體的。但經過實際測試,iPhone 5s的輸出噪聲數據與此前的iOS設備相當。 當然沒差, 因為 ST 的 Noise Density是指 Gyro 的雜訊, 而 Bosch 的Output Noise 是G-Sensor, 根本不是指的同樣的東西. : ‧初始偏差量(zero-g offset)。這個數據表明,為了保證數據輸出的準確,因此廠商 :  會首先進行校準。不過這項數據將隨著物理壓力或溫度的變化而變化。而Jones在這項 :  數據中發現了問題。意法半導體加速計的初始偏差量為+/-20mg,而Bosch的為+/-95mg :  。——用我們看得懂的話來描述,+/-20mg 相當於+/-1°的偏差,而+/-95m則相當於 :  +/-5°的偏差。 本來加速計(g-sensor)或是陀螺儀(gyroscope)這種MEMS的東西, 就會因為 溫度, 濕度, 緯度, 或是海拔的不同而產生誤差, 而每一個 IC 出廠時也會因為製程上的問題而會有所謂的initial offset. 所以每個 IC 或是做成成品後, 要出廠前都還要做一次校正. 不過STMicro的 sensors在封裝時都有做校正了, 廠商不用再校正一次.(spec上寫的). 而Bosch則是比較彈性一些(麻煩?), 他的IC裡面有帶EEPROM, 廠商要自己做校正一次, 然後把值寫在他的EEPROM裡, 以後每次power on後就不用再校正. 不知道是Apple忽略了這點的不同, 還是基於生產成本的問題. (因為加一站校正的站就多一個成本), 似乎這個校正動作並沒有做. Apple為什麼可以忽略, 下面我會說明. : 不能說蘋果是為了節省成本而採用Bosch的加速計,因為兩者的報價大致相當,約1美元。 : 所以,蘋果是因為別的原因採用Bosch的產品——Bosch加速計的電壓為1.8V,而意法半導 : 體的為2.5V,這個差異前者的耗電量比後者低。 這個是完全錯誤的假設, Bosch的工作電壓是 1.6V ~ 3.6V沒有錯. 但是在 iPhone5s後, 多了一顆NXP (M7) 的co-processor, 用來當做所有sensor的中間處理器 (sensor hub), 那既然所有的snsor都要接上同一顆M7, 不管是用SPI, 或是I2C界面, 一樣要用同樣的電壓, 所以大概都是接3V左右的電. 不會有Bosch的g-sensor用1.8V, 而ST的gyroscope接2.5v的情形. 況且單就g-sensor幾 uA 的耗電, 在手機應用裡根本是可以忽略不計的. : 現在問題是,iPhone 5s已經開賣,處於種種原因那些有問題的手機未必能夠得到更換, : 那麼有什麼辦法能夠解決加速計數據偏差的問題?Jones最後提出的方法是,開發者可以 : 在應用中增加一個校準量,讓應用的表現正常。 : 文章裡的一些名詞沒有連貫 : 總之結論就是Apple為了讓5s更省電 使用新的加速感應器 : 但相較於iPhone 5或更舊的設備 新感應器的誤差值較大 : 而Apple沒有將其校正就把5s拿出來賣 才造成了這次災難 : 英文原文 : http://www.realitycap.com/iphone-5s-accelerometer/ 不知道是不是有人沒事找事, 還是真的不懂, 有用過 iOS 的Core Motion Framework就知道, 開發者可以用 CMAccelerometerData, CMGyroData Framework 來得到sensor的原始資料(raw data), 然後自己處理, Raw Data裡一定會存在初始誤差, 或是可以用 CMDeviceMotion, 這個Framework, (裡面有g-sensor跟gyro) 基本上這個 framwwork已經幫你把初始誤差去除掉了, 而且加上了Apple自己的演算法, 得出來的值是很漂亮的數據(沒有雜訊), 可以直接拿來用, 而不用自己去處理 raw data. 大部份的開發者, 我想都是直接拿這個來用, 最簡單. 如果你用的App有問題的話, 你可以寫信給開發者, 叫他直接用 CMDeviceMotion framework, 就不會出現 g-sensor有誤差的情形了. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.69.87.123

10/21 11:20, , 1F
好專業!
10/21 11:20, 1F

10/21 11:27, , 2F
有看不懂有推
10/21 11:27, 2F

10/21 11:28, , 3F
推超專業QQ
10/21 11:28, 3F

10/21 11:30, , 4F
專業推!
10/21 11:30, 4F

10/21 11:32, , 5F
結論:本次問題可用軟體更新的方式克服 結案~
10/21 11:32, 5F

10/21 11:33, , 6F
你不要這麼專業好不好~
10/21 11:33, 6F

10/21 11:39, , 7F
我記得登山表好像也要先在海平面做校正才會準 不知道跟蘋
10/21 11:39, 7F

10/21 11:39, , 8F
果這裝置裡的儀器是不是類似的情況
10/21 11:39, 8F

10/21 11:45, , 9F
推啦 太棒了 原本擔心的問題還是可以解決嘛!
10/21 11:45, 9F

10/21 11:47, , 10F
好多專有名詞看某 有無分析專業懶人包
10/21 11:47, 10F

10/21 11:51, , 11F
強 懂硬體又懂軟體 請受我一拜
10/21 11:51, 11F

10/21 11:51, , 12F
簡單那說那些測試程式是測sensor原始資料的.有誤差正常.
10/21 11:51, 12F

10/21 11:51, , 13F
要寫app的話, 請用 iOS自校正後的資料來用.
10/21 11:51, 13F

10/21 11:52, , 14F
測原始資料沒什麼意義的意思.
10/21 11:52, 14F

10/21 11:53, , 15F
所以這次的是該測試的APP取得的sersor 資料有問題這樣?
10/21 11:53, 15F

10/21 11:56, , 16F
有看不懂有推
10/21 11:56, 16F

10/21 11:59, , 17F
有看不懂先推 怒看留言得解答
10/21 11:59, 17F

10/21 12:04, , 18F
我有問題...回頭看了一下原始網頁,他有測OS內建羅盤
10/21 12:04, 18F

10/21 12:05, , 19F
也有相同問題,那表示Apple自己開發的APP也沒注意到這
10/21 12:05, 19F

10/21 12:05, , 20F
個問題囉?@@?
10/21 12:05, 20F

10/21 12:10, , 21F
完全看不懂只好推了
10/21 12:10, 21F

10/21 12:17, , 22F
X看不懂啊!快推免得別人說我們不懂XD
10/21 12:17, 22F

10/21 12:20, , 23F
這種文章看起來真是爽度滿點!!
10/21 12:20, 23F

10/21 12:28, , 24F
嗯嗯,跟我想的差不多
10/21 12:28, 24F

10/21 12:31, , 25F
怎麼會看不懂,就那個什麼g的啊
10/21 12:31, 25F

10/21 12:39, , 26F
先推了,專業!大部份都看不太懂了!
10/21 12:39, 26F

10/21 12:44, , 27F
假如每支誤差都不一樣的話 請問如何請開發者用CMDeviceMotion
10/21 12:44, 27F

10/21 12:44, , 28F
校正呢?畢竟每隻都不一樣
10/21 12:44, 28F

10/21 12:55, , 29F
專業>///<
10/21 12:55, 29F

10/21 12:57, , 30F
逼我直接End給推
10/21 12:57, 30F

10/21 13:01, , 31F
你不要這麼專業好不好~
10/21 13:01, 31F

10/21 13:08, , 32F
專業推
10/21 13:08, 32F

10/21 13:10, , 33F
幾乎都看不懂XDDDDDDDDDDDD
10/21 13:10, 33F

10/21 13:10, , 34F
拜託不要的人讓一隻給我==
10/21 13:10, 34F

10/21 13:15, , 35F
快推,不然別人也為我看不懂
10/21 13:15, 35F

10/21 13:22, , 36F
樓上,這串推的至少一半看不懂阿
10/21 13:22, 36F

10/21 13:24, , 37F
快推,不然別人也為我看不懂
10/21 13:24, 37F

10/21 13:33, , 38F
幸好我是工科混畢業的,而且這種文法常看工程師寫,沒問題
10/21 13:33, 38F

10/21 13:40, , 39F
大概知道想表達什麼 細節沒寫過APP就不懂了
10/21 13:40, 39F

10/21 13:41, , 40F
原來如此(?)
10/21 13:41, 40F

10/21 13:53, , 41F
電機系看得懂路過 雖然工作電壓那邊的元件不知道是啥...
10/21 13:53, 41F

10/21 13:54, , 42F
完全看不懂orz
10/21 13:54, 42F

10/21 14:00, , 43F
快推,不然別人也為我看不懂
10/21 14:00, 43F

10/21 14:03, , 44F
整個不懂,也推了~~~
10/21 14:03, 44F

10/21 14:04, , 45F
評語:寫得不錯,下一步就是寫到讓大家都懂,這才是高招
10/21 14:04, 45F

10/21 14:04, , 46F
所以原po認為可以用修改軟體或韌體的方法消除誤差?
10/21 14:04, 46F

10/21 14:05, , 47F
(常寫步驟說明書的路過...
10/21 14:05, 47F

10/21 14:08, , 48F
無力反駁
10/21 14:08, 48F

10/21 14:25, , 49F
恩 果然通通跟我想的一樣(點頭)
10/21 14:25, 49F

10/21 14:25, , 50F
寫得真好,快推!
10/21 14:25, 50F

10/21 14:27, , 51F
專業,醫學院看不懂路過
10/21 14:27, 51F

10/21 14:53, , 52F
你這樣寫一篇 5s能被酸的的點又少一個了 酸民怎活??
10/21 14:53, 52F

10/21 15:31, , 53F
嗯嗯,我正想這麼說
10/21 15:31, 53F

10/21 15:39, , 54F
嗯嗯 果然是這樣 跟我想的一樣 (有說中文的版本嗎?)
10/21 15:39, 54F

10/21 16:13, , 55F
iOS內建的水平儀也一直有-1度的誤差,可以校正嗎?
10/21 16:13, 55F

10/21 16:14, , 56F
我是把手機平放在桌上,順時針慢慢旋轉。一直都是-1度
10/21 16:14, 56F

10/21 16:14, , 57F
如果是桌面不平的話,應該轉180度時,會顯示+1度才對?
10/21 16:14, 57F

10/21 16:22, , 58F
為什麼你要這麼專業
10/21 16:22, 58F

10/21 16:38, , 59F
只看得懂Gyro, 美國路邊攤很多都在賣,很好吃!
10/21 16:38, 59F

10/21 16:38, , 60F
測水平你轉手機做什麼? 總而言之, 那個測試值是參考用.
10/21 16:38, 60F

10/21 16:39, , 61F
那個值不會影響真正app的使用, 除非開發者沒用對.
10/21 16:39, 61F

10/21 18:03, , 62F
不懂 0rz
10/21 18:03, 62F

10/21 19:18, , 63F
嗯嗯 真有見地
10/21 19:18, 63F

10/21 19:39, , 64F
恩恩End先 太專業了求科普
10/21 19:39, 64F

10/21 20:46, , 65F
推專業說明 簡單說就是有API給你還不用怪我囉
10/21 20:46, 65F

10/21 21:43, , 66F
簡單地說就是開發者直接拿apple算出來的資料來用就不會有誤
10/21 21:43, 66F

10/21 22:17, , 67F
希望這種專業文可以越來越多
10/21 22:17, 67F

10/22 00:37, , 68F
專業!不過 L3G4200D是單純的3軸gyros 不是6軸A+G , 沒聽過A
10/22 00:37, 68F

10/22 00:37, , 69F
pple有用過LSM320(3A+2G)或LSM330(3A+3G)
10/22 00:37, 69F

10/22 00:45, , 70F
小弟鍵盤推測Apple有作過Bosch g-sensor offset calibration
10/22 00:45, 70F

10/22 00:45, , 71F
但是也許出
10/22 00:45, 71F

10/22 00:45, , 72F
廠後PCB應力變化又造成offset, ST 之前的g-sensor有相對比
10/22 00:45, 72F

10/22 00:45, , 73F
較穩定
10/22 00:45, 73F

10/22 01:30, , 74F
嗯嗯,不錯,跟我的見解差不多
10/22 01:30, 74F

10/22 01:53, , 75F
嗯 跟我當初想的一樣
10/22 01:53, 75F

10/22 08:23, , 76F
太專業了 看無-.-
10/22 08:23, 76F

10/22 09:19, , 77F
5樓簡短有力.謝謝~~
10/22 09:19, 77F

10/22 09:37, , 78F
LSM320DL其實是6軸的, 因為專利問題才當5軸賣.
10/22 09:37, 78F

10/22 09:37, , 79F
至於Apple用的都是remark過的.
10/22 09:37, 79F

10/22 10:55, , 80F
不推好像我看不懂一樣~
10/22 10:55, 80F

10/22 11:22, , 81F
恩..太專業了...看不懂耶..
10/22 11:22, 81F

10/22 11:58, , 82F
但我想問 為什麼內建的指南針水平儀還是不準
10/22 11:58, 82F

10/22 12:22, , 83F
如果内建的APP 撈錯API 也是會造成同樣的狀況阿
10/22 12:22, 83F

10/22 13:08, , 84F
所以問題是在sensor給系統端的值本來是沒問題的?
10/22 13:08, 84F

10/22 13:08, , 85F
或是說本來就有一個誤差值在,系統在自己做校正
10/22 13:08, 85F

10/22 13:09, , 86F
然後今天校正的值不準,所以軟體開發廠可以去抓原始
10/22 13:09, 86F

10/22 13:09, , 87F
sensor送出來的值,在自己做校正嗎?
10/22 13:09, 87F

10/22 15:56, , 88F
恩 看不懂推......
10/22 15:56, 88F

10/22 21:24, , 89F
推 有現成Framework可用就好了
10/22 21:24, 89F

10/22 21:54, , 90F
小弟不才還是看不太懂為什麼sensor的片間差在出廠時
10/22 21:54, 90F

10/22 21:54, , 91F
不需要做額外校正之類的程序,卻可以靠CMDeviceMotion
10/22 21:54, 91F

10/22 21:55, , 92F
這個Framework得到正確的值?如果所有的sensor誤差值
10/22 21:55, 92F

10/22 21:56, , 93F
都固定還比較能想像能靠Framework來解?還是我理解有誤?
10/22 21:56, 93F

10/22 22:00, , 94F
看不懂專業推~~
10/22 22:00, 94F

10/22 23:08, , 95F
軟硬都懂 真是高手
10/22 23:08, 95F

10/23 02:57, , 96F
原來如此
10/23 02:57, 96F

10/23 09:19, , 97F
怎麼校正的Apple只有用一句 "very unique algorithm"帶過.
10/23 09:19, 97F

10/23 09:20, , 98F
不過一般的做法是9軸一起做運算(3陀螺+3加速+3電子羅盤)
10/23 09:20, 98F

10/24 19:57, , 99F
了解,多謝大大,這樣就能了解為什麼能靠軟體修正了~
10/24 19:57, 99F
文章代碼(AID): #1IP9mfkS (iOS)
討論串 (同標題文章)
文章代碼(AID): #1IP9mfkS (iOS)