Skip to content
cediegreyhatPublic

About

Clean-room control panel for the KF420/KF620 DGT three-digit USB HID temperature display. No driver, no admin, no vendor DLLs.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

TriGlyph

Three glyphs, driven properly.
A clean-room control panel for the KF420 / KF620 DGT three-digit USB temperature display.

Release v0.1.0-beta MIT License Windows 10/11 .NET 10 102 tests passing No driver required

Total downloads GitHub stars Open issues Last commit


✨ Highlights

  • 🧩 One self-contained TriGlyph.exe (~146 MB) — no installer, no admin rights, no kernel driver, no vendor DLLs, no HWiNFO.
  • 🔌 Pluggable temperature sources tried in priority order, with honest failure reporting. Nothing is ever fabricated.
  • 🧪 Report descriptor decoder reads the panel's undocumented 205-byte descriptor over IOCTL_HID_GET_REPORT_DESCRIPTOR.
  • 🎛️ Raw feature-report console with a safety gate, auto-detection with manual pinning, four editable themes.
  • 🖥️ Tray icon drawn at runtime and coloured by temperature; run-at-login via HKCU\...\Run.

📥 Download

Grab the latest build from the Releases page.

TriGlyph.exe   (~146 MB, self-contained, win-x64)
themes/        (ship beside the exe)
  1. Copy TriGlyph.exe and the themes/ folder to the target machine.
  2. Run it — it lives in the tray; the tray icon is coloured by temperature.
  3. Open Advanced → Re-read to decode your panel's report descriptor.

💡 For accurate CPU package temperature without a driver, run LibreHardwareMonitor alongside it. That is the trade the vendor tool made differently — by bundling a driver.

🎯 Why this exists

The vendor "JL DGT" tool works, but it is worth replacing:

Concern Vendor tool TriGlyph
Kernel driver Bundles a renamed copy of HWiNFO32.DLL (api-ms-win-core-sysinfo-825-64.dll) hiding HWiNFO_x64_205.sys ring-0 driver ❌ None
Elevation Requires Administrator ✅ User-level
Install footprint Installs a kernel service ✅ Portable, nothing installed
Debug artifacts Ships DeviceDriver.pdb, .iobj, .ipdb ✅ Clean
Licensing Renamed HWiNFO SDK masquerading as Windows API-set DLLs ✅ Clean-room

Nothing there looks deliberately malicious — it is HWiNFO's SDK, renamed — but the masquerade is a licensing violation and a technique AV heuristics rightly flag. TriGlyph requires no elevation, installs nothing, and touches no other process's memory.

🔌 Temperature sources

Tried in priority order, with honest failure:

LibreHardwareMonitor WMI → OpenHardwareMonitor WMI → HWiNFO shared memory
→ AIDA64 shared memory → ACPI thermal zone → Windows temperature probe → Manual value

Unavailable sources are reported, never fabricated. Missing sources from a newer build are merged into your saved priority list automatically on load.

🧠 The hardware

Property Value
USB identity 1a2c:4184 (China Resource Semico), shared by KF400/KF420/KF620 DGT
Interfaces 2 — interface 0 is a fake keyboard, interface 1 is the panel
Endpoints Interrupt IN only — no OUT endpoint
Host → device Control transfers only, i.e. HID feature reports
Temperature report Feature report 7, 64 bytes: [7, 0xFF, 0xFF, hundreds, tens, ones]
Resolution Whole degrees, three independent decimal digits

Because there is no OUT endpoint, the panel is a dumb peripheral: firmware renders the digits and the host only pushes a number. Nothing here needs a driver.

Full detail, including what is not known: docs/PROTOCOL.md.

🛡️ Safety

The raw console blocks writes to report ids other than 7 unless you arm unsafe writes. This is not hypothetical — the reference project records that a bad USB state left a panel unconfigured (can't set config #1, error -32) until reboot.

Writes to input reports are refused outright: those are read-only, and an attempt means the report was misidentified.

⚙️ Configuration

  • Settings live at %APPDATA%\TriGlyph\settings.json — hand-editable, string enums, unknown keys tolerated, out-of-range values clamped on load.
  • Themes are themes/*.json (glass, softlight, industrial, editorial). Drop in your own; a user file overrides a built-in of the same name. Invalid colours are repaired rather than rejected.

🏗️ Building

./build.sh

Runs the tests, publishes win-x64 self-contained single-file, and patches the PE subsystem. See docs/BUILDING.md for the off-Windows details.

🧪 Testing

dotnet test tests/TriGlyph.Tests/TriGlyph.Tests.csproj

102 tests, all runnable on Linux. Every piece with real behaviour lives in TriGlyph.Core behind interfaces, so the interesting logic is testable without Windows — including the whole read → smooth → encode → write pipeline, with failover, range rejection, staleness and duplicate suppression.

Design rationale: docs/ARCHITECTURE.md.

📋 Known limitations

  • No version resource in the published exe — MSBuild cannot add apphost resources off Windows (NETSDK1074). The window icon is embedded as a WPF resource, and the PE subsystem is patched to GUI, so no console window appears.
  • Display blanking is not implemented. No blank/off command is known.
  • RGB and fan control are not reachable — the ARGB fans connect to the motherboard's ARGB header and the fan to a PWM header, neither through this device.
  • Only temperature semantics are enforced (0–150 °C). The hardware accepts any three digits, so other values can be sent via the raw console.

📚 Documentation

Document Contents
docs/PROTOCOL.md The hardware protocol, what is measured vs guessed
docs/ARCHITECTURE.md Module map and design decisions
docs/BUILDING.md Building, including off-Windows caveats
CHANGELOG.md Release history

🗂️ Repository layout

src/TriGlyph.Core     pure net10.0, no Windows dependencies — all behaviour, all tests
src/TriGlyph.App      net10.0-windows WPF — interop, sources, services, views
tests/TriGlyph.Tests  xunit, runs on Linux
docs/                 protocol, architecture, build notes
tools/                patch-subsystem.py, standalone probe
themes/               shipped beside the exe
build.sh              tests -> publish -> subsystem patch

🙏 Credits

Neither is affiliated with this project.

📄 License

MIT — see LICENSE. Made with ❤️ for cleaner USB HID tooling.

About

Clean-room control panel for the KF420/KF620 DGT three-digit USB HID temperature display. No driver, no admin, no vendor DLLs.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages