跳到主要內容

發表文章

研究VOLVO的PIDs (5):ELM327界的賓士

前言,椅子界的賓士 十年前和同事去辦公椅專門店,Herman Millar經典的Aeron Chair最合我胃口,只是報價35K嚇得我吃吃手,同事這麼勸敗的 你可能買不起賓士,但是椅子界的賓士還是沒問題的 Aeron非常耐用,十年來沒有任何零件鬆脫。每天支撐我的背,工作一整天忘了它的存在。好的工具解決問題,同時不產生新的問題。如果您要找張辦公椅,那真的值得去試坐看看 ELM327界的賓士:OBDLink MX+ 接下來我們聊一下,為什麼 OBDLink MX+ 堪稱ELM327的王者 原因1:他賣得很貴 沒牌子賣10塊美金,Vgate賣20塊美金,OBDLink MX+要賣120美金!所以要問,貴是不是貴得有道理 原因2:通吃Android/ iOS OBDLink MX+同時支援Android/ iPhone都能用,下足苦功和$$搞MFI認證真的不容易 OBDLink MX+支援SPP(Serial Port Profile),這是藍芽標準介面,全世界的ELM327都走這條路,可惜蘋果不能用(故意的)。蘋果的周邊要過 MFI 認證,支援iAP2 Profile,這條錢可能認證花一次,甚至每個硬體都要再付,基本上是蘋果稅的概念(微軟也有類似的稅)。一般iPhone可以用WiFi版繞過去,但先前我測vgate WiFi版也有相容性不好的症狀,品質未必可靠 原因3:安全性好,有一顆實體的連接按鈕 大多數ELM327配對的密碼是1234,任何人都能連;OBDLink MX+有顆實體的按鈕,要按下才能連線,避免不明人士惡搞 原因4:支援MS-CAN,SW-CAN OBDLink MX+支援MS-CAN(VOLVO/Ford車都有),SW-CAN(賓士車有),可以和車上更多的ECU裝置溝通.我正是看到Car Scanner Pro跑出一堆MS-CAN的PID才決定狠下心買一顆(好貴啊!) 原因5:免費軟體更新服務 OBDLink MX+提供 韌體更新 ,代表廠商持續修補錯誤,提供服務。假如iPhone某一版突然修改通訊協定,有韌體更新才能持續修補軟體;某道ELM327的指令有bug,也可以快速的修正 原因6:支持車廠專屬的Code OBDLink+ MX+ 專屬的APP 提供 車廠專屬的PID ,只有最高階的MX+才有。這些內碼大概都從車廠專屬的診斷工具, 逆向工程 弄出來,...

研究VOLVO的PIDs (4):造一台車,學習逆向工程

引言 這一篇來講一些黑客的技巧,我要造一台假的車,藉由改變這台車的行為,觀測Car Scanner Pro的反應,深入研究各種PID 和原裝貨一樣,這台車有兩條CAN Bus,放上ELM327和Car Scanner Pro打交道。我在單板電腦寫了 一段程式 ,除了沒有四個輪子,他表現得VOLVO XC60完全一樣 連上Car Scanner Pro 正確回答Car Scanner Pro後,APP就認定這是一輛車,如下圖,VIN碼正確的辨識出來 以下是連線過程實錄,CAN2是APP詢問,CAN0是汽車回應。汽車ECU通訊有標準,寫在ISO 15765。下面兩頁是配菜,搭配使用即可解讀。有個瑣碎而微妙的細節:詢問用7DF(廣播封包),回應用7E8,但是流量控制封包用7E0,搞懂他們的關係就能參透OBD2協定 https://en.wikipedia.org/wiki/OBD-II_PIDs https://en.wikipedia.org/wiki/ISO_15765-2 逆向工程Car Scanner Pro 因為Car Scanner Pro能正確解讀封包,所以我想塞各種封包讓APP解讀,測試封包意義。下圖有電池相關的內碼的解析結果 單板電腦裡的軟體實作如下,他回應電池的查詢順便修改數值,在APP畫上鋸齒。Python寫起來很直覺,大概看上去就知道在做什麼 很酷吧!真的車不可能畫出這種圖😁 結論 藉由中間人攻擊,我們能觀測Car Scanner Pro查詢使用的PID;再用這篇文章的技巧,就能正確解讀每個封包的具體意義。如果想寫功能一樣的APP,用這兩招就能抄答案了 這個技巧的用途多多,藉著建構一輛車的模型,除了能在APP上畫圖,也能用來窺探傳輸協定的意義。當然還有更多奇奇怪怪的用法,請發揮想像力了 如果你對這段軟體有興趣,請 自行 取用

VOLVO XC60鋰鐵評估:半年使用報告

