Chromium OS‎ > ‎



Servo is a debug board used for Chromium OS test and development. It connects to most Chrome devices through a debug header on the mainboard. The debug header is used primarily during development and is often removed before a device is released to consumers. If you have a production device the debug header might need reworking before servo can be connected.

Servo is a key enabler for automated testing, including automated firmware testingIt provides:

  • Software access to device GPIOs, through hdctools
  • Access to EC and CPU UART ports, for convenient debugging 
  • Reflashing of EC and system firmware, for easy recovery of bricked systems

For example, it can act as a USB host to simulate connection and removal of external USB devices. It also provides JTAG support.

Though servo boards are not publicly distributed or sold (by Google), detailed information on Servo V2 block diagram, BOM, schematic and layout is available.

Connecting Servo

In a typical debug setup, you connect servo to the debug header on a Chrome device, and to a host machine through the HOST_IN USB port. See the annotated FAFT setup image for details. 

Most newer Chrome OS mainboards attach to servo with a 50-pin flex cable. The schematic and layout for this cable is also available. The standard DUT-side debug header is an AXK750347G from Panasonic, though shorter variants are sometimes used.

The basic steps to connect servo are:
  1. Check the direction printed on the flex cable.
  2. Connect the DUT end to the debug header on the Chrome device, metal side down.
  3. Connect the Servo end to the header on the servo board, metal side up. Make sure to engage the black bottom clip of the header on the servo board by pushing it inwards after inserting the ribbon cable. This will hold the ribbon cable in place and press the contacts.
  4. Use a USB cable to connect the servo board to your Linux workstation.

You should be able to use the power button on servo to power the Chrome device on and off.

Using Servo

To use servo, on your Linux workstation you need to build Chromium OS and create a chroot environment.

The hdctools (Chrome OS Hardware Debug & Control Tools) package contains several tools needed to work with servo. Make sure the latest version is installed in your chroot:

sudo emerge hdctools

On your workstation, servod must also be running to communicate with servo:

sudo servod -b $BOARD &

With servod running, dut-control commands can be used to probe and change various controls. For a list of commands, run dut-control with no parameters:


You can toggle GPIOs by specifying the control and the state. For example, to perform a DUT cold reset:

dut-control cold_reset:on
sleep 1
dut-control cold_reset:off

Higher-level controls may set several sub-controls in sequence. For example, to transition a DUT to recovery mode:

dut-control power_state:rec

To access the CPU or EC UARTs, first check the port mapping with dut-control, then attach a terminal emulator program to the port:

dut-control cpu_uart_pty
dut-control ec_uart_pty
sudo minicom -D /dev/pts/$PORT

Servo can also be used for flashing firmware. To flash EC firmware:

sudo emerge openocd
/mnt/host/source/src/platform/ec/util/flash_ec --board=$BOARD --image=$IMAGE

The procedure for flashing system firmware may vary slightly by platform. Here is a typical command sequence for flashing system firmware on Baytrail-based Chrome devices:

dut-control spi2_buf_en:on spi2_buf_on_flex_en:on spi2_vref:pp1800 cold_reset:on
sudo flashrom -V -p ft2232_spi:type=servo-v2 -w $IMAGE [need to change for each servo type]
dut-control spi2_buf_en:off spi2_buf_on_flex_en:off spi2_vref:off cold_reset:off

To set up servo to run automated tests, connect the servo board and the test device to the network via Ethernet, and load a Chromium OS image onto USB memory stick. The networking and build image steps are not described here; see FAFT for details on configuring servo to run automated tests. For information on writing tests, see the servo library code in the Chromium OS autotest repo.

Board Images


Subpages (3): Servo Micro Servo V2 Servo V4
Shawn N,
Sep 12, 2014, 1:41 PM
Shawn N,
Sep 12, 2014, 1:41 PM
Shawn N,
Sep 12, 2014, 1:40 PM
Shawn N,
Sep 14, 2014, 12:21 PM
Shawn N,
Sep 12, 2014, 1:42 PM
Shawn N,
Sep 12, 2014, 1:42 PM