EC-3PO is the console interpreter that will one day replace the EC console that we have today. EC-3PO aims to migrate our rich debug console from the EC itself to the host. This allows us to maintain our rich debug console without impacting our EC image sizes while also allowing us to add new features.
For more information, see the design doc.
If you‘re using
servod to connect to your EC, chances are you’re already using it. EC-3PO was grafted into
servod on Feb 7th 2016. If you're not running
servod, you can run EC-3PO manually by running
console.py in the
util/ec3po directory from the EC checkout. You will need to provide the PTY that you get from elsewhere though.
To obtain the EC console PTY, inside the chroot run:
$ dut-control ec_uart_pty
NOTE: It's important to use
dut-control to query the PTY instead of just eyeballing the
servod output. The former PTY (now known as
raw_ec_uart_pty) will be sending raw binary data. Trying to use that console with an enhanced EC image will definitely fail and you won't be able to send/receive any commands.
Then use your favorite serial terminal program to connect to the PTY. Since
servod is run as root, you'll need to run your serial terminal program as root as well using
sudo. This is because the permissions have changed from 666 to 660.
EC-3PO has been tested with
cu. However, if you‘re using
cu you’ll have to do the following to get it to work because apparently,
cu wants group write permissions. On Ubuntu at least, the PTY is created with the
tty group. If on your machine it‘s not, then just replace
tty with whatever group it’s created with.
ttygroup if you don't have one already.
sudoand it should work now.
This is because there‘s a ~300ms delay after entering each console command. This is due to the interrogation that the console interpreter performs to determine if the EC image it’s currently talking to is enhanced or not. Debug prints coming from the EC should be the same speed. Since most people aren't currently using the enhanced EC images, you can go ahead and run this command if the 300ms delay is unbearable.
To disable the delay:
socat users, due to the line buffered nature, you'll have to just enter
%interrogate never. Notice the lack of the space character between
% and the command.
The interrogation delay should now be gone and you can have your 300ms/cmd back.
You simply add this to your board.h file.
Make sure you try with
sudo. If you're using
cu, make sure root is a member of the group of the created PTY.