這篇文章紀錄半年使用心得,接下來預計每半年追蹤一次,提早掛掉也會誠實面對 沒有遇到無法發動,突然熄火,螢幕突然黑掉等問題 觀測電壓,大多都在以下幾個區域 13.x,一般電壓;放開油門滑行會導引動力到發電機,電壓會稍高 14.x,汽車拉高電壓快速充電 ~15,剛發動會到這個電壓,快速讓電池回充,在一分鐘內會回到14.x。不會長時間處在這個區域(這個區域略為接近鋰鐵電池的充電極限電壓,略有疑慮) 自動起停的反映稍微怪一點,這一篇文章會分析 XC60的發電機需要通電(激磁)後才能發電,所以車子能控制發電機的電壓和電流。下圖是Car scanner的圖片,最重要的是上方的Alternator charge voltage request。車子啟動會短暫拉高電壓,然後就長期在13.6,自動起停做動期間就是10.6 比較怪的是下圖,發電機電壓約14.6v,電流在0A附近上下跳動。 自動起停都不會動 問題的場景和分析 這張圖車子放隔夜,這一趟自動起停無法運作。紀錄如上圖,發電機推14.6v 我猜車子認定電池 快要飽但是還沒飽( SOC=99% or 100% ) 。電腦想把電池充飽,關閉自動起停,沿路推14.6v。開到目的地,車子認定 電瓶充飽了 回去的路上,自動起停就能正確運作,並且發電機只推出13.6v,紀錄如上上圖 放隔夜後,再繼續重複上述的循環 使用半年一切正常,除了上述自動起停的反應稍微怪一點,沒有異狀。我猜XC60只認得鉛電池,也許鋰鐵電池讓XC60很想把電池充飽電。如果有人知道原因,希望能指點迷津一下

研究VOLVO的PIDs (3):UDS通訊協定超簡介

引言 這篇繼續聊怎麼讀電瓶SOC,224028。讀完以後,您會知道汽車ECU通訊的UDS大概是什麼,以及224028其實是22 + 4028 從改晶片開始聊UDS Reference 請參考下圖,UDS是汽車ECU通訊的標準介面,VOLVO也採用 UDS的標準的ID組合 0x726(發送請求)/ 0x72E(ECU回應) UDS定義很多 標準服務 ,比如最有趣的Security Access Service,0x27,安全門,很複雜 工具發送0x27給車子,序號01,我要打開安全門 汽車回應0x67,序號01,附贈一把鑰匙2B466E(隨機計算) 工具發送0x27,序號02,回應一把鑰匙5FC105(根據2B466E計算出來) 汽車回應0x67,序號02,安全門打開,然後就能動內部參數了 改晶片有幾個難度,是個專業活 上述的亂碼計算公式只有車廠知道,另外安全門可能不只一道,需要逐一開啟 進了安全門,還要知道內部結構,知道表格放在哪裡 最後還需要引擎的專業知識,才動得了這些參數 看完這段大概還是不會改晶片,不過起碼大概知道怎麼回事(哈),另外他們的通訊協定都是UDS,以下有更多連結可以看 https://blog.csdn.net/qfmzhu/article/details/105756145 https://blog.csdn.net/qfmzhu/article/details/105716337 https://blog.csdn.net/qfmzhu/article/details/105747284 回來聊讀電瓶SOC 這次透過UDS來看這組封包 BEFORE ID=0x726 03224028 00000000 ID=0x72E 04624028 61 000000 // 有反應了!0x61 = 97%  AFTER REQUEST ID = 0x726, DATA=[03]224028 ID = 0x726(標準UDS request ID) LEN = 03(3 byte有效) SERVICE = 22 (Read Data) Data ID = 4028(電瓶SOC的DID本體) RESPONSE ID = 0x72E, DATA=[04]62402861 ID = 0x72E(標準UDS response ID) LEN = 04 (4b...

研究VOLVO的PIDs (2):為什麼Car Scanner會挑ELM327

選手入場 & Car Scanner Pro測試結果 VOLVO car用Car Scanner Pro搭配ELM327有相容性問題,以下是選手清單,測試結果和照片。最讓人不解的是Vgate兩款效果還不同 [O] Vgate iCar Pro BLE [X] Vgate iCar Pro WiFi (這次未測試,但WiFi真的不能用) [X] ZUS OBD2 reader [X] 不知名淘寶ELM327 中間人攻擊 用 中間人攻擊 觀測ELM327送出的命令,選手都沒有踩 我的坑 ,不過這步已經有差異 正確組(Vgate/ ZUS) ID=0x726, DATA=[3]22402800000000 失敗組(Cheap ELM327 from Taobao) ID=0x726, DATA=[3]2240 00 00000000 很詭異吧!淘寶的ELM327根本封包沒送對! ELM327 Terminal Check 不管用Torque或是Car Scanner Pro,他們都直接操作ELM327。這裡有幾篇我寫過的note,有興趣可以繞過去看 ELM327 OBD-II 心得 (1) ELM327 OBD-II 心得 (2),ELM327底層介面 ELM327 OBD-II 心得 (3),試著解析ELM327錄到的CAN封包 ELM327文件教大家怎麼送任意CAN封包 測試的命令如下 0902,讀取車子的VIN,這道命令三個選手都正確回應 ATCF72E,CF=CAN Filter,等一下接收ID=72E ATSH726,SH=Set Header,等一下發送ID=726 224028,查詢電瓶SOC狀態 Vgate BLE版 本次的模範生,有正確的回應224028命令,回傳0x4D,電瓶電量剩77% ZUS Vehicle Health Monitor Reference 有正確的送出封包,但是沒正確實做ATCF72E,他不知道等一下要收72E,最後送出224028回應NO DATA。這顆體積最輕薄,硬體很不錯(是顆藍芽SOC),網站看起來很厲害,可惜軟體沒做對! TAOBAO CHEAP ELM327 淘寶這顆大概用8051做,軟體更爛,命令是224028結果送出224000;連命令都發錯,就更不可能正確回應了 ...

研究VOLVO的PIDs (1):學習前輩Car Scanner Pro

Car Scanner Pro是一款極優秀的程式,它內建VOLVO車的profile,可以看到不少車子裡的數據。 如果看看更深入車子的狀態,裝他就對了!價格不貴,大概100台幣,能更深入研究自己的車 身為軟體開發者,我們最不缺好奇心了!以前我曾看過一些 文章 ,或是 這篇 ,上面有些神奇的PID似乎可以讀取到車子的狀態,不過我自己測試其實不成功 這裡也有一篇 福特 以觀測電池充電狀態來說,請看上圖橘色的字,224028和726,代表傳送的封包內容 ID = 0x726, DATA=[03]224028 車子回應如下,xx就是百分比,這裡的數值是十六進位;如果xx=60,代表0x60=96% ID = 0x72E, DATA=[04]624028xx 我用Torque,或是自己用Linux樹梅派都沒成功。上次折騰已經是兩年前了,就在周五晚上我準備了 中間人攻擊 ,和前輩CAR Scanner Pro學習發送命令的奧義。原來答案就在眼前,只是當年沒看出來 BEFORE ID=0x726 03224028 // 沒反應 AFTER ID=0x726 03224028 00000000 ID=0x72E 04624028 61 000000 // 有反應了!0x61 = 97%  VOLVO有很多福特的影子,像是224028都能查詢電池狀態,這絕對不是巧合!另外車友的XC70能正確使用,但是XC60得填滿8byte才會有反應!當年看VOLVO封包都是滿滿的8byte,怎麼就沒想到補0填滿試試看? 就在今夜,幫兩年前的實驗失敗找到原因了。 接下來,就可以好好觀摩前輩CAR Scanner Pro是怎麼和車子打交道。假如運氣好,希望能找出一些有趣的PID

KCDesign 高容量濾心清洗,2020/7/17,7000km清洗

KCDesign高容量濾心在2019/12/06換上,歷時約8個月開了約7000公里。從5000公里就想拆下來看了,但就是很懶,直到有車友問才勉強自己去拆 拆下來的濾心如圖,這時候就要抱怨一下了:顏色這麼深,根本看不出有沒有髒;K&N濾心的顏色更深,更看不出來(科科)。原裝紙濾心做成米黃色,髒了讓你看得出來;高容量濾心大概怕車主強迫症發作,非要洗乾淨才罷手,顏色深一點也許講得通 拆下來正反面只有一點灰塵,看起來確實很乾淨 沖水洗看看,我水開得小,什麼也沒沖下來;只好上點洗碗精,同一批水反覆的洗,好不容易水裡面似乎有一點灰塵... 放大一點,就是一點灰塵,已經同一批水反覆洗了,洗出一點點塵土 值得一提的是,洗濾心時,水穿透要一點時間,證明是有過濾效果的:樹葉,大顆的雜質,沙子,我覺得都過不去,PM2.5大概還是能穿透就是(喂)。有買這種濾心的車友,其實上車前先洗一次,會對他更有信心 以上實驗證明,台灣的空氣應該是不錯,7000公里空氣濾心什麼也洗不出來;覺得大費周章洗了濾心一點效果都沒有,好像有點笨。下次可以認真考慮車友的建議,20000公里再洗一次好了 之前買濾心寫的NOTE https://qqmlab.blogspot.com/2019/12/kcdesign-review.html