← όλα τα πρότζεκτς

HardwareToad

Work-in-progress Windows hardware monitor με live sensors, stress tests, και μετάβαση του sensor-access layer από WinRing0 σε PawnIO.

σε ανάπτυξη
Python 3.11+TkinterC# / .NETC++ / HLSLDirectX 12LibreHardwareMonitorAVX2 / FMAObfuscarPyInstallerInno Setup

Screenshots

Σύνοψη

Το HardwareToad είναι work-in-progress Windows hardware monitor με Python/Tkinter UI και αυτόνομο .NET sensor bridge βασισμένο στο LibreHardwareMonitor. Δείχνει σε πραγματικό χρόνο CPU / GPU / RAM / storage telemetry με live γραφήματα, τρέχει CPU/RAM stress tests, και μεταφέρει το low-level hardware access από WinRing0 προς PawnIO. Δεν είναι έτοιμο για γενική χρήση ακόμα: υπάρχουν bugs, sensor edge cases, και packaging δουλειά πριν από κανονικό release.

Σημαντικά σημεία

  • Work in progress — δεν είναι έτοιμο για γενική χρήση ακόμα‧ υπάρχουν bugs και sensor edge cases.
  • Live CPU / GPU / RAM / storage telemetry με ring gauges και γραφήματα θερμοκρασίας.
  • CPU stress: single-core AVX2/FMA, multi-core FMA, Memory/IMC, combined, Linpack DGEMM.
  • Native DX12 GPU stress engine: 16M FMA compute threads + 256MB VRAM transfers + rasterizer, με feature-level fallback (12.1 → 11.0).
  • 15-pattern RAM stability test με ακριβή αναφορά λαθών — αποκαλύπτει ασταθή XMP / EXPO.
  • Μετάβαση low-level access: αντικατάσταση WinRing0 με PawnIO για πιο ασφαλές και maintainable driver path.
  • 11 built-in θέματα, per-color overrides, οποιαδήποτε εγκατεστημένη γραμματοσειρά, custom μεγέθη παραθύρου — όλα αυτόματα αποθηκευμένα.
  • Self-contained installer — zero dependencies για τον τελικό χρήστη‧ auto-elevates σε κάθε εκκίνηση.

Πλαίσιο

Ήθελα έναν hardware monitor που να ταιριάζει στον τρόπο που δουλεύω: σκούρος, πυκνός, χωρίς nagware, χωρίς cloud, χωρίς account. Και ήθελα να καταλάβω το stack — sensors, stress workloads, driver access — από άκρη σε άκρη αντί να κολλάω έτοιμα εργαλεία. Το HardwareToad είναι ακόμα σε ενεργή ανάπτυξη‧ το UI υπάρχει, αλλά το sensor layer και το packaging θέλουν ακόμα bug fixing πριν το πω έτοιμο.

Τρέχουσα κατάσταση

Δεν είναι release-ready ακόμα. Υπάρχουν αρκετά rough edges, ειδικά γύρω από sensor coverage και hardware access. Η μεγαλύτερη τρέχουσα αλλαγή είναι η μετάβαση από WinRing0 προς PawnIO για low-level access.

  • Known bugs και hardware-specific sensor edge cases δουλεύονται ακόμα.
  • Driver/access layer migration: WinRing0 → PawnIO.
  • Installer/release packaging δεν είναι τελικό.
  • Τα screenshots δείχνουν την κατεύθυνση, όχι τελειωμένο public release.

Αρχιτεκτονική

Two-process design με καθαρό διαχωρισμό. Το Python/Tkinter UI κάνει rendering και interaction‧ ένα αυτόνομο .NET sensor bridge τρέχει ως privileged child process και εκθέτει local HTTP endpoints για sensor reads και stress orchestration. Το low-level access path ξαναχτίζεται από WinRing0 προς PawnIO.

  • main.py — application entry point.
  • core/app.py — όλο το UI: tabs, cards, ring gauges, γραφήματα, settings.
  • core/bridge.py — HTTP client για το LHMBridge (token, retries, typed responses).
  • core/stress_manager.py — αποστέλλει stress commands μέσω του bridge.
  • core/constants.py — single source of truth για version, χρώματα, port.
  • LHMBridge/LHMBridge.cs — C# sensor bridge (LibreHardwareMonitor + local HTTP).
  • GPUStress/ — native DX12 engine: C++ source, pre-built GPUStress.exe, HLSL shaders.
  • vendor/ — LibreHardwareMonitor runtime files μέσα στο repo.
  • dev.bat — γρήγορο τοπικό run, auto-elevates, χτίζει το bridge όταν χρειάζεται.
  • build_all.bat — πλήρες clean release build: bridge → PyInstaller → Inno Setup installer.

Μοντέλο ασφαλείας

Το local bridge έχει privileged πρόσβαση σε low-level sensors, οπότε αντιμετωπίζεται ως security boundary, όχι ως φιλικός βοηθός.

  • Token auth — 256-bit token παράγεται στην εκκίνηση, απαιτείται σε κάθε request μέσω X-HardwareToad-Token. Εναλλάσσεται κάθε εκκίνηση.
  • Token transport — περνάει με per-process env var (ή temp file για elevated launches), ποτέ μέσω CLI args ορατών σε άλλα τοπικά processes.
  • SHA256 integrity — το bridge binary γίνεται hash στην πρώτη εκτέλεση‧ οποιαδήποτε αλλαγή μπλοκάρει το startup.
  • Obfuscar — LHMBridge.dll symbols μετονομάζονται κατά το build για να επιβραδύνουν το decompilation.
  • Restricted CORS — origin reflected μόνο για 127.0.0.1 / localhost‧ κανένα wildcard.

Stress engine

Όλα τα CPU/memory workloads τρέχουν native μέσα στο .NET bridge — χωρίς Python GIL, χωρίς subprocesses. Τα threads pinαρονται σε cores με ένα core δεσμευμένο για UI/system responsiveness. Τα GPU workloads τρέχουν σε ξεχωριστό native DX12 executable.

  • CPU Single Core — 1 thread, 12 ανεξάρτητα AVX2 FMA chains, max single-core boost clock.
  • CPU Multi Core — ίδιο FMA engine σε κάθε logical core‧ ~Prime95 Small FFT thermal output.
  • Memory / IMC — 256MB/thread, AVX2 sequential + stride-127 + reverse passes‧ νικάει τον prefetcher.
  • Linpack DGEMM — tiled 3072²3072 FP64 matmul (~58B FMAs/pass)‧ αποκαλύπτει αστάθεια που χάνουν μικρότερα workloads.
  • Combined — κάθε thread τρέχει FMA + memory pass ταυτόχρονα για max package power.
  • RAM Stability — 15 patterns εγγραφής/ανάγνωσης με ακριβή αναφορά λαθών, αποκαλύπτει ασταθή XMP/EXPO προφίλ.
  • GPU Core — DX12 compute shader που dispatches 16M FMA threads‧ σατουράρει τους shader cores.
  • GPU VRAM — συνεχείς 256MB μεταφορές‧ σατουράρει το memory bandwidth.
  • GPU Combined — Compute + VRAM + Rasterizer ταυτόχρονα‧ μέγιστο GPU thermal load.

UX

Μικρά πράγματα που έχουν σημασία όταν κοιτάς αυτό το app για ώρες όταν tunάρεις build.

  • 11 built-in θέματα (MSI Dragon, Cyberpunk, Matrix Green, και άλλα), καθένα με πλήρη παλέτα για cards, accents, και graph lines.
  • Per-color overrides — click σε οποιοδήποτε χρώμα για customization ανεξάρτητα από το θέμα.
  • Οποιαδήποτε εγκατεστημένη γραμματοσειρά‧ custom μέγεθος παραθύρου (presets ή ακριβές W×H).
  • Κάθε ρύθμιση αυτόματα αποθηκεύεται και επανέρχεται στο επόμενο launch.
  • Raw Sensors viewer — δείχνει κάθε τιμή που βλέπει το bridge. Τα ακριβή ονόματα για custom sensor labels σε edge-case hardware.
  • Auto-elevation — το UAC prompt σε κάθε launch είναι το τίμημα για άμεση πρόσβαση σε sensors‧ χωρίς silent re-launch κόλπα.

Build & διανομή

  • dev.bat — η μόνη εντολή που χρειάζεσαι κατά την ανάπτυξη.
  • build_all.bat — πλήρες release pipeline: compile LHMBridge, freeze UI με PyInstaller, package με Inno Setup.
  • Version bump γίνεται με μία γραμμή στο core/constants.py — η έκδοση του installer ακολουθεί αυτόματα.
  • Ο installer εγγράφει την εφαρμογή να εκκινεί ως Administrator by default και προαιρετικά βάζει desktop shortcut.

Απαιτήσεις

  • Windows 10+ (64-bit).
  • Python 3.11+ (μόνο για builds από source).
  • .NET SDK (για χτίσιμο του LHMBridge από source).
  • Inno Setup 6 (για παραγωγή installer).
  • Δικαιώματα Administrator κατά το runtime (υποχρεωτικό για πρόσβαση σε sensors).

Πρόσφατες εκδόσεις

v0.8.1 Beta

  • · CPU temperature now works on previously unsupported CPUs (i7-8700, R5-5800X, others).
  • · GPU sensor polling now reads correctly via dedicated bridge methods.
  • · GPU stress shaders ~10× heavier per dispatch (transcendental ops, 4K render target, 30k tris).

v0.8.0 Beta

  • · Native DX12 GPU stress engine (Core / VRAM / Combined).
  • · Universal GPU support via feature-level fallback (12.1 → 11.0).
  • · GPUStress.exe bundled in installer — zero setup for end users.

v0.7.5 Beta

  • · Token authentication and SHA256 integrity check for the local bridge.
  • · Obfuscar integration in the build pipeline.
  • · Heavier AVX2/FMA, larger memory buffer, 4-pass scatter-write memory burn.
toad mascot