Terms used:
- target: The laptop system that has the EC to be tested
- host: The system that will have all devices connected to it and will receive the EC logs
- Install dependencies
./scripts/deps.sh
- Start the console
make BOARD=system76/<model> console_internal
- If you're not seeing seeing expected output, check the
LEVEL
cflag. This is an EC compile time configuration and changing will require a build and flash of the EC.
This method replaces the keyboard with a device used for debug logging. An alternate method of interacting with the target is needed; e.g., an external USB keyboard or SSH session.
Requirements:
- Arduino Mega 2560 compatible board
- 24 pin FPC breakout board and cables
- 0.5mm or 1.0mm pitch, depending on target connector
- USB-C cable
For details on configuring the Mega 2560 and breakout board, see mega2560.
- Enable parallel port debugging in the EC firmware
- Uncomment
PARALLEL_DEBUG
insrc/board/system76/common/common.mk
- Build and flash the firmware for the target
- Uncomment
- Power off target
- Remove bottom panel
- Unplug keyboard cable
- May require removing keyboard depending on port location
- Ground target to host
- Connect USB cable from USB-C port on target to host
- Connect Mega 2560 to host
- This will create an ACM device at
/dev/ttyACM*
- This will create an ACM device at
- Connect Mega 2560 to target
- Start the console
make BOARD=system76/<model> console_external
EC logs should now print to the console on the host. This can be tested by removing or inserting the AC adapter to trigger a power event.
To return the Mega 2560 to host mode, reset the device.
If logs are corrupted, try power cycling the Mega or reseating the cable.
Failure to follow steps in order, or performing steps on an unsupported board, may result in damaged board components.
The I2C connection is made through the battery pins. Find the pins marked
SMC_BAT
(clock) and SMD_BAT
(data) in the service manual.
Board | SMC_BAT |
SMD_BAT |
---|---|---|
addw1 | 4 | 5 |
addw2 | 4 | 5 |
darp5 | 4 | 5 |
darp6 | 4 | 5 |
galp3 | 4 | 5 |
galp3-b | 4 | 5 |
galp3-c | 4 | 5 |
galp4 | 4 | 5 |
gaze14 | 4 | 3 |
gaze15 | 4 | 3 |
lemp9 | 6 | 5 |
lemp10 | 6 | 5 |
oryp5 | 4 | 5 |
oryp6 | 6 | 5 |
oryp7 | 6 | 5 |
- Power off system
- Unplug AC adapter
- Remove bottom panel
- Disconnect battery
- Attach one wire to
SMC_BAT
- Attach one wire to
SMD_BAT
- Route wires through the Kensington lock slot
- Secure wires to board with tape
- Attach female connector and housing to wires
- Reconnect battery
- Replace bottom panel
Requirements:
- Target wired for EC debugging
- Adafruit Trinket M0
- USB-C cable
- Enable I2C debugging in the EC firmware for the target
- Uncomment
I2C_DEBUGGER
insrc/board/system76/common/common.mk
- Build and flash firmware
- Uncomment
- Connect Trinket M0 to host
- This will create an ACM device at
/dev/ttyACM*
- This will create an ACM device at
- Connect to ACM device from host
sudo tio -b 115200 -m INLCRNL /dev/ttyACM0
- Ground target to host
- Connect USB cable from USB-C port on target to host
- Connect target to host
- Connect
SMC_BAT
wire toSCL
on Trinket M0 - Connect
SMD_BAT
wire toSDA
on Trinket M0
- Connect
EC logs should now print to the console on the host. This can be tested by removing or inserting the AC adapter to trigger a power event.