從 Mac 傳送程式到 Micro:bit
阿恆
Hadrian 這一年參加了學校的一個 micro:bit 工作坊,每個同學都可以從老師借來一套 micro:bit 零件,學習編程和製作機械人的技巧。但是很快 micro:bit 主板與家裏的 Mac 開始鬧彆扭,無法從把編寫好的程式從 Mac 傳送到 micro:bit,家裏所有 Mac 都不行,怎麼辦好呢?
從 Mac 傳送程式到 micro:bit 的過程很簡單,只是一般的檔案「拖」、「放」,基本上不可能出錯,開始的時候很順利,但是過了兩、三個星期,即大約 2022 年 10 月的時候,一切突然失靈了。每次傳送後 micro:bit 都出現「X504」,家中所有 Mac 都有同樣情況,上網查看之後發現那表示傳送過程超時,甚麼?超時?MacOS 沒有錯誤訊息啊,還說傳送完成,在 Finder 中可以見到 micro:bit 的資料夾多了一個 .hex 的程式檔,按下「退出」,理論上連緩存的資料都送出了吧?不行,很快 micro:bit 又顯示「X504」。
我們向 Google 大神請教這個錯誤碼和 Mac 的資料,很奇怪地一無所獲,難道我們是世界上第一個遇到這個問題的人?我們認為更大的可能性是 micro:bit 的主板有故障,於是送回老師換了一塊新的,怎料新的 micro:bit 在傳送程式後仍是顯示「X504」!
這時也不好意思再找老師換一塊新的了,我於是自行上網買一塊 micro:bit 回來,反正只是百多塊錢而已,然後再細心按照 micro:bit 網站的指示傳送程序,不行!仍是「X504」!暈了。
這時唯有再一次向 Google 求救,或許精誠所至,金石為開吧,這次我們找到兩篇情況相似的文章,第一篇來自 micro:bit 網站,雖然錯誤碼跟我們的不一樣,但同樣是傳送程式失敗,文章說這情況是在 2022 年底一次 MacOS 升級後開始出現,他們已經向 Apple 反映,仍在等待 Apple 跟進,但提供了兩個解決方法。第一個用 Chrome 等支援 webUSB 的瀏覽器在網上編寫 micro:bit 程式,然後直接從瀏覽器把程式傳送到 micro:bit 主板,代替在 Finder 裏拖放的做法。另一個方法是在命令行用 rsync 把程式檔案複製到主板。
另一篇文章來自 OSXDaily,它的解決方法是在命令行使用 cp -X。
看來問題出在 Finder(或者說是 MacOS)在複製程式檔案到 micro:bit 主板時,錯誤地把檔案的 extended attributes (EAs) 一併複製到不支援 EAs 的檔案系統。不論如何,問題總算解決了,我鬆了一口氣,因為 Hadrian 可以放心繼續他的 micro:bit 課程。Hadrian 也鬆了一口氣,不用再被老師和同學質疑他搞亂了不知哪一個步驟以致出錯,甚至損壞了 micro:bit 主板。