YAFI — Yet Another Framework Interface
YAFI (Yet Another Framework Interface) is a cross-platform GUI application for interacting with the Framework Laptop Embedded Controller (EC). Created by Stephen Horvath (GitHub: Steve-Tech) and announced on the Framework Community forum on September 8, 2025, it provides fan control, LED brightness management, battery charge limiting, hardware monitoring, and system information — all without requiring beta BIOS versions, unsigned drivers, or command-line tools1.
Unlike other Framework EC tools that wrap ectool or framework-system, YAFI communicates directly with the EC hardware using Steve-Tech's own CrOS_EC_Python library, which reads sensor data from the EC memory map more efficiently than ectool's command-based approach12. YAFI is built with Python and GTK4/Adwaita, licensed under GPL-2.0-or-later, and available on Linux and Windows3.
Features
Fan Control
- View all temperature sensors with real-time readings
- Fan RPM readout and manual control (set target RPM or duty percentage)
- Auto fan control toggle
- Fan set points — configurable on/max temperature thresholds handled entirely by the EC, surviving reboots without a background daemon (added in v0.7)14
LED Control
- Power LED brightness control
- Keyboard backlight brightness control
- Per-channel RGB color selection for supported LEDs
- Automatic LED detection based on hardware capabilities (added in v0.6)5
- Unsupported LED options hidden on older hardware (e.g., blue power LED disabled on 11th gen)1
Battery Management
- Battery statistics page: charge percentage, voltage, current, temperature, design capacity, cycle count6
- Configurable charge limit percentage (slider)
- Battery extender mode
- "Override Charge Limit" button for temporary 100% charge1
Hardware Information
- Manufacturer, model, SKU, board info
- BIOS vendor, version, date
- EC version, chip info (vendor, name, revision), build info, protocol version
- Chassis open count and intrusion status
- Coin cell ever removed status
- Privacy switch status
- Active charge PD chip info1
Sensors
- Ambient light sensor (12th gen+; reports zero on 11th gen due to hardware differences — the ALS is not connected to the MEC1521 EC on 11th gen boards)1
- Lid open sensor5
Technical Details
| Component | Details |
|---|---|
| Language | Python (93.4%), Meson (6.1%) |
| UI Framework | GTK4 with Adwaita theme |
| EC Communication | CrOS_EC_Python (direct EC access, not an ectool wrapper) |
| Build System | Meson |
| License | GPL-2.0-or-later |
| Repository | Steve-Tech/YAFI3 |
| Flathub | au.stevetech.yafi (~403 downloads/month) |
EC Communication Interfaces
YAFI supports multiple methods of communicating with the Framework EC, abstracted through CrOS_EC_Python2:
| Interface | Platform | Notes |
|---|---|---|
/dev/cros_ec device | Linux (recommended) | Requires cros_ec and cros_ec_lpcs kernel modules, udev rules for non-root access |
LPC bus via portio | Linux (fallback) | Direct port I/O access |
| MEC LPC interface | Linux/Windows (Intel 11th–13th gen) | For Microchip MEC-based EC; v1.0 added Windows MEC support |
| Framework official EC driver | Windows (recommended) | No admin needed, requires supported BIOS |
| PawnIO | Windows (fallback) | Signed scriptable kernel driver from pawnio.eu; requires admin |
| WinRing0 | Windows (deprecated) | On Microsoft Vulnerable Driver Blocklist; not recommended |
Supported Models
| Model | Linux | Windows |
|---|---|---|
| Framework Laptop 13 Intel 11th/12th/13th Gen | Yes (cros_ec_lpc or MEC) | Yes (PawnIO MEC, v1.0+) |
| Framework Laptop 13 AMD 7040 Series | Yes | Yes |
| Framework Laptop 13 AMD AI 300 Series | Yes | Yes (confirmed) |
| Framework Laptop 13 Intel Core Ultra | Likely (NPCX EC) | Likely |
| Framework Laptop 16 AMD 7040 Series | Yes | Yes |
| Framework Desktop | — | Yes (thermals confirmed) |
Development History
Early Development (March–April 2025)
The YAFI GitHub repository was created on March 18, 2025, building on Steve-Tech's CrOS_EC_Python library (started April 2024). The first three releases preceded the forum announcement1:
| Version | Date | Key Changes |
|---|---|---|
| v0.1 | March 20, 2025 | Initial release: fan control, temp monitoring, LED brightness, battery limiter, chassis count, privacy switches (Linux only)7 |
| v0.2 | March 24, 2025 | Windows support added, LED list bug fix8 |
| v0.3 | April 13, 2025 | PawnIO driver support (replacing insecure WinRing0), battery limiter percentage indicator9 |
Forum Announcement and Rapid Iteration (September 2025)
Steve-Tech announced YAFI on the Framework Community forum on September 8, 2025, coinciding with the v0.4 release which added support for Framework's official Windows EC driver and a new battery statistics page61.
Community feedback was immediate. User Arnix reported a LED tab crash on FW13 11th gen (Void Linux), which Steve-Tech patched in a CI build the same day1. Jacob_Padgett reported HiDPI scaling issues on FW16 Windows, fixed by rounding the GTK4 scaling factor instead of flooring1. LukiG noted the battery discharge limit slider always showed zero — Steve-Tech confirmed the EC firmware does not implement a minimum charge limit and removed the non-functional control in v0.51.
Community member XenoCow designed three professional logo mockups (Core Calibrator, DASH, ECtoplasm) with SVG source files. Steve-Tech designed his own gear-shaped logo with feedback from XenoCow on rounding the corners1.
| Version | Date | Key Changes |
|---|---|---|
| v0.4 | September 6, 2025 | Official Framework EC driver on Windows (no admin), faster PawnIO, battery statistics page6 |
| v0.5 | September 16, 2025 | LED crash fix, scaling fix, removed non-working discharge limit, debug traceback10 |
| v0.6 | September 29, 2025 | New gear logo, advanced LED detection, ALS/lid sensors, splash screen, published on Flathub5 |
Fan Set Points and v1.0 (December 2025–March 2026)
v0.7, released on December 25, 2025, added fan set points — the EC's on/max temperature thresholds. Unlike other YAFI settings which are reset by BIOS initialization on reboot, fan set points are handled entirely by the EC and survive reboots without a daemon4.
The v1.0 release on March 21, 2026 was the major milestone: Windows MEC support for Intel 11th, 12th, and 13th gen Framework Laptops. Steve-Tech purchased Intel hardware specifically to implement and test the MEC LPC protocol, resolving the longstanding "Cannot find EC memmap" issue that had made YAFI completely non-functional on Intel Windows systems. The release also introduced a new GNOME-style logo by contributor oiimrosabel11. Steve-Tech stated that every current Framework device is now supported on both Windows and Linux11.
| Version | Date | Key Changes |
|---|---|---|
| v0.7 | December 25, 2025 | Fan set points (survive reboots), LED fixes, streamlined udev rules4 |
| v1.0 | March 21, 2026 | Windows MEC support (Intel 11th–13th gen), new GNOME-style logo by oiimrosabel, temperature sensor error display, battery page fixes11 |
Known Limitations
| Limitation | Details |
|---|---|
| Settings don't survive reboot | BIOS initialization resets most EC settings (charge limit, LED states). Fan set points are the exception. A planned daemon mode would restore settings at startup (GitHub issue #21)1 |
| No custom fan curves | Only on/max set points are supported. Full curves require a background daemon and more complex GTK widgets1 |
| Override Charge Limit may not work | The button is supposed to charge to 100% and reset after unplugging, but this behavior has been confirmed as not working correctly1 |
| Fan percentage mode buggy | Setting fan to percentage mode can cause 100% speed when RPM target was previously >=300 RPM. YAFI-specific issue not reproducible with framework_tool1 |
| ALS reports zero on 11th gen | Hardware limitation — the ambient light sensor is not connected to the EC on 11th gen boards1 |
| GTK4 fractional scaling | GTK4 only supports integer scaling; fractional values (e.g., 150%) result in upscaled rendering1 |
| Flatpak requires udev rules | The Flatpak sandbox does not automatically have EC access; udev rules must be installed separately1 |
Installation
Linux (Flatpak — Recommended)
flatpak install flathub au.stevetech.yafi
Then install udev rules for non-root EC access:
curl -Lfs yafi.stevetech.au/udev.sh | sudo sh
sudo udevadm control --reload-rules && sudo udevadm trigger
Ensure cros_ec and cros_ec_lpcs kernel modules are loaded: lsmod | grep cros3.
Linux (pip)
pip install yafi
Requires system GTK4/Adwaita dependencies (Debian/Ubuntu: sudo apt install python3-gi gir1.2-gtk-4.0 gir1.2-adw-1)3.
Windows
Download YAFI.exe or YAFI.zip from GitHub Releases. The Framework official EC driver (included in Framework's driver bundles) is recommended and requires no admin privileges. Alternatively, install PawnIO with the LpcCrOSEC module (requires admin)3.
Related Projects
- CrOS_EC_Python — Steve-Tech's EC communication library used by YAFI. Also proposed as a replacement for ectool in fw-fanctrl PR #1642
- Framework Control — Alternative GUI by Kemal_Ozturk (Rust + Svelte web UI) with fan curve editor, telemetry, and power management12
- Framework Deck — All-in-one desktop companion by ToySnail (Tauri 2) integrating telemetry, keyboard config, and LED matrix editing
- fw-fanctrl — CLI systemd service for fan control; Steve-Tech submitted PR to use CrOS_EC_Python instead of ectool regex parsing
- FrameworkComputer/framework-system — Official Framework CLI tool for EC interaction
- DHowett/ectool — Patched Chrome OS EC tool for Framework laptops
- Exploring the Embedded Controller — Foundational community thread on Framework EC internals (281 replies, 49K+ views)13