
ที่มาภาพ: r/MechanicalKeyboards
GoAJAZZ‑TIME: เครื่องมือ CLI สั่งซิงค์เวลาจาก Linux ไปยังคีย์บอรด์ Ajazz AK820 Pro
⚡ สรุป 30 วิ
GoAJAZZ‑TIME เป็น CLI เขียนด้วย Go ที่ส่งเวลาจาก Linux ไปยังกราฟิกของคีย์บอร์ด Ajazz AK820 Pro ผ่าน USB ทำให้ผู้ใช้ไม่ต้องพึ่ง Windows configurator…
Lead: เครื่องพิมพ์แป้นพิมพ์กลไกแบบมีจอ TFT ของ Ajazz / EPOMAKER AK820 Pro สามารถรับข้อมูลเวลาได้จากคอมพิวเตอร์ แต่ซอฟต์แวร์กำหนดค่าที่จัดทำโดยผู้ผลิตรองรับเฉพาะระบบ Windows เท่านั้น การเปิดตัวเครื่องมือบรรทัดคำสั่งขนาดเล็กเขียนด้วย Go ที่ชื่อ GoAJAZZ‑TIME** ช่วยให้ผู้ใช้ Linux สามารถส่งเวลาจากระบบปฏิบัติการไปยังแคลนด์ของคีย์บอร์ดผ่าน USB ได้โดยตรง
Overview
โปรเจกต์ GoAJAZZ‑TIME เป็น CLI (Command Line Interface) ที่ทำหน้าที่ซิงค์นาฬิการะบบ Linux ไปยังหน่วยความจำภายในของคีย์บอร์ด AK820 Pro ซึ่งมีจอแสดงผล TFT สามารถแสดงเวลาแบบเรียลไทม์ได้ การสื่อสารใช้ชุดข้อมูล HID feature‑report ที่ถูกกำหนดไว้ในโปรโตคอลของอุปกรณ์โดยเฉพาะ
เครื่องมือดังกล่าวได้รับการพัฒนาโดยผู้ใช้งาน Reddit ชื่อ /u/OriginalDecision6815** และเปิดเผยบน GitHub (https://github.com/johnzan/GoAJAZZ‑TIME) ตามข้อมูลที่โพสต์ใน subreddit r/MechanicalKeyboards ผู้เขียนระบุว่าต้องการให้ชุมชน Linux มีวิธีเดียวกันกับผู้ใช้ Windows ในการตั้งค่าเวลา
แม้ว่าจะเป็นโค้ดขนาดเล็ก แต่บทบาทของมันสำคัญต่อประสบการณ์ผู้ใช้ที่ต้องการความสอดคล้องระหว่างระบบและอุปกรณ์โดยไม่จำเป็นต้องพึ่งพาซอฟต์แวร์จากผู้ผลิต
Background
คีย์บอร์ด Ajazz AK820 Pro (ซึ่งในตลาดบางส่วนขายภายใต้แบรนด์ EPOMAKER) มีจอ TFT ขนาด 1‑2 นิ้วที่แสดงข้อมูลหลายประเภท รวมถึงเวลาปัจจุบัน ผู้ผลิตจัดจำหน่ายเฉพาะ Windows configurator ที่ทำหน้าที่ตั้งค่าและซิงค์เวลาให้กับจอเหล่านี้
สำหรับผู้ใช้ Linux แล้ว ตัวไดรเวอร์ hid‑generic ของเคอร์เนลไม่สามารถส่งผ่าน feature‑report ไปยังอุปกรณ์นี้ได้อย่างสมบูรณ์ ทำให้การตั้งค่านาฬิกาในระบบปฏิบัติการไม่มีผลต่อจอ TFT นี่เป็นเหตุผลสำคัญที่ทำให้ชุมชนเริ่มค้นคว้าและถอดรหัสโปรโตคอลของคีย์บอร์ด
ก่อนหน้านี้มีโครงการหลายตัวที่พยายามเข้าใจวิธีสื่อสารกับ AK820 Pro ได้แก่
- TaxMachine ที่เผยแพร่อ้างอิง C++
- KyleBoyer/TFTTimeSync‑node ซึ่งเป็นไลบรารี Node.js
- gohv/EPOMAKER‑Ajazz‑AK820‑Pro ที่ทำงานบน Go ในระดับพื้นฐาน
การรวมความรู้จากโครงการเหล่านี้ทำให้ผู้พัฒนา GoAJAZZ‑TIME สามารถสร้างเครื่องมือที่ทำงานได้โดยตรงผ่าน libusb แทนการใช้ไดรเวอร์ทั่วไป
Technical Implementation
เครื่องมือนี้เลือกใช้ libusb เพื่อสื่อสารกับอุปกรณ์ระดับ USB โดยเฉพาะ การเรียกใช้งาน HID feature‑report ผ่าน libusb ช่วยหลีกเลี่ยงข้อจำกัดของ hid‑generic driver ที่ไม่ส่งข้อมูลฟีเจอร์อย่างครบถ้วน สิ่งนี้ทำให้การเขียนเวลาเข้าสู่หน่วยความจำของคีย์บอร์ดเป็นไปได้โดยตรงและเสถียร
โค้ด Go จะสร้างลำดับของ feature‑report ตามที่ได้รับจากการวิศวกรรมย้อนกลับ (reverse‑engineering) ของโปรโตคอลเดิม ซึ่งรวมถึงขั้นตอนตรวจสอบอุปกรณ์, การตั้งค่าโหมดเขียน, แล้วจึงส่งข้อมูลเวลาในรูปแบบบิต 64‑bit ที่ตรงกับความต้องการของฮาร์ดแวร์
โดยสรุป กระบวนการทำงานประกอบด้วย
- ตรวจจับอุปกรณ์ Ajazz AK820 Pro ผ่าน libusb
- สร้างและส่ง feature‑report ตามลำดับที่กำหนดไว้ในเอกสารอ้างอิงของ TaxMachine และโครงการอื่น ๆ
- ยืนยันผลการเขียนโดยอ่านค่ากลับจากอุปกรณ์
การออกแบบนี้ทำให้เครื่องมือสามารถทำงานบนระบบ Linux ใดก็ได้ที่ติดตั้ง libusb อยู่แล้วโดยไม่ต้องแก้ไขเคอร์เนลหรือใช้สิทธิ์พิเศษมากเกินไป
Community Reception
เมื่อโพสต์ใน Reddit, ผู้ใช้งานหลายคนแสดงความสนใจต่อโซลูชันนี้ เนื่องจากก่อนหน้านี้ผู้ที่ต้องการซิงค์เวลาบน AK820 Pro ต้องอาศัยเครื่องมือ Windows หรือทำการปรับแต่งไดรเวอร์เอง คอมเม้นท์ส่วนใหญ่ชื่นชมว่า GoAJAZZ‑TIME ให้วิธีง่าย ๆ ที่ไม่ต้องพึ่งพา Windows อีกต่อไป
บางคนยังเสนอแนะแนวทางเพิ่มเติม เช่น การรวมฟีเจอร์ตั้งค่าแสงสีหรือการอัปเดตเฟิร์มแวร์ผ่าน CLI เดียวกัน แม้ว่าตอนนี้โครงการยังคงเป็นเครื่องมือเพียงส่งเวลา แต่ศักยภาพของ Go ในการขยายฟังก์ชันทำให้ชุมชนเห็นว่ามีโอกาสพัฒนาต่อได้อย่างกว้างขวาง
อย่างไรก็ตาม ยังมีข้อจำกัดบางประการที่ผู้ใช้ต้องรับทราบ เช่น การใช้งานต้องรากฐาน libusb ที่อัปเดตและสิทธิ์เข้าถึง USB device ซึ่งอาจต้องเรียกโปรแกรมด้วย sudo หรือกำหนดกฎ udev ให้เหมาะสม
Usage & Availability
โค้ดทั้งหมดเปิดเผยบน GitHub ภายใต้สัญญาอนุญาตแบบโอเพนซอร์ส ผู้ใช้สามารถคลรีโปโดยใช้คำสั่ง `git clone https://github.com/johnzan/GoAJAZZ-TIME.git` แล้วทำการคอมไพล์ด้วย Go เวอร์ชัน 1.20 หรือสูงกว่า คำแนะนำในการติดตั้งและใช้งานถูกบันทึกไว้ในไฟล์ README ของโปรเจกต์
ขั้นตอนพื้นฐานสำหรับผู้ใช้ Linux มีดังนี้
- ติดตั้ง libusb‑dev (เช่น `sudo apt install libusb-1.0-0-dev` บน Debian/Ubuntu)
- คอมไพล์โค้ดด้วยคำสั่ง `go build -o goajazz-time main.go`
- รันเครื่องมือโดยระบุอุปกรณ์และเวลาที่ต้องการซิงค์ เช่น `sudo ./goajazz-time set`
ผู้ใช้สามารถตรวจสอบสถานะได้จากข้อความตอบกลับของโปรแกรมที่บ่งชี้ว่าการส่ง feature‑report สำเร็จหรือไม่ การเปิดเผยโค้ดทำให้ใครก็ตามที่สนใจสามารถตรวจสอบและปรับแต่งตามความต้องการส่วนบุคคลได้
Analysis
การพัฒนาของ GoAJAZZ‑TIME สะท้อนถึงแนวโน้มของชุมชน Linux ที่มุ่งเน้นแก้ไขช่องว่างระหว่างซอฟต์แวร์ผู้ผลิตและผู้ใช้ขั้นสุดท้าย การที่โปรโตคอลถูกถอดรหัสจากหลายโครงการเปิดเผยแล้วนำมารวมกันในรูปแบบ CLI ทำให้การสนับสนุนอุปกรณ์เฉพาะกลุ่มเป็นไปได้โดยไม่ต้องพึ่งพาผู้ผลิต
จากมุมมองด้านเทคนิค, การเลือกใช้ libusb แทนไดรเวอร์เคอร์เนลแสดงให้เห็นถึงความเข้าใจเชิงลึกของ USB HID protocol และข้อจำกัดของระบบปฏิบัติการ ความสามารถในการส่ง feature‑report อย่างตรงจุดเป็นกุญแจสำคัญที่ทำให้ฟีเจอร์ซิงค์เวลาใช้งานได้จริง
ผลกระทบต่อผู้ใช้ Linux คือ การลดความยุ่งยากในการจัดการอุปกรณ์เสริมที่มีหน้าจอแสดงผลแบบดิจิทัล ซึ่งก่อนหน้านี้ต้องพึ่งพา Windows หรือแก้ไขไดรเวอร์โดยเฉพาะ เครื่องมือนี้จึงเพิ่มประสิทธิภาพและขยายขอบเขตการใช้งานของ Ajazz / EPOMAKER AK820 Pro ให้ครอบคลุมทุกระบบปฏิบัติการ
Summary
เครื่องมือ GoAJAZZ‑TIME ทำให้ผู้ใช้ Linux สามารถซิงค์เวลาของคีย์บอร์ด Ajazz/EPOMAKER AK820 Pro ผ่าน USB ได้โดยตรง ด้วยการใช้งาน libusb แทนไดรเวอร์ทั่วไป โครงการนี้เป็นตัวอย่างของความร่วมมือในชุมชนเปิดเผยข้อมูลและเติมเต็มช่องว่างที่ผู้ผลิตไม่ได้รองรับ.
แชร์บทความนี้:
ชอบบทความแบบนี้?
สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม
แหล่งข่าวต้นฉบับ
- ชื่อต้นฉบับ
- A small Go CLI that pushes your Linux system clock to the internal clock of an Ajazz / EPOMAKER AK820 Pro keyboard (the one with the TFT screen), over its USB connection.
- ผู้เขียน
- /u/OriginalDecision6815
- วันที่เผยแพร่
- 17 กรกฎาคม 2569 เวลา 04:13



