這把從淘寶買回來的垃圾鍵盤,價格還不便宜,接近新台幣一千,但好奇它有什麼好的,還是買來看看。這把的型號是 Miya68 Pro,由 Varmilo 和 Ducky 聯名推出。
完全沒有螺絲,所以不要到處找螺絲,把外表都挖壞了。
這下面沒有螺絲,別挖了。凹痕是灌模的凹孔,這麼貴的東西,會壓成這樣也太不像話了點。鍵盤 PCB 的型號是 Miya69-V2.2 (A)。
要改裝鍵盤,第一個當然是先看是用什麼晶片,好不容易,用 marco 鏡頭照出比較清晰的型號 -- ARM HSAK3201。
Google 結果,很多鍵盤用這顆 MCU,但完全沒有相關資訊。最下面的字註明是 ARM CPU,應是 32bit 的 CPU。最後找到這一條訊息,
Controller: ARM HSAK3201, HOLTEK (via HWInfo)
Holtek,就是盛群。在鍵盤應用介紹的網頁找到一顆 MCU 的編號 HT66FB576。依據其文件說明,這是一個 USB RGB LED Flash MCU。不過在文件中說,這是一個 "8-bit high performance RISC",所以可能不是這一個 IC。另外有 "多彩獨立光USB鍵盤" 的應用指南。等有空再來比對接腳,看是不是這一顆 CPU。後來也確定不是。
在這裡可以找到各類相關的開發指南 https://www.holtek.com.tw/professional/usb-mcu
電路板上有 4顆 24pin 的 IC,編號是 HSAK021,後來比對網上其他鍵盤的拆解說明,應是內建 PWM 的 16bit 恒流 LED driver,如 Macroblock 的 MBI5043,但沒找到 HolTek 出的相關 IC。每個 IC 有 16條 LED 控制輸出,RGB 三種顏色分開控制。不過,我可能會把燈光給廢了吧,不想搞這麼複雜。
然後,在 pcstore 上找到一家 "倍創科技",專賣 Holtek 的開發工具,其中 32-bit MCU 燒錄器e-Writer32 售價為新台幣 2千多元。後來找到比較便宜的開發板,約 6百元。測試失敗,又花了快一千元買一塊 e-Link32 Pro,做交叉比對,最後都能成功連上。
比對 "多彩獨立光USB鍵盤" 應用指南與實際量到的電路矩陣,可說是完全使用其參考電路,這倒是比較方便追蹤,不用另外整理按鍵矩陣。
這鍵盤的固件 (firmware,為了搜尋方便,使用中國用語) 是可以更新的,也許可以在不改電路之下,更改鍵盤功能。參考此文,阿米洛68键双模键盘修改固件调换键位,阿米洛固件更新工具 M32 BootLoader_180724.exe,依命名來看,基本上就是 STM32 的 DFU 寫入程式。後來繼續查下去,確認 M32 BootLoader 是給較舊的鍵盤使用的。Miya68 Pro 的更新程式是把程式和資料包在一個執行檔裡,而且資料可能是加密過的。但是我只要確定使用的 MCU,再改用 QMK,所以不用管它原來的 firmware 長得什麼樣。
且先不要破壞電路,看能不能有什麼辦法確定使用的 MCU。在 Linux 連上後,列出的訊息如下。
[ 269.812200] usb 1-8.1.2: new full-speed USB device number 9 using xhci_hcd
[ 269.885558] usb 1-8.1.2: device descriptor read/64, error -32
[ 270.065558] usb 1-8.1.2: device descriptor read/64, error -32
[ 270.245532] usb 1-8.1.2: new full-speed USB device number 10 using xhci_hcd
[ 270.336711] usb 1-8.1.2: New USB device found, idVendor=04d9, idProduct=8008, bcdDevice= 2.03
[ 270.336726] usb 1-8.1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 270.336733] usb 1-8.1.2: Product: USB-HID Keyboard
[ 270.336738] usb 1-8.1.2: Manufacturer: HOLTEK
[ 270.336743] usb 1-8.1.2: SerialNumber: AP0000000003
[ 270.352409] input: HOLTEK USB-HID Keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8.1/1-8.1.2/1-8.1.2:1.0/0003:04D9:8008.000A/input/input29
[ 270.409145] hid-generic 0003:04D9:8008.000A: input,hidraw5: USB HID v1.11 Keyboard [HOLTEK USB-HID Keyboard] on usb-0000:00:14.0-8.1.2/input0
[ 270.410300] hid-generic 0003:04D9:8008.000B: hiddev97,hidraw6: USB HID v1.11 Device [HOLTEK USB-HID Keyboard] on usb-0000:00:14.0-8.1.2/input1
[ 270.412672] input: HOLTEK USB-HID Keyboard Mouse as /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8.1/1-8.1.2/1-8.1.2:1.2/0003:04D9:8008.000C/input/input30
[ 270.412910] input: HOLTEK USB-HID Keyboard System Control as /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8.1/1-8.1.2/1-8.1.2:1.2/0003:04D9:8008.000C/input/input31
[ 270.469110] input: HOLTEK USB-HID Keyboard Consumer Control as /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8.1/1-8.1.2/1-8.1.2:1.2/0003:04D9:8008.000C/input/input32
[ 270.469257] input: HOLTEK USB-HID Keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8.1/1-8.1.2/1-8.1.2:1.2/0003:04D9:8008.000C/input/input33
[ 270.469402] input: HOLTEK USB-HID Keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8.1/1-8.1.2/1-8.1.2:1.2/0003:04D9:8008.000C/input/input34
[ 270.469606] hid-generic 0003:04D9:8008.000C: input,hiddev98,hidraw7: USB HID v1.11 Mouse [HOLTEK USB-HID Keyboard] on usb-0000:00:14.0-8.1.2/input2
[ 270.470828] hid-generic 0003:04D9:8008.000D: hiddev99,hidraw8: USB HID v1.11 Device [HOLTEK USB-HID Keyboard] on usb-0000:00:14.0-8.1.2/input3
# lsusb
Bus 001 Device 012: ID 04d9:8008 Holtek Semiconductor, Inc. USB-HID Keyboard
從這些訊息確定是盛群的 IC。
接下來幾天就跑去合歡山看杜鵑花了。出遊期間,腦袋不時會想著該怎麼做。偶爾上綱找一下資料,發現已經有人針對 Holtek 的 MCU 改過 QMK 了,[Quantum Mechanical Keyboard Firmware for POK3R]。繼續追下去,發現要解鎖 MCU 才能用,又找到了陌生的 OpenOCD。接下來就參雜使用 Holtek 的工具和 OpenOCD,試圖確認鍵盤所使用的 MCU。
繞一大圈之後,讀了網上高手的逆向工程教學,有一些基本能力後,開始各種嘗試。
試著使用 HT32 ICP TOOL (V 1.0.39) 來讀取 firmware 的資料,從第一個 target 開始一個一個選,顯示訊息都是 "Target MCU unmatch!"。
直到倒數沒幾個,接近失望之際,BINGO ! 選到 HT32F1654,按下 [Read],顯示訊息變成 "Chip is Locked!"。
接下來的工作就會變比較簡單了,有前人的作法可以參考。
HT32F1653, HT32F1654, HT32F1655, HT32F1656 是同一系列的 MCU -- Cortex-M3 32-Bit Standard MCU,差別在於 Flash 和 SRAM 的大小。HT32F1654 的 Flash 是 64KB,SRAM 是 16KB。
最後,這顆 MCU 已停產,盛群網上公告的訊息,"Holtek 正式提出 HT32F1653/HT32F1654 產品終止到期。上述所提產品之最終訂單截止日為2022年9月30日"。所以官網上找不到它的 datasheet,只能在其他地方下載。
沒有留言:
張貼留言