在 Mac 上不支援的讀卡機有解了!






M 系列晶片的 Mac 用戶多多少少都卡過這個:EZ100PU 插上去,HiPKI 讀不到,自然人憑證、健保查詢、線上報稅全卡住。廠商這幾年沒有出過 arm64 驅動,這台讀卡機在 M 系列晶片 Mac 上基本上是廢的。
官方文件也寫得很明確:不支援 M 系列晶片。但憑我寫軟體這麼多年的直覺,這種事應該難不倒 Claude 才對。
前幾天請 Claude Code 幫我解這件事,一個 session 讀卡機跑通了——九項 HiPKI 自我檢測全過(就是官方那個確認讀卡機正常的檢查頁),可以正常簽章。
想到應該還有其他人卡在一樣的地方,就把整套解法包成 repo 開源出來:https://github.com/andrew54068/ez100pu-apple-silicon
裡面的東西不複雜:以開源的 ezIFD 驅動為底,修掉讓它在 macOS 上打不開的三個 bug,重新做 ad-hoc 簽章,預編譯成 arm64 bundle;再加一支安裝腳本,裝之前會先把廠商那個會搶著跑回來的舊驅動清掉。任何人都可以一行指令裝好:
git clone https://github.com/andrew54068/ez100pu-apple-silicon.git
cd ez100pu-apple-silicon
sudo ./scripts/install.sh
./scripts/verify.sh
這篇記錄三層卡點分別是什麼、Claude Code 怎麼一一找到根本原因,以及它怎麼提前發現「修好當晚就會失效」這個問題。
問題有三層疊在一起
EZ100PU 插上 M 系列晶片 Mac,USB 那層是通的——系統看得到設備。但再往上,PC/SC 框架讀不到它,因為 EZ100PU 不是標準 CCID 讀卡機,Apple 內建驅動不認;廠商官方驅動又只有 x86_64,arm64 上直接載入失敗。
卡點不只一個:
- 沒有 arm64 驅動
- 現成的開源替代驅動(ezIFD)有三個 bug,在 macOS 上一直顯示
(null):(null)載入失敗 - 廠商的 x86_64 舊驅動跟開源版搶同一組 USB VID/PID,系統套件更新之後還會自動回來
Claude Code 怎麼一層一層拆解的
它從 system_profiler SPSmartCardsDataType 開始看驅動載入狀態,發現 (null):(null) 之後直接去讀 Info.plist——找到的成因是 XML parse 失敗:plist 裡有一個沒跳脫的 email 地址(<nicolas@boichat.ch>),尖括號在 XML 是非法字元。改掉。
接著是 CFBundleIdentifier 跟系統驅動撞名,改掉。ad-hoc 簽章問題,修掉。
然後開了系統 log 串流(log stream --predicate 'processImagePath CONTAINS "ifdreader"'),看到廠商的 x86_64 ezusb.bundle 在搶先配對 USB ID,然後因為架構不符拋出 BTM 錯誤——讀卡機就此從 PC/SC 消失。這才是整件事的根本原因。
移除 ezusb.bundle,重插讀卡機,HiPKI 九項全綠。
它提前看到了復發的問題
當天晚上 HiCOS 套件跑了更新,把 ezusb.bundle 自動塞回來——讀卡機又壞了。
但 Claude Code 在 debug log 裡早就看到這個套件的 pkg ID(com.mygreatcompany.pkg.EZ100driver),知道它會復發,所以早一步把「先移除競爭驅動」這個步驟寫進了 install.sh。
重跑一次安裝腳本,問題消失,之後 HiCOS 每次更新也不怕了。
它不只解掉了眼前的問題,還把會反覆出現的東西收進了安裝流程裡。
還有一個 HiPKI 細節
HiPKI 本機服務只在啟動時掃描讀卡機一次——驅動裝好之後,要手動 kickstart 一下才知道讀卡機回來了:
launchctl kickstart -k gui/$(id -u)/com.node.HIPKILocalServer.cht
重新整理 http://localhost:61161/selfTest.htm,九項都過就完成了。
適合誰
手上有 EZ100PU(台灣超常見的那台白灰色 USB 讀卡機)、電腦是 M 系列晶片 Mac、遇到 HiPKI 讀不到讀卡機的——這個 repo 就是為你準備的。不需要 Homebrew,不需要自己編譯,直接用預先打包好的 arm64 bundle(約 330 KB,靜態連結)。
Intel Mac 不需要這個,原廠 x86 驅動本來就能跑。
懶得自己跑指令的話,把這篇文章直接貼給 Claude,叫它幫你搞定就行。當然,任何開源專案在裝之前,都記得請 Claude 幫你先檢查過一次,降低裝到惡意程式的風險。
這種場景——讀系統 log、找根本原因、把解法做成可複用的工具——是 Claude Code 比較少被提到的用法。
廠商不出的東西,Claude Code 幫補上了——而且打包成任何人都能直接用的形狀。
最近開始做免費的一對一諮詢,幫你把 AI 接進自己的工作流——有需要的話可以約:https://www.dawsonwang.com/