助聽器選配調整軟體檢查更新
與本文相關的腳本源碼下載、說明、議題回報等,請移駕至 JediLin/Hearing-Aids-Fitting-Software-Update-Checkers 源碼倉儲。
因為工作或研究需求,而安裝眾多廠家助聽器選配調整軟體的夥伴,必然遭遇管理這些軟體版本的困擾。主流大廠的助聽器選配調整軟體(以下簡稱選配軟體)多半具備線上檢查更新、下載相關媒體庫等功能,這些功能可能要先執行選配軟體後從功能選單裡執行,或者要另外在電腦背景執行「更新檢查軟體」。一旦檢查確認軟體版本更新,這些選配軟體也能自動下載更新所需的檔案,提供安裝之餘也讓使用者能夠另存這些檔案的副本,以便布署到其他電腦上。
然而對於電腦安裝眾多軟體的情況,逐一執行這些軟體顯得不是很有效率,在背景執行所有更新檢查軟體也顯得太耗費電腦資源;又或者因為安全考量,不想把執行選配軟體的電腦接上網際網路,因而無法使用相關的檢查更新功能。有沒有什麼辦法,可以更容易地檢查選配軟體更新、甚至把更新要用到的檔案直接下載呢?
約莫 2022 年 10 月底,在助聽輔具使用者間知名的 HearingTracker 討論區上,有位 Blue 發起了「Universal Hearing Aid Software Downloader」討論串,在 GitHub 上提供他研究後撰寫的 Python 腳本,用來檢查 Phonak Target 及 Signia Connexx 等軟體的更新檔案,後續並陸續增加 Oticon Genie, Oticon Genie 2, Philips HearSuite, Sonic ExpressFit, Unitron TrueFit, Widex Compass GPS, Bernafon OasisNXT, Rexton Connexx, ReSound Aventa, ReSound Smart Fit 等軟體的支援。
然而 HearingTracker 的使用者普遍不具程式開發背景,而且助聽輔具領域向來有許多不肖人士虎視眈眈,即使這些腳本的源碼就在那邊供眾人檢視,許多 HearingTracker 使用者仍對 Blue 抱持懷疑。2023 年春季期間,Blue 刪除了他在 HearingTracker 發起的文章(討論串仍然保留著,更名為「[post deleted]」),他在 GitHub 的 Bluebotlabz/Hearing-Aid-Software-Downloaders 源碼倉儲也轉為不公開(或刪除),不過有幾個人曾對源碼分支 (fork),例如 Markismus/Hearing-Aid-Software-Downloaders;我自己從 v1.7.4 版起開始在本地端留存備份,最後保留到的版本為 2022 年 12 月 6 日 v1.8.0 的釋出候選,我從 2023 年初起,開始著手擴充支援的軟體項目。
首先我以 Blue (Bluebotlabz) 撰寫的 Unitron 腳本為基礎,改寫出 Hansaton 腳本,再從 Signia 腳本改寫出 Audio Service 及 A&M 腳本;後來我獨自對 Starkey Inspire OS 及 Starkey Pro Fit 進行研究,利用 Blue 的 libhearingdownloader.py
函式庫完成相關腳本。
這些改寫及研究的過程細節暫且擱置不細說,有興趣一起研究的夥伴姑且可以留意幾個細節:
- 有些軟體更新檢查的 API (Application Programming Interface) 會核對本地端及遠端的時間差異,如果相差太多則視為異常呼叫而不傳回檢查結果。
- 有些軟體的更新布署採分區進行的機制,因此呼叫 API 代入的國家地區代碼將導致傳回不同的檢查結果。目前為止我還沒有發現哪套軟體會根據 IP 地址來判斷國家地區,但不代表未來也不會有。
除此之外,我覺得原本 Blue 採用的名稱(「下載器」)很容易招來不必要的關注,所以我決定改稱為「更新檢查器」。目前我維護調整過的版本也已經放到 GitHub: JediLin/Hearing-Aids-Fitting-Software-Update-Checkers。對於只是想要「使用」這些腳本的夥伴,相關步驟的簡要說明如下:
- 下載並安裝最新版的 Python,記得要把
python.exe
路徑加入PATH
環境變數,然後要重開機(這個步驟每台電腦只需要做一次)。 - 下載最新版的 Hearing-Aids-Fitting-Software-Update-Checkers.zip 檔案並解壓縮。
- 執行(例如用游標雙擊)前一步資料夾中的 start-Windows.bat 批次檔,接下來依照畫面指示進行即可;初次使用可能要花比較多時間,因為程式腳本需要安裝相關的函式庫,之後就會快很多了。
大概是這樣。詳細說明請參考上述腳本的 README 文件;如果對程式腳本有任何修改意見,歡迎直接提出修改建議給我,或者發議題也可以。