這個系列的最後一天,就容許筆者來隨意記錄一下在這個 Side Project 開發過程中發生的一些瑣事吧。
筆者在 2019 年參加鐵人賽時,曾經寫過一個自動發文機器人,這次又特地把之前的程式找出來,感謝鐵人賽的網站沒有什麼大改版,我只有稍微修改了一下,然後就可以在今年繼續使用,今年還成功讓一個朋友也使用我的這個機器人,這機器人也能算是一個小小的 SideProject 吧!
發文機器人專案網址: https://github.com/taichunmin/ithelp-ironman-2023
其實在筆者心目中,這個專案還有一些想做的功能還沒做:
但經過鐵人賽這三十天文章之後,可能會先暫時休息一下吧!
在這三十天寫鐵人賽的過程中,都一直有一個矛盾,就是會不知道該寫文章還是該開發 Side Project,因為沒開發 Side Project 就沒有東西可以寫文章,但如果一直在開發 Side Project 又不確定會花掉多少時間,不知道會不會沒有足夠的時間寫文章。所以這陣子基本上都是處於閉關期,彷彿是又再次被隔離一樣,航海王真人版上線了卻還忍住不去看,也婉拒掉不少出遊。
其實筆者原本看到新版變色龍時,是抱著先買下來以後有空再慢慢玩的心態,所以從新版變色龍真的在 7/22 寄到家裡後,其實已經被我丟在旁邊很久了。
大概在 8/14 的時候,不知道為什麼突發奇想,想說看看鐵人賽今年有什麼主題可以投,然後就剛好看到有 SideProject30 的這個主題,於是就決定來想個主題投稿,想說可以趁這機會寫點文章推廣自己的 Side Project。
筆者自己之前也曾經用類似的技術在網頁上控制過 PN532 這個 NFC 讀卡機,原本想說可以寫文章記錄之前做過什麼,但又突然改變主意順便來玩已經到貨的新版變色龍,不然說真的也不知道什麼時候才會想要開始玩,不如就趁鐵人賽來仿照之前的 PN532 專案,寫出一個新的 Side Project,然後就順便在鐵人賽上寫文章做記錄。
從決定開始參加鐵人賽以後,我就突然想到可以從 Discord 討論群組中尋找寫文章的靈感,只要看大家最常詢問什麼以及遇到什麼問題,應該可以有不少值得寫值得分享的東西吧?於是我就決定把 Discord 群組討論從三月多到現在的討論都大概看過一遍,但因為在群組內都是用英文在討論,所以我看的速度真的是超級慢,只大略看過一遍大概就花了我三天時間,而且還有很多東西我其實沒有看的很仔細。但即便只是大概看過一遍,其實也看到這段時間在討論區其實也是經歷過不少的風風雨雨,筆者就來分享幾個比較大的事件吧。
事件的起源大約是在 5/14 的時候,在討論群組內突然有人分享他手上的新版變色龍照片,同時拍了一張圖片放到群組內,群組內其他人就很驚訝的詢問他為什麼他已經成功拿到硬體,他就把之前在 3/31 曾經傳過的電路設計圖連結又重新貼了一次,並說這是別人做好然後給他的:
然後他同時爆料這個募資發起人的硬體並沒有真的開源,因為在 GitHub 專案內提供的硬體檔案不完整,並且說自己的是真的完全開源,包括所有硬體的電路圖設計。後來募資發起人終於在 7/21 發現這個模仿的硬體已經開賣了:
然後兩個人就開始連續在群組內吵架吵了很多天,募資發起人一直要求對方更改產品名稱,但對方就一直說對方沒有真的開源,不足以稱自己是原版並要求模仿的硬體改名,同時還一直在分享模仿的硬體做了什麼優化之類的,還放上了一些比較圖片:
但吵架吵到最後,模仿硬體的人後來還是在 8/14 的時候,決定刪除了所有的開源資料並聲稱會把商品下架。
雖然不知道為什麼在網路上還是可以找到有人在銷售模仿的硬體。因為實在是太好奇模仿的硬體跟募資發起人的有什麼差別,所以筆者在 9/29 的時候入手了兩個模仿的變色龍,目前已經成功韌體更新,高頻低頻的讀寫模擬好像也沒發現什麼不正常的地方,但模仿的跟原版的電路以及電晶體的確是有差距,但筆者沒有這方面的專業知識,所以也不知道會有什麼差別。
以下是筆者所購買的仿冒的變色龍照片:
群組有人說變色龍沒辦法很方便的掛在鑰匙圈上,於是就有人想到可以跟募資發起人索取新版變色龍中間那層塑膠的 3D 列印檔案,結果募資發起人沒給檔案,反而是模仿硬體的人直接無償提供。
然後群組內的網友就改成了大鑰匙圈的版本,然後也同樣無償分享出來,看到這個真的讓我覺得很感動,同時也覺得很諷刺,因為新版變色龍宣稱開源,但可惜還不是真的開源。網友分享的檔案網址為 https://www.printables.com/model/552739-chameleonultra-keyring
筆者後來在網路上找了有在做 3D 列印代工的店家,成功的把大鑰匙圈的版本印製出來,另外還加碼多印了同一個網友分享的保護殼,可以搭配這個大鑰匙圈一起使用,以下是實際裝上去的照片:
這的確是目前新版變色龍最令人詬病的一點,就是募資發起人給的韌體原始碼很多功能都還沒有實作,目前韌體幾乎完全由社群進行開發。每次群組內有人問類似問題時,就會有其他人會回覆並幫忙解釋,最常提到的幾個點有:
原本募資發起人提供的韌體,沒有實作藍牙配對需要密碼的功能,當討論群組內有人在討論說沒有配對密碼很不安全,有其他人解釋說目前要先喚醒變色龍才能進行配對,至少想配對的人要先能碰到硬體。
接下來有熱心的網友直接就開了 Pull Request 實作藍牙配對需要密碼的功能,但自從這個功能的 Pull Request 被合併之後,討論群組就開始有更多人在問藍牙配對密碼到底是什麼。為了解決這個問題,有人開了 Pull Request 在文件中補上預設的藍牙配對密碼,甚至到後來有人提議應該要提供一個是否啟用藍牙配對的開關。
於是又有人開了 Pull Request,實作了這個藍牙配對密碼的開關功能,並且預設把藍牙配對的功能關閉,並提醒大家調整這個開關,需要在手機跟變色龍上清除已經配對的藍牙裝置,於是藍牙配對密碼的風波才正式落幕。
另外再 Discord 群組內,有人做了一個小專案,為了展示沒有設定密碼的新版變色龍有多麼不安全,專案網址為: https://github.com/masasron/chameleondump
如果你有在變色龍裡面寫入你家裡的門禁卡,為了安全性考量,要記得啟用藍牙配對密碼功能並且更改變色龍的預設配對密碼喔!
在 ChameleonUltra 初期,就有人幫忙使用 Flutter 寫了跨平台的 GUI,這個 GUI 的開發者還提到,在前期的開發過程中甚至是沒有硬體可以實測的。自從這個 GUI 實作了韌體更新功能之後,這個 GUI 甚至成為新版變色龍的文件中優先推薦的 GUI 程式,甚至後來還有人專門做了一集 YouTube 影片,去訪問這個 GUI 的開發者。這個影片發佈之後,在討論群組內的大家才知道原來這個 GUI 的作者還只是個學生,沒想到居然能夠做出這個 GUI 造福所有玩新版變色龍的人,想想自己這個年紀還在學業這個地獄中掙扎,真的是讓人佩服。
YouTube 影片的網址在 https://www.youtube.com/watch?v=M35qNG9Bn1c
在開發這個 Side Project 的過程中,時常都在關注韌體有沒有更新,每次韌體更新都有可能是個驚喜或者是驚嚇,例如遇到一些沒有向下相容的功能時,就會很猶豫要不要馬上進行韌體更新,例如前面提到的藍牙配對需要密碼的更新,就讓我猶豫了一個禮拜,因為一更新下去不知道會不會讓我的 SDK 直接壞掉,導致我可能要花很多時間先把 SDK 改好才能繼續寫文章。還有最近又有一個很大而且沒有向下相容的 Pull Request,是因為有人提出了一個疑問,是針對 Protocol 有時候是用 Big Endian 但有時候卻是用 Little Endian 的問題,然後就有網友決定要整個統一成 Big Endian,但這個 Pull Request 畢竟是個沒有向下相容的修改,所以已經放了很多天沒有合併,我相信也沒辦法那麼快合併,因為只要一合併下去,Discord 討論群組大概又會出現一大堆提問為什麼他的變色龍又壞掉的訊息,但感覺還是要隨時注意什麼時候會被合併,因為只要合併以後就要用最快速度去修改 SDK 的程式碼。
在 RFID 開源界的大佬 iceman 在 7/8 有發佈一個 YouTube 影片,裡面有實測新舊兩版的變色龍,在影片中可以很明顯的觀察到新版變色龍的訊號距離比舊版的差,但現在舊版的變色龍也已經因為晶片荒所以買不到了,如果想買新版變色龍的讀者可能需要自行評估喔!
影片網址為 https://www.youtube.com/watch?v=e1ES8ND2Qbs