As most may be aware judging by the URL, I am an Android developer in my spare time and my main devices to have fun with are the Google Pixel series of devices, I won’t dive into the reasons why in this blog post as I just want to get directly into the content here.
One of the most annoying things about developing on Pixel devices is the inability to get most of the logs if something were to go wrong, on the Pixel 1 the kernel dmesg is logged to /proc/last_kmsg however in some cases that may end up empty, corrupted or the recovery will write itself over the previous log. With a UART cable you are able to completely bypass the file-based logging mechanism and instead get logs straight from the kernel and even the bootloader.
To make one of these cables it’s fairly easy, here are the things you need:
– A TRRS breakout board (£2.79 in the UK on eBay)
– A TRRS cable (£6.95 if you search for Rode microphone cables)
– An FTDI USB adapter (£10.55 on UK eBay)
– Female to female Dupont cables (£2.40 for 40 of them)
To make the cable you will need to connect the correct connections to the TRRS breakout board, a handy diagram is attached below (credit to duasynt):
When 3.3v is applied to the sleeve the Pixel knows to switch the headphone jack into UART mode where it will then transmit/receive data via TXD and RXD.
A photo of how I connected the TRRS breakout to my FTDI adapter is below:
(Note that the green cable and black cable are the same cable, I just ran out of Dupont cables of the same colour)
Ok so here’s where I’m going to point out the first biggest mistake I made, I had seemingly all of the correct parts to make this UART cable however I realised something very quickly after realizing my FTDI adapter was detecting a short.
The cable I was using happened to be what is called a “TRS” cable instead of a “TRRS” cable, the difference being that TRRS has one extra ring which seems to be the ring that contains the GND connection, which in my case was why I found that VCC would be shorted to ground.
After amending that mistake I ordered the correct TRRS cable (usually used for Rode VideoMic external microphones so not hard to find) I connected the 3.5mm jack to my breakout and then to my Pixel and ran fastboot oem uart enable