GoAJAZZ‑TIME: เครื่องมือ CLI สั่งซิงค์เวลาจาก Linux ไปยังคีย์บอรด์ Ajazz AK820 Pro

ที่มาภาพ: r/MechanicalKeyboards

Software-อ่าน 9 นาที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
แหล่ง
r/MechanicalKeyboards
วันที่เผยแพร่
17 กรกฎาคม 2569 เวลา 04:13

Related

บทความที่เกี่ยวข้อง

ทำให้แล็ปท็อป Linux เสถียรเหมือนเซิร์ฟเวอร์ด้วยการบำรุงรักษาตามตารางSoftware
15 กรกฎาคม 2569 เวลา 07:00

ทำให้แล็ปท็อป Linux เสถียรเหมือนเซิร์ฟเวอร์ด้วยการบำรุงรักษาตามตาราง

ผู้เขียนปรับวิธีอัปเดตจากแจ้งเตือนเป็นการบำรุงรักษาตามกำหนด ทำให้ระบบทำงานเสถียรใกล้เคียงเซิร์ฟเวอร์ ลดการค้างและรีสตาร์ท…

XDA Developers5 นาที
บังคับติดตั้ง Windows 11 บนคอมพิวเตอร์เก่า ทำให้ Linux กลายเป็นตัวเลือกที่ชัดเจนSoftware
11 กรกฎาคม 2569 เวลา 07:00

บังคับติดตั้ง Windows 11 บนคอมพิวเตอร์เก่า ทำให้ Linux กลายเป็นตัวเลือกที่ชัดเจน

การบังคับติดตั้ง Windows 11 บนคอมพิวเตอร์เก่าที่ขาด TPM และ Secure Boot ทำให้ระบบไม่เสถียรและฟีเจอร์สำคัญหายไป ในทางกลับกัน Linux ติดตั้งได้เร็ว…

XDA Developers6 นาที
ทำให้ PC เก่า 10 ปี กลายเป็นศูนย์ Smart Home, NAS และ Backup ฟรีค่าใช้จ่ายSoftware
6 กรกฎาคม 2569 เวลา 23:30

ทำให้ PC เก่า 10 ปี กลายเป็นศูนย์ Smart Home, NAS และ Backup ฟรีค่าใช้จ่าย

บทความจาก XDA‑Developers แสดงวิธีนำ PC อายุ 10 ปี มาติดตั้ง Linux, Docker เพื่อเป็นศูนย์ควบคุม Smart Home, NAS และ Backup…

XDA Developers5 นาที
Obsidian CLI ทำให้บันทึกโน๊ตจากเทอร์มินัลเร็วขึ้น ไม่ต้องเปิดแอปSoftware
4 กรกฎาคม 2569 เวลา 05:00

Obsidian CLI ทำให้บันทึกโน๊ตจากเทอร์มินัลเร็วขึ้น ไม่ต้องเปิดแอป

Obsidian เปิดฟีเจอร์ CLI ให้สร้างและแก้ไขโน๊ต markdown ผ่านคอมมานด์ไลน์โดยไม่ต้องเปิด GUI ลดการสลับหน้าต่างและเพิ่มความเร็วในการบันทึกความคิด ผู้ใช้ตั้งค่า…

XDA Developers7 นาที
คัดลอกลิงก์แล้ว!