Servo v2

Servo v2 is a debug device in the Servo family. It is no longer manufactured, but still frequently used for early bringup or in cases where JTAG/SWD is needed.

Schematic and Layout

Though Servo boards are not publicly distributed or sold (by Google), detailed information is available:

Getting Servo v2

Sorry, Servo v2 is not publicly available for purchase.

Googlers

Stop by your local Chromestop.

Since Servo v2 is no longer manufactured, we are more strict about allocation than other Servo versions.

Connecting Servo v2

In a typical debug setup, you connect Servo v2 to the debug header on a Chrome OS device, and to a host machine through the HOST_IN USB port.

Modern Chrome OS mainboards connect to Servo v2 with a 50-pin “Yoshi” 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 v2 are:

  1. Check the direction printed on the Yoshi flex cable.
  2. Connect the DUT end to the debug header on the Chrome OS device, metal side down.
  3. Connect the “Servo” end to the header on the Servo v2 board, metal side up. Make sure to engage the black bottom clip of the header on the Servo v2 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 v2 board to your Linux workstation.

You should be able to use the power button on Servo v2 to power the Chrome OS device on and off.

Using Servo v2

Follow the general using Servo instructions.

Yoshi Flex Cable

The Yoshi Flex cable is used to connect Servo v2 to a servo header. The standard cable does not work with Serial Wire Debug (SWD), but a simple rework can be performed to support SWD.

Standard Yoshi FlexYoshi Flex Reworked to Support SWD
Standard Yoshi FlexYoshi Flex Reworked to Support SWD

Rework steps:

  • Remove R18 and R19
  • Wire from Pin 6 of U21 to right side of R18
  • Wire from Pin 6 of U21 to right side of R19

Recovery Of Corrupted D2 Chips On D2DB

Some Dauntless(D2) daughtercards (D2DB) come with chips with non-production firmware. Another situation when the D2 chip needs hardware based recovery is when the chip was programmed with an RW firmware which malfunctions and does not allow any more firmware updates.

The only way to recover D2 in this state is to use the spiflash utility, which programs RO and RW firmware simultaneously. This will destroy the D2 identity, but at least will allow using it for board bringup.

Servo v2 allows to use spiflash to re-program D2.

A pull up on dev_mode line is required to allow enabling D2 SPI flash programming mode. On servo-v2 the pull up needs to be connected between pins j7:6 and j11:8, any value from 1k to 1M should be fine.

To enable D2 firwmare flashing run

 $ dut-control -- spi1_buf_en:on spi1_buf_on_flex_en:on spi1_vref:pp3300
 $ dut-control -- dev_mode:on pch_disable:on pch_disable:off

At this point the boot prompt should show up on D2 console:

Ravn4|00100000 7f4bdb+
boot :

and spiflash utility can be used to send the new firmare to the chip.

Images

servo v2 top

servo v2 bottom

Known Issues

GSC UART Support

On Servo v2, by default the GSC/USBPD UART is not enabled and requires a rework. If this is not done, any GSC controls will fail with a timeout since the console is not hooked up.

Something like the following might show up on initialization:

cr50 - WARNING - Consider checking whether the servo device has read/write access to the Cr50 UART console.
Servod - ERROR - Problem initializing cr50_version -> print

This issue can be solved by a rework.

Rework

Servo v2 reworks are needed to flash the PD MCU on certain boards and access the PD MCU console. These reworks are not mutually compatible, so only apply the one relevant to your board.

samus_pd:

servo v2 samus_pd rework

glados_pd / kunimitsu_pd / chell_pd:

servo v2 gladus_pd rework