Skip to content
System76 EC (WIP)
C Makefile
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc Reorganize to allow compiling and running AVR firmware Sep 29, 2019
ecflash @ 863439d Add flash target Nov 21, 2019
ecsim @ 757960f Update ecsim Nov 20, 2019
src Debounce key releases (needs testing) Dec 7, 2019
.gitignore Add initial source Sep 27, 2019
.gitmodules Add flash target Nov 21, 2019
LICENSE Initial commit Sep 27, 2019
Makefile Rebuild when makefile change Nov 24, 2019
POWER.txt Add description of power init Nov 6, 2019 Update README Sep 29, 2019 Add RT809F instructions Nov 11, 2019

System76 EC (WIP)

System76 EC is a GPLv3 licensed embedded controller firmware for System76 laptops. It is designed to be portable to boards using several 8-bit microcontrollers, such as:

Board Embedded Controller Architecture
System76 ecsim Simulated ITE EC 8051
System76 Laptops ITE IT8587E 8051
System76 Thelio Io Atmel ATMEGA32U4 AVR
Arduino Mega 2560 Atmel ATMEGA2560 AVR

Shared features (that can be used across different micro-controllers):

Acronym Feature Description
ADC Analog-digital converter Reads voltages from batteries and temperature from thermistors
DAC Digital-analog converter Brightness control of keyboard backlight
GPIO General purpose input/output Control of LED's, buttons, and enable lines for other hardware
KBSC Keyboard scan controller Detects laptop keyboard presses. Keyboard scanning can be done using GPIOs, the ITE EC has hardware acceleration
PS/2 Keyboard and mouse bus Interfaces with touchpad. PS/2 can be done using GPIOs, the ITE EC has hardware acceleration
PWM Pulse-width modulation Fan control and brightness control of LED's
SMBUS System management bus Reads battery information
SPI Serial peripheral interface Reads and programs the EC's firmware
UART Universal asynchronous receiver-transmitter Provides EC console input/output

Features specific to ITE embedded controllers:

Acronym Feature Description
LPC Low pin count Forwards memory and I/O access to EC. Most EC functions are exposed to the host through this interface. High frequency makes a GPIO implementation not possible. Simulation is provided by System76 ecsim
PECI Platform environment control interface Reads CPU temperature (relative to throttle point). Proprietary nature means a GPIO implementation is unlikely, though not technically impossible

Features specific to Atmel embedded controllers:

Acronym Feature Description
USB Universal serial bus Can be used to provide access to EC functions either to the host or to a remote machine
You can’t perform that action at this time.