Tool to Fix Corrupt FIT & TCX Files 修復損害Garmin檔案的工具

Debug

這篇提到將損壞的Garmin檔案救回部分資料的方式是透過備份資料GPX (註1)。GPX其實就是GPS軌跡檔,因此記錄如心率溫度迴轉速等就無法取得。

這個討論串”Corrupt .fit files“都是Edge 500使用者上傳損壞的FIT檔案請求修復。在寫這篇時,這串已經累積到59頁;還在持續增加中!

我曾經將損壞檔案請Garmin Support客服維修 (因為上傳Garmin Connect失敗,他就建議跟Garmin Suppor聯繫),但客服只有說無法修復。老實說,Garmin的損壞檔案機率已經超過Windows當機的機率。

Firmware一堆蟲的問題也在另一條討論串裡提到。反觀國內 (如在01論壇),我似乎只看到稱讚Garmin客服的硬體更換服務,卻都沒有怎麼報怨使用上的問題。不禁讓我在想兩邊的使用者大不同。(註2)

在長期Garmin Support無法提供有效的解決辦法之下,使用者只好先是自求多福,再來自力更生。Mathias (aka MATHIKRALLI in Garmin forums) 提供了修復FIT & TCX檔案的工具。透過這個工具,救回了我PBP 1200k其中一個檔案。雖然不是很完全,但也有95-98%的回復率。

Installation 安裝

1. 如果有安裝Microsoft Access,就可以直接使用。如果沒有Microsoft Access或是不想安裝Access,則需要安裝Access Runtime (free)。

Access 2010 Runtime 要175MB (x64 要212MB)。嫌這檔案過於肥大的可以安裝Access 2007 Runtime (56MB)。我試過後者,沒問題。

2. 下載工具及使用說明。解壓縮後將檔案repairfitfile.mde放在你有寫入權的檔案夾裡。

How to User 如何使用

請參考使用說明。這裡只簡略解說。我以2011-08-22-04-26-44.fit (PBP Stage 3 to Stage 4)為例。這檔案Garmin Connect 及 Training Center都不能讀取。

打開repairfitfile.mde。選左上”Import…”後,會有視窗選擇要修復的檔案。

匯入後,工具就會自動修復,直到修復得”差不多”。以我這檔案,有出現這個警告文字,要我檢查”Device Info and misc”下的Manufacturer 製造商及Product 產品這兩欄資料。

點”OK”後,另一個視窗出現,告訴我匯入&修復完成。要我自己檢視資料,看還有沒有問題。

我先是check Time zone是UTC+1且是日光節約時間。到”Device Info and misc”,修改Manufacturer & Product資訊(視窗選項)。但注意到Time (UTC, local)的時間錯誤。

這是因為這部分的資料(“Device Info and misc”)損毀,所以有些部分得手動修改。前面那一欄是UTC+0的時間,後面是Local的時間(i.e. 2011-08-22-04-26-44)。

修正後,檢查紀錄 (Records)。Manual有詳細說明 (must read!)。這裡我指出哪些需要注意的。

首先,看最下面的Max/Min紀錄。發現Max竟是有3860m海拔,功率37666瓦!這根本不可能,我有神腿嗎?我連功率表都沒有。找出那橫列的資料。在最右邊欄位打勾,按”Delete”就可以刪除。

再看看Max/Min紀錄。我沒有帶心率帶,所以那個有心率的就是錯誤資料 (那點的溫度也是0)。這點可以刪掉。如果其他地方沒錯,也可以只手動改心率及溫度。(我先採用前者)

滿意後,按上面”Export file”。選擇輸出的格式。Manual有解釋fit與tcx資料的差異。

注意的是”distance values”。我這段的距離是88.54 km (online map tool),所以我選擇89.3 km。(也許沒有修的很完善,所以這兩選項的數字有差。)

注意檔名要跟原來的不一樣,免得原始檔案被覆蓋。下面的選項是可以將原始檔附檔名改為”sav”.

Recovery Result 修復結果

原始檔案139KB,修復後變成96KB。好像刪得還不少….

將這檔案上傳到Garmin Connect (GC)。No problem! Ya!

不過,地圖及資料做圖會發現有點小錯。某一點的資料會跳回前面在往前 (Is this the reason why the recalculated value is larger?)

如果匯入Training Center (TC) (會出現在”Imported Activities”資料夾裡),那段還變成直線。資料細節展現在GC跟TC的也有些差異。如GC的平均回轉速是41 rpm — impossible vs 74 rpm in TC,另外爬高兩者也不合 (TC比較低)。

效果似乎不是很好。我不死心再匯入SportTracks 3。資料看來就沒問題了!

Conclusion 結論

Mathias的修復工具repairfitfile.mde可以救回損壞檔案95-98%的data。即使是不懂Access (like me) 在使用上也沒多大問題。雖然不是百分之百的救回,但比起完全損失來說已經是好上百萬倍。

有趣的是,同一個修復的檔案,Garmin Connect跟Training Center讀取結果不同 (註3)。更丟臉的是都沒有第三者軟體SportTracks來的好。我想,Garmin的軟體設計需要好好檢討。

[Update 2014/12/10]

也可以試試Garmin Online FIT Repair Tool

補充說明:

(註1) 有次我在Edge 500 forum 詢問GPX檔案夾的用意時,一位使用者說英文firmware的Edge 500並沒有這GPX檔案夾。

(註2) 我跟台灣及美國的客服都有交涉過。雙方的對自家Garmin產品的了解都不夠 (缺乏訓練?),所提供的解決辦法也多是無用。

(註3) Mathias第一次幫我修復的檔案匯入Training Center的結果很好,但不能被Garmin Connect接受。後來他幫我再修改,就可以匯入Garmin Connect。我上面的示範是我自己來做修改的 (總要自己練習一下),結果跟Mathias的第二次修改一樣。

關於時間記錄:

Garmin是記著UTC+0的時間。因此匯入Traing Center時候,會顯示電腦的時區上的時間。如這8/22 清晨四點的記錄在我電腦上是顯示早上10點。但匯入online的Garmin Connect則是會顯示當時紀錄的時區 (UTC+1, summer time)。

我不是很喜歡Training Center這樣的做法。應該都要顯示:1. 當時的時間 & 2. 目前時區的時間 (or UTC+0的時間)。以我的例子,我的記錄已經有三個不同時區的時間,時間的顯示不完善會造成混亂。

(Visited 4,736 times, 1 visits today)