0xDA LLC’s USB Cereal is an open-source hardware development tool with three USB-C ports designed to simplify the testing, development, debugging, and manufacturing of devices with USB Type-C ports.
Initially originated at Google, the USB Cereal project has gone through multiple revisions to optimize its quality and lower the BoM cost, and the device can be used for all sorts of USB Type-C debugging using a UART serial communication with the host device through the USB-C sideband use (SBU) pins typically reserved for device-specific applications.
USB Cereal specifications:
- USB Type-C ports
- 2x USB-C ports for passthrough between the host and device under test (DUT)
- Note: the DUT port is on the side with a single USB Type-C connector
- No orientation detection has been implemented to keep the design as simple and inexpensive as possible
- 1x USB-C port for capture support to 3 Mbps connected through FTDI FT232RNQ USB to TTL chip (CP2102N can also be used as a substitute). No auto-level detection in order to support more exotic devices that may not be fully UART compliant
- 2x USB-C ports for passthrough between the host and device under test (DUT)
- Misc
- Switch to select between 3.3V and 1.8V signal levels
- Green and Orange LEDs to monitor Tx and Rx operations
- Dimensions – Small and portable
The DUT does not need any specific USB drivers so the capture can work on all types of hardware. We are told there’s also no need to open up the DUT, add jumper wires, or extra connectors, simply connecting the USB-C “DUT” port from the USB Cereal is enough.
Autodesk ECAD and MCAD files, as well as the PDF schematics, can be found on GitHub. What we are not shown is a program used to capture and analyze the data over serial and its use cases were not immediately clear to me. But Dmitrii Votintcev (acting as 0xDA LLC) says that USB-Cereal does not duplicate any functionality of Twinkie, and it only focuses on one thing: USB-C serial communication over SBU pins.
We are also shown a comparison table with USB Cereal, Tag-Connect, Suzy-Q, and uArt. So if I understand that right, the device is more like a USB to TLL debug board that also enables USB passthrough and relies on the SBU1/SBU2 pins of the USB interface instead of a separate header. I’m still slightly confused since the DUT’s firmware would have to be updated to send/receive data over those pins.
The USB Cereal has just launched on Crowd Supply with a $10,000 funding goal. A $49 pledge is asked for the debug tool with free shipping to the US and an extra $8 for shipping to the rest of the world. Delivery is scheduled to start around mid-July 2023.
![Jean Luc Aufranc](https://www.cnx-software.com/wp-content/uploads/2023/05/Jean-Luc-Aufranc.webp)
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress
$49 for a serial port adapter that can only handle usb-cvdevices? Wat. Why not add 4pin serial connector too? I wouldn’t call a serial port a “debugging tool” I assumed it would implement jtag/swd too..
I like the 1.8/3.3volt switch, though
Thank you for your overview of the project, and thank you for the notes as to what is not clear on the campaign page, we will make sure to include the usage examples in future campaign updates. To answer a few points:
Any serial console port tools could work here. On Linux screen is an option. On Windows TeraTerm/xTerm and such work well.
Pretty much.
Indeed, UART driver and/or capable bootloader has to be brought up and flashed onto the device at manufacturing time. However, it is fairly trivial when compared to relying on other communication interfaces such as USB/Ethernet/radio that are often used to capture logs from devices. Such interfaces also limit the development scope (e.g. it’s hard to work on minimal bootloaders, kernels or USB drivers relying on USB to see the dev logs).
Thank you!
Thank you for the explanation. It took me a while to understand because I have never seen a device providing serial over SUB1/2 pins. But I can see it can be a cost-effective and convenient way on devices where there’s already a USB-C port and the SUB pins are routed.
Most of the platforms I come across expose serial through a 3-pin or 4-pin header and we can use a cheap $1 to $2 USB to TTL adapter unless we need more advanced features.
Exactly! We choose to be a USB-C exclusive interface as one can buy an FTDI cable (or similar) with all kind of jumper interfaces for a few bucks. The intent here is really to target devices that are manufactured at larger scales than a few dozen, and are worked on by many developers.
cool tool but looking at the schematic on github the debug usb-c connector isn’t spec compliant: each cc pin should have an individual resistor rather than being ganged together. the raspberry pi 4 also made this mistake.
Hey repkid, thank you for noticing that, there was a history with this mishap when the device was first released, it has been fixed and tested. Will push the updated design files in a bit!
The repo is updated with newer designs, and the design with this mistake is deprecated.
Good luck with the campaign!
So this will perform the functions of the impossible-to-buy SuzyQable?
No, SuzyQ uses a different approach (implementing a second USB interface over SBU pins, and a cable detection scheme). USB-Cereal gives exclusive priority to UART over SBU pins.
Kinda misleading to have it in the chart with SuzyQ like that, isn’t it? I bet more than one person will buy this, thinking they can fix their Chromebook.
Added a clarifying note to the table – thanks for bring this up!
Can test PD?
No. https://github.com/oxda/usb-cereal/blob/main/docs/usb-cereal-cp-schematics.pdf
I’m sorry but I completely failed to understand what this device was trying to do, both from its description and from its specs, I thought it was trying to capture USB traffic and send it to another port. That’s finally by looking at this diagram that I understood: https://github.com/oxda/usb-cereal/blob/main/docs/usb-cereal-cp-schematics.pdf
For those who, like me, were left in doubt, it embeds a CP2102 USB-to-UART controller that’s connected to pins SBU1/SBU2 of the device under test on one side, and to one of the two USB-C connectors on the other side. So it’s like a cable between a device and a host, with a UART connected to these two wires, allowing to access a serial port connected to them via one USB-C connector.
Now the important question is, what devices are connecting their console to these two pins that I was unaware of before this article ? Is this something common, or more a suggestion of direction for future devices ?
Exactly – apologies for not making it clear from the article, will try to add a block diagram to make it a bit more visual.
There are devices on the market that use this strategy, but the big goal here is to promote the strategy for future devices.