Openpilot是由Comma.ai發展的開源駕駛輔助套件,以目前的發展可以自動偵測前車、車道,並控制油門與方向盤,比起目前多數廠商的車道維持功能,有較佳的轉向力與控制品質,同時可以修改程式以避免一些惱人的駕駛監控(好孩子不要學)。
本文記錄由一般手機刷機成Openpilot,並且使用第三方的軟體-Dragonpilot0.7.8
自從裝了openpilot的駕駛輔助套件之後,變得不太會開車了(XD),尤其在高速公路上開啟車道維持之後,長途開車的過程變得很輕鬆。
但是太過於依賴openpilot之後,就開始擔心手機哪天掛掉的話,我會不知道怎麼往返中部與台北。如果從comma.ai購入備用機的費用實在是太高了,既然是開源的軟體,自行購入手機來刷機就是個選項了(官方EON費用USD499約,而且官方還不賣了,因為他們要推comma2;自行從淘寶購入最低階的話大概NTD3000)。
官方使用的手機為樂視le pro3(LEX720),品質不怎麼樣而且災情很多,同時使用時因為受日照、高溫影響常常會掛掉,電池膨脹也是個問題,另外也可以使用OnePlus 1+3T,不過我目前的殼是樂視手機,所以就還是買樂視的,雖然樂視手機目前已經停產了...但淘寶上還是有人在賣,既然是當備用機,就隨便買一台吧。
附註一下,我的車是2016prius,使用早期的giraffe及grey panda(灰熊),相關的中文資訊在對岸架的 Openpilot中文wiki 有蠻多的資訊。
本來想得很簡單,但是從一開始要用fastboot連線就不順了,剛好又遇到近期幾個url安裝的網址都失效,我也沒有舊的備份檔,只能土法煉鋼從頭來,安裝過程中下載的速度又不盡理想,只能一步步修正了。
前言講太多了,拿到手機後就開機稍微測一下各種功能是否正常(鏡頭、儲存空間等),到[關於手機]確認是否為x720或x727,只有這兩種型號可以刷OP。
以下就是刷機的步驟
1. lepro3原生系統=>開發者模式(打開usb調試和允許OEM解鎖)
設定->關於手機->點擊版本號7次以上,開啟開發人員模式
->開發人員模式->打開USB偵錯及允許OEM解損
2. 進入刷機模式(lepro3為開機鍵+音量下),確認手機有解鎖。
fastboot oem unlock
3. fastboot刷TWRP,先備份一次系統(或著不備份也可,如不備份就不用先裝TWRP,之後會被洗掉)。
TWRP為手機備份還原的工具,若避免刷機後變磚頭,可先安裝還原工具。lepro3的連結,參考TWRP安裝的步驟(刷機模式下)。
fastboot flash recovery twrp.img
fastboot reboot
4. fastboot刷NEOS 15(w/0.8.0)
可直接下載下列網址,為目前最新的NEOS。(若有更新,可在這查詢)
https://commadist.azureedge.net/neosupdate/ota-signed-eb60f7820b8b9e44790a8e5aea0b3ae0f1101ff0042a3898a9b6ab7be3d73c72.zip
下載解壓縮之後,在file/資料夾內可得到boot.img 和system.img兩個檔案
把兩個檔案放到手機的 sdcard/ 資料夾內,可用adb push 或是用 USB MTP的功能放到手機裡,然後在進到刷機模式內,執行fastboot
fastboot flash:raw boot boot.img
fastboot flash system system.img
(我第一行沒有raw會產生錯誤,不知道為什麼)
5. 開機進入由介面安裝 openpilot
如一般的openpilot安裝方式,開機後會詢問安裝DASHCAM或CUSTOM SOFTWARE,選後者,會出現一串網址。
我在這邊卡關很久,因為前陣子可用fork url都失效了,如果有可用fork url就可以直接安裝對應的版本(但須確認前一步驟的NEOS版本需對應相同)。
而我只能使用SSH的方式去安裝第三方的fork,但沒有安裝好OPENPILOT前沒辦法開啟SSH功能,所以要裝DRAGONPILOT前還是得先裝OPENPILOT(有點饒口),除非有舊的TWRP備份檔可以直接覆蓋使用,不然只能像我這樣繞一大圈。安裝的方式非常簡單,在url欄位輸入網址(官方的網址預設是最新版本)。
https://openpilot.comma.ai
6. 進入openpilot系統,開啟SSH功能(enable ssh)
開機後會有一些基礎訓練模式,進入主畫面後,左上角有設定的按鈕。
Developer Setting -> Enable SSH
實際ssh連線的方式請參考這邊
7. 以SSH方式安裝droganpilot,自設定版本(我這邊安裝0.7.8-i18n)
cd /data/ && \
mv openpilot op_backup_$(date +%Y%m%d%H%M%S) && \
git clone https://github.com/dragonpilot-community/dragonpilot.git openpilot -b 0.7.8-i18n && \
cd openpilot/scripts/ && \
./reset_update.sh
其中0.7.8-i18n可替換為其他版本(0.7.7-i18n, devel-i18n),但一樣需要對應的NEOS版本
8. 安裝對應的NEOS
DP安裝完成後,開機會顯示,NEOS版本不合需要更新,此時不要更新,以SSH連入並修改更新檔(/data/openpilot/installer/updater/update.json),留意版本需要安裝的DP相同,參考https://github.com/commaai/eon-neos/commits/master/update.json
可以直接修改update.json檔案到對應的版本,或是0.7.8版本的話網友有提供一個更快的方法
cd /data/openpilot/installer/updater
rm update.json
wget https://cdn.discordapp.com/attachments/538741329799413760/774123747257876480/update.json
9. 重新開機(reboot),依照指示升級NEOS(但其實會修改為上一步所給予的link的版本)
10. 開機後可確認右上有版本是否正確,到此步系統及即安裝完成
因recovery系統被官方換為Cyanogenmod Recover,此程式僅能回復原廠設定,無備份功能,如需備份功能可重複第2步之安裝TWRP備份軟體
(其實我沒有刷手機的經驗,第一次在一開始的fastboot就卡了很久,到處查都沒有答案,USB driver也裝了好幾個,後來才知道,USB3.0可能會不能使用fastboot(刷機),然而我手邊只有Microsoft Surface Pro,上面只有一個USB3.0(無言阿.........))(2020/12/08更新,此處並不是USB3.0的問題,而是windows10有限制無簽章的USB驅動程式,另外需要修改android_winusb.inf以配合辨識手機,晚點再來補充)
另外一點,有些人是隨便裝一個版本NEOS,然後安裝完Openpilot或是Dragonpilot(參考第5點),重新開機時會自動抓對應的NEOS,但是我在更新NEOS的過程非常緩慢而且都會失敗,而且url安裝也無法成功選取我要的版本,所以就放棄了。
紀錄一下自己摸索的過程,話說我主要的機器的DP版本還停留在0.7.3,通常來說穩定的版本就不會想要換了,除非新版本有甚麼吸引人的功能,或是控制能力有大幅的改善,我最初加入OP的版本似乎是0.6.x,那時的轉向就真的不太好。而備用機選取0.7.8的原因也是因為,comma.ai官方未來不再支援灰熊了,如果使用0.8板會無法使用,0.7.8似乎是個較穩定的版本。