透過沒有追蹤器的第三方手錶APP,擺脫對手錶原廠APP的依賴!
購買智慧手錶或者智慧手環的時候,有無考慮過隱私問題呢?是否APP要求登入帳號才能夠使用手錶?小米就是一例,限定用自家的APP才可以使用,不能給第三方分享資料。
如果想要對穿戴式裝置獲得更多控制權該怎麼辦呢?有一群開發者製作了開源的Gadgetbridge APP,能夠繞過許多智慧手錶APP連線,並逆向實現了原本手錶的大部分功能。使用者能夠改用這個APP接收手錶的資料,資料不會傳給第三方,可以自由匯出,同時捍衛隱私權。
比較:小米運動健康APP與Gadgetbridge APP的界面。雖然後者有點醜醜的,但是該有的功能都有,甚至有些資料的統計圖表更為詳細。
Gadgetbridge讓資料完全掌握在你手上,能夠任意匯出,比如紀錄運動軌跡的.gpx檔案,自由用其他軟體讀取運動路徑。
這篇文章Ivon將介紹Gadgetbridge的功能,以及分享如何與智慧手錶配對,以小米手錶為例。
1. Gadgetbridge特色功能#
擺脫智慧手錶官方APP的束縛。Gadgetbridge能夠解放你的手錶,讓收集到的資料自由的轉移。 Gadgetbridge支援大部分手錶資料,譬如步數、心率、血氧濃度、卡路里、GPS運動軌跡、睡眠時間、打電話、接收通知等等。依照品牌不同,實現的功能也不同,需要看官方文件支援度。
Gadgetbridge支援許多品牌的智慧手錶,例如小米HyperOS、Amazfit、Nothing、華為、Sony、Pine64 Infinite Time、Fossil、Pebble、Garmin等等。可惜的是尚不支援WearOS,因此Pixel Watch和Samsung Watch的就不能用了。Apple Watch當然不支援。
Gadgetbridge收集的資料全部都離線儲存在本機,不會上傳到第三方伺服器(假設手錶沒有獨立上網功能的話啦)。但這也意味著你得自行備份資料,沒有帳號能夠雲端同步。
Gadgetbridge與其他開源的APP協作,打造開源又尊重隱私的生態系,包括用OsmAnd~導航和紀錄運動軌跡,透過Catima同步載具條碼,Breezy Weather同步天氣等等。
Gadgetbridge適合追求隱私的人使用,所以勢必得犧牲跨裝置同步的便利性。如果你是米家忠實用戶,那就不要用這個APP自作虐。
2. 安裝Gadgetbridge APP#
Gadgetbridge僅支援Android系統。Gadgetbridge原始碼託管在Codeberg,覺得界面中文翻譯怪怪的可以到這裡貢獻。
建議下載F-Droid的版本,不要用Play商店版的Bangle.js Gadgetbridge,權限會受限。
開啟後,Gadgetbridge會申請一大堆權限,這是正常的。
Android 12以上版本可能有些權限無法申請,需要進入Android多工畫面,點選Gadgetbridge APP圖示,按右上角「解除受限制的設定」才能繼續。
Gadgetbridge有時候會被系統殺掉背景程式,導致與手錶斷線,建議開啟電源無限制模式。
- 然後就能開始配對了。
3. Gadgetbridge與小米手錶配對#
我的手錶是紅米Redmi Watch 5 Lite,根據Gadgetbridge官方文件,功能大部分正常。不過它需要一組金鑰配對,所以一定得先用小米運動健康APP初始化,產生金鑰,再將那組金鑰轉移給Gadgetbridge APP使用,然後就可以移除。
至於這個金鑰要如何取得,Gadgetbridge官方文件建議從ADB讀取APP log。
照小米官網指示,到Google Play下載小米運動健康APP,與手錶完成配對。目前小米運動健康(com.xiaomi.wearable)的版本為3.37.2
將手機接上電腦,啟用ADB偵錯。
下載Platform Tools,使用adb shell指令,讀取小米運動健康APP的log,這個檔案應該是位於
/sdcard/Android/data/com.xiaomi.wearable/files/log/
adb shell cat /sdcard/Android/data/com.xiaomi.wearable/files/log/Transfer.device.log | grep token
- 應該會印出一串英數,把deviceInfo後面的token的數值記錄下來
deviceInfo = {"accessType":0,"address":"","createBondWithoutDialog":false,"deviceName":"Redmi Watch 5 Lite ","did":"","isAppActive":true,"isConnectActive":true,"model":"lchz.watch.n65bgl","productId":"0","productName":"Redmi Watch 5 Lite","proxyConnectionFirst":false,"region":"TW","requestBond":false,"retryStrategy":0,"token":"金鑰","type":6,"userId":""}
回到手機,將小米運動健康APP強制停止。
到Android系統的藍芽設定裡面解除配對,才能給Gadgetbridge配對手錶
開啟Gadgetbridge,在「裝置」界面對手錶長按,輸入配對金鑰,格式為
0x金鑰
之後點一下列表中的手錶圖示,Gadgetbridge應該就能連線到手錶了。
配對完成之後小米運動健康APP就能解除安裝,也可以留著方便未來更新韌體。
Gadgetbridge的手錶連線狀態會一直顯示在通知欄,不想看到的就長按把連接狀態關掉。
4. 查看Gadgetbridge的統計資料#
從裝置列表的手錶圖示上面的設定圖示點選進入,這裡能夠查看統計圖表。Gadgetbridge可能不會一直在背景與手錶保持連線,有時候要手動按同步鈕下載資料。
Gadgetbridge預設會接收所有APP的通知,並傳到手錶。點Gadgetbridge左上角 → 設定 → 通知,裡面有白名單模式「允許來自所選應用程式的通知」,也就是只允許特定APP傳送通知。
開啟「請勿打擾」,讓手錶的通知設定與手機的勿擾模式同步。
點Gadgetbridge左上角 → 資料管理,設定定時匯出Gadgetbridge資料。這些資料主要是Gadgetbridge的程式設定還有手錶統計的資料,算是Gadgetbridge APP的備份,目前沒有其他APP能讀取。不過大部分資料以SQL儲存,用電腦工具讀取便能轉成CSV表格。
5. 分享天氣到小米手錶#
小米手錶的天氣資訊是由手機端APP提供的,Gadgetbridge沒有天氣功能,需要外接。
安裝Breezy Weather,這個APP能從多個來源獲取天氣資訊,不需要付費
在APP設定 → 小工具與動態桌布,開啟分享資料給Gadgetbridge,手錶端就能顯示天氣了。
6. 追蹤小米手錶運動軌跡#
我的這支小米手錶可以獨立運作,透過GPS紀錄運動軌跡,再將資料傳到手機。
在手錶上面開啟應用程式選單,開始運動。之後由Gadgetbridge同步手錶的資料。
點Gadgetbridge左上角 → 設定 → 地圖,選取一個資料夾。並依照指示,手動到MapsForge下載台灣的地圖,然後放到資料夾。
之後點選Gadgetbridge裝置列表,點選走路圖示,才能顯示手錶紀錄到的地圖路徑。
另外一種檢視軌跡的方式:在這個界面點選分享,儲存.gpx檔案,匯出Gadgetbridge的.gpx資料。
再開啟OsmAnd~,側邊欄 → 我的地圖,匯入.gpx檔,便能將運動軌跡顯示在OpenStreetMap上面。
要是手錶不支援GPS的話,也可以讓Gadgetbridge呼叫OpenTracks APP,自動用手機GPS開始紀錄路徑。這款APP是Google地圖時間軸的開源替代品,允許使用者追蹤路線並存檔為.kmz檔案。這份資料裡面除了GPS路線圖之外,還可以加入中途停靠站,嵌入景點照片。
使用例子:爬山的時候走到一定距離就標記一個點,並拍照紀念。結束之後就能得到含有地圖標記的旅遊紀錄。
7. 更換小米手錶的錶盤#
在Gadgetbridge裝置列表界面,點上傳圖示進入檔案上傳介面。
如果切換到Gadgetbridge之前已經下載過錶盤,則可以切換現有的錶盤。要用新的得手動找錶盤.bin檔案。
小米手錶有官方開發的EasyFace自製錶盤。專有軟體,僅支援Windows。預設中文版太舊,Releases處的英文版支援更多新手錶型號。
或者使用第三方開發的Mi-Create,支援Windows,開放原始碼。
Gadgetbridge不能任意更換錶盤背景圖片(即使錶盤支援自訂圖片),這方面還是得用小米官方APP。
8. 如何更新小米手錶韌體#
Gadgetbridge的裝置設定頁面能夠上傳韌體更新。
但除非你有辦法搞到更新檔,否則沒有辦法從Gadgetbridge更新。
建議將手錶與Gadgetbridge暫時中斷連線,再回到小米健康APP裡面更新韌體。