A desktop-grade hardware project focused on interaction details, for USB-C power monitoring and protection.
Open-sourced from hardware to firmware, with a little fun beyond the serious functionality.
🔥 Build Lumen FAST on your own.
No local IDE, no toolchain setup, no need to know SMT soldering. Even if you are not familiar with embedded systems or hardware, you can finish it.
👉 Start here: Quick Start
Lumen is a desktop USB-C power monitoring and protection device, made for developers and also friendly to non-professional users.
We hope it is not only a debugging tool, but a device you can keep on your desk for long-term use.
Many open-source desktop power monitoring projects have these issues:
- Only provide code, missing complete hardware materials, cannot truly reproduce
- Require complex IDEs and toolchains, almost impossible for beginners
- UI stuck at serial print or debug interfaces, hard to use long-term
Lumen's goal is clear:
Let people without embedded or hardware backgrounds successfully build a USB-C power monitor that is "actually usable and pleasant to use".
For this, Lumen is designed from the beginning around "reproducibility" and "low barrier", keeping complexity inside the system rather than pushing it to the user.
- No local development environment needed, flash firmware directly via web
- All firmware is built and released by CI, avoiding environment differences
- Hardware, firmware, and UI design are centralized in one repo
- PCB Gerbers, BOM, and 3D enclosure files are fully open-sourced
You only need to follow the steps to fully reproduce it.
USB power monitoring
Minecraft easter egg
Motion / interaction
- System integration: Rust no-std
- UI: Vision-UI
- System: FreeRTOS
- Graphics Driver: u8g2
- Hardware
- Buzzer
- INA226
- LSM6DSO
- ESP32-C3
- 240x240 display
- Rotary encoder
- Power switch
- Firmware uses a layered driver structure instead of feature stacking, to speed up development and CI builds.
- UI is independent of top level logic, ensuring interaction changes do not affect core functionality.
- Rust no-std is used only for the system integration layer, not to fully replace C/C++.
- All interactions prioritize "long-term desktop use" rather than debugging convenience.
- UI does not depend on serial output, so the device does not lose value when "detached from the PC".
- Animations and easter eggs are deliberately kept low-frequency to avoid distracting the main function.
- All build flows are automated to avoid "author environment" dependency.
- Avoids solutions that require expensive equipment or special tools.
- Explicitly not chasing extreme performance, prioritizing success rate.
- The web flashing flow depends on browser WebUSB support.
- CI has no cache or diff builds yet, so there is room for speed optimization.
If you are interested in the UI system used in Lumen, you may find this article useful:
- Hardware v2
- USB-C power monitoring
- Hardware protection logic
- Vision-UI integration
- CI pipeline
- Web quick flashing
- Documentation still improving
Issues, discussions, and PRs are welcome. If you are interested in hardware, embedded systems, or UI design, feel free to join.
GPL-3.0




