😴
Zig で LED の色を変えてみた (ASUS Z790 Aura)
概要
マザーボードの LED の色をデーモンで制御したい
- 要件
- ASUS Aura を実装した LED を制御する
- 仕様
- Daemon として動作する
- 温度が上がれば赤く光る
- 温度が下がれば青く光る
- 閾値は zone2 で30度
- 設計
- デーモンを実装する
- Aura のクライアントを実装する
- デーモンを Zig で書いてデバイス周りの実装を C ライブラリで書く
- プロトコル部分は現在使用している C++ ライブラリを Zig で書き直す
アプローチ
まずは対象の VID / PID を調べる
lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0b05:19af ASUSTek Computer, Inc. AURA LED Controller
Bus 001 Device 003: ID 0b27:2251 Ritek Corp. USB DISK 2.0
Bus 001 Device 004: ID 174c:2074 ASMedia Technology Inc. ASM1074 High-Speed hub
Bus 001 Device 005: ID 3151:1020 YICHIP Wireless Device
Bus 001 Device 006: ID 0409:005a NEC Corp. HighSpeed Hub
Bus 001 Device 007: ID 8087:0033 Intel Corp. AX211 Bluetooth
Bus 001 Device 008: ID 0c45:636b Microdia CMS-V67BK
Bus 001 Device 009: ID 0853:0100 Topre Corporation HHKB Professional
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 002: ID 174c:3074 ASMedia Technology Inc. ASM1074 SuperSpeed hub
詳細が読みたければ
lsusb -d 0b05:19af -v
VID / PID 情報をもとに OpenRGB で対象のプロトコルを読む
実装
上記アプローチにより、以下実装で仕様を満たします
以下手順で実行
git clone git@github.com:keix/led-daemon.git
cd led-daemon
zig build
./zig-out/bin/led-daemon
Discussion