Projects

DIY USB Breakout Board for Chromebooks

Erich heinzle

Issue 73, August 2023

Give your old Chromebook a new lease on life with this simple closed debugging cable breakout PCB. This handy board enables reflashing of firmware on Chromebooks using signed firmware/CR50 systems to allow alternative operating systems to be installed more easily.

THE BROAD OVERVIEW

This Suzy Q debugging PCB is designed for use on Chromebooks to unlock signed firmware settings, to allow other firmware and then other operating systems to be installed.

The original "SuzyQ" cables previously available for this were quite expensive, due to their USB 3.1 cabling, and embedded USB hub. This is a much simpler and cheaper design.

HOW IT WORKS

The board is designed to accommodate a readily available and inexpensive USB Type-C 3.1 breakout board, which comes in versions with either a male or female USB-C v3.1 connector, and two standard USB type B connectors with kinked solder tabs (i.e. Molex 670687041) to allow assembly with simple through hole soldering, and avoiding the need for an expensive USB 3.1 cable if using the male version of the USB-C breakout board.

Only one Type B USB port socket for ttyUSB0 needs to be installed if there is no need for access to the debugging console on ttyUSB1.

The 5V pins on the Type B USB cables are not connected to the USB Type-C Vcc pins by default, in case of different machines (with slightly different USB "5V" voltages) might be used for monitoring ttyUSB0 and/or ttyUSB1.

The USB Type B 5V rails can be commoned to the USB Type-C Vcc rail by putting links or a low-value resistor across JMP0 and/or JMP1. A link placed across SGNDM can be used to common the Male USB Type-C cable shield to the ground pins/ground network of the circuit; similarly, a link placed across SGNDF can be used to common a Female USB Type-C cable shield to the ground pins/ground network of the circuit, but commoning of shields to ground was not found to be necessary for the prototype to work.

If the male (plug) version of the USB-C breakout shield is used, it should be attached to the top surface of the board. If the female (socket) version of the USB-C breakout shield is used, it should be attached to the bottom surface of the board, to achieve the required mirroring of pin connections effected by the reversed gender.

Importantly, some of the commonly available Male USB-C breakout boards have silkscreen markings applicable to the Female socket version, so the pin numbering is actually back to front, i.e. A2 should be A11, B11 should be B2, etc...:

A typical USB-C breakout board with male connector

Chromebook functionality with GNU/Linux

For the price paid, and the hardware supplied, Chromebooks are very cost effective devices for STEM and coding generally, and are well suited to running GNU/linux distributions.

A standard installation of a GNU/Linux distribution will easily fit even on the smallest 32GB SSDs/eMMCs in Chromebooks, and will allow coding and development in C, C++, python, awk, bash, java, javascript, scheme, LISP, Fortran etc... with the free and easily installed compilers and editors.

Chromebooks running GNU/Linux distributions are, of course, capable of browsing, word processing, 3D CAD, driving a laser cutter, driving a 3D printer, email and all of the other things you'd expect of an operating system, including the use of the Java version of Minecraft.

Like any computer, functionality will generally only be limited by the built-in RAM of the Chromebook.

Lighter weight distributions such as lubuntu are recommended for lower-end machines with as little as 1-2GB RAM (this is being typed on a 2GB RAM, 32GB eMMC HP Chromebook running lubuntu 20.04). Extra storage is most easily added using SD cards if this is an issue on older Chromebooks.

ABOUT THE CIRCUIT BOARD

The prototype PCB in the FOSS layout editor pcb-rnd

The board is 49mm wide and 47mm high.

The PCB has slots to allow either the male or female versions of the USB-C breakout board to be attached more solidly with M3 nuts and bolts if desired.

I had my boards manufactured by SEEED, and have included the Gerber files on my GitHub:
https://github.com/erichVK5/erichVK5-suzy-Q-cable-v1

The Build:

The schematic in the FOSS schematic editor sch-rnd:

This is the top view with the Type-C Male breakout board mounted on the top surface

This is a view of the underside with the Type C Male breakout board mounted on the other (top) side surface

If you look closely, the two rows of pins for the breakout board only need soldering where the silkscreen has a circle around the pin.

If a female Type-C breakout board is used, it will need to be attached to the underside, to effect the necessary inversion of pins. It is best to use the Type-C male breakout board, as Type C <-> Type C USB cables with all of the necessary wires are quite expensive.

This is the unit plugged into a Lenovo Ideapad chromebook Type C power socket. The PCB does obstruct one of the adjacent Type A USB ports.

Note: The PCB does obstruct one of the adjacent Type A USB ports.

How to operate

This photo shows the board plugged into the same Lenovo Ideapad Chromebook Type C power socket with the type B to type A USB cable being used to bring ttyUSB0 to one of the spare type A USB ports on the Chromebook.

An interposed Type A hub may be needed if the Chromebook is lacking sufficient type A ports for ttyUSB0 use as well as a USB stick, ttyUSB1, use etc... but this has not been tested.

On the IdeaPad running Lubuntu 20.04, a terminal shows the results of the SuzyQ board being plugged in when the dmesg command is run, and also subsequent querying of available ttyUSB devices after insertion of the board confirms that new ttyUSB devices are present, and importantly, ttyUSB0 is available to connect to for closed debugging:

The ttyUSB0 device can be connected to under linux with a serial terminal such as minicom, which will need configuring to use ttyUSB0 for serial IO.

The user account, if running GNU/linux or similar, will also need to be a member of dialout to access this port.

Once connected to ttyUSB0, a HELP command can be issued:

A more detailed HELP-LIST command can be also be issued:

On the same IdeaPad, the board ID is queried, confirming it is a Geminilake motherboard using CR50 firmware signing:

For those intending to turn off firmware signing on CR50 Chromebooks or similar, the latest instructions are available at https://mrchromebox.tech/

Turning off firmware signing on newer Chromebooks will allow custom firmware such as that available from mrchromebox to be installed which will allow alternative operating systems such as GNU/linux to be installed, rather than the default ChromeOS.

FINAL WORD

Over time, support for newer chipsets improves as open source kernel developers address their particular requirements. Accordingly, third party firmware support for newer Chromebook models is constantly evolving. It is worth checking if the current firmware for your particular model of Chromebook is yet to implement support for any subsystems provided by newer chipsets, i.e. audio, before taking the plunge. ■

Cautionary Note:

This SuzyQ adaptor has been tested successfully on a CR50 based Lenovo Ideapad Chromebook with a GeminiLake motherboard, but your mileage may vary on other devices, and there is always a possibility of harm being done to USB ports if specifications change or there are mistakes during assembly.