Yes, it was a very (un)productive day.
Inspecting the board-support code of the stock Android kernel gave some clues to the UART-ports.
UPDATE: Might have found it. See below.
According to the Nexus 7 board support code in the current Android-kernel, two UART ports are defined and the I/O is handled by the MSM (so Qualcomm) GPIO-Chip.
- GPIO 18: GSBI1 UART TX
- GPIO 19: GSBI1 UART RX
- GPIO 82: GSBI7 UART TX
- GPIO 83: GSBI7 UART RX
However, it seems that only GSBI1 is actually defined as a UART-Port, as the struct-name “gsbi1_uart_config” and the implementation in board-flo.c suggests. GSBI7 might still be implemented (the devices-8064.c hints towards it), but not implemented on the board itself – who knows? The kernel definitely initializes 2 serial ttys: ttyHSL0 and ttyHSL1.
Judging from the way things are done with other Nexus devices, I assume that ttyHSL1 is reserved for the (in my case nonexistent) LTE modem, which leaves ttyHSL0 for serial / debug, and might explain why one configuration seems to be just a stub in the board-support code, as the WWAN driver would take care of the rest. Since I don’t have access to an LTE-enabled Nexus 7 2013, I’d be glad if anyone could comment on this one.
So – after BigMac II made it over here safe and sound (quad-core-awesomeness!!!), I could finally start poking around some more. While the search for technical documents / schematics for the Nexus 7 2013 didn’t really yield anything, I stumbled over some info for the Nexus 5 by LG which indicated that it also had the debug-mechanism in the headphone jack dm8tbr discovered, I decided to give the sound-drivers another look.
And – HEUREKA! I remember looking into a couple of files in that folder, but how / why I missed this bit is beyond me.
The sound/soc/msm/asustek_headset.c contains exactly what we need: the function insert_headset(void) distinguishes between headphones, headset and *drumroll* debug board!
Since I don’t have access to the equipment dm8tbr used to detect the debug-function, I just count on Google’s / ASUS’ need to keep costs low and assume they want to be able to use the same debug-interfaces throughout the entire product lineup.
The error-notice in line 246 gives enough reason to assume, that the mechanism that forces the Nexus 7 to enter debug mode is the same as it is documented in the commit-log for the Nexus 4 kernel, which means that this circuitry should do the trick. TO THE HARDWARE STORE!
So, the good news is: most likely found the Nexus 7 UART port (hiding in plain sight -_-)
Bad news: I wasted the past weeks waiting for the friggin spudgers 😉
I’ll keep you posted!