Peter-Easton / android-debug-cable-howto

This is a simple how-to to create your own android kernel debugging cable using commercially available parts.
189 stars 19 forks source link

[discussion] Works on Pixel 8 Pro #13

Open surlyhacker opened 4 months ago

surlyhacker commented 4 months ago

Thanks for creating this guide

Side note: this is not an "issue" per se, but since the discussion tab isn't enabled, I filed it as one. Any chance you want to enable discussions on this repo?

I have successfully used this on the Pixel 8 Pro. I used a USB UART cable from Adafruit, which uses the SiLabs CP2102 chipset and like the one you used, does 3.3V TX output, which is not the 1.8V that it seems Pixel devices were designed for.

So I put a voltage divider (with two 10k resistors I had) on the TX line to cut the voltage in half to be safe.

With the USB-C breakout board plugged into the phone with the "A" side USB-C pins facing up toward the device screen, it worked with pin A8/SBU1 connected to the UART cable's RX line and B8/SBU2 connected to the TX line. (*See tech note below)

I think it's not reversible, and if the board's connector was plugged in the other way with the B side pins up, then RX and TX would end up getting swapped and I suspect it would not work without swapping A8 to TX and B8 to RX.

minicom seemed to default to 115200 baud with 8N1, which worked.

I used a different breakout board too due to shipping times.

* Tech note: I don't actually know if the USB receptacle in the phone has A pins on the screen side, so I can't say for sure that the true A8 (from the phone's perspective) is actually what should connect to the UART RX, so I am just using that terminology by convention based on the breakout board labeling. You also have to look at your breakout board to see which side (top/bottom) of the connector is connected to A vs B pins in order to plug it in correctly. See Google's old repo for their cable for their (brief) mention of orientation:

Determine correct orientation - top vs. bottom - the tool operates correctly only when SBU1 pin corresponds to TX and SBU2 pin corresponds to RX.

So based on that, either they have swapped this with newer devices (seems less likely), or the phone's receptacle actually has the B pins on the screen side, in which case my convention is flipped. I didn't want to use an oscilloscope to verify.

kjjiffy commented 1 month ago

Could you please let me know what exactly should I do after: sudo minicom --device /dev/ttyUSB0 I am a beginner to kernel debugging and trying on my own. After starting the device I didn't get any kernel logs on minicom. Do I need to do something else too. Or is there any problem with my connections. I used https://www.amazon.in/dp/B0BQC1Y15F?ref=ppx_yo2ov_dt_b_fed_asin_title board. And https://www.amazon.in/dp/B077NC9895?ref=ppx_yo2ov_dt_b_fed_asin_title&th=1 cable. The connections I given are:

  1. B8 -- white
  2. A8 -- green
  3. B1 -- black
  4. Red left alone Could you please correct me if I'm wrong. And then I tried to do establish gdb connection, but caused the following (gdb) target remote /dev/ttyUSB0 Remote debugging using /dev/ttyUSB0 Ignoring packet error, continuing... warning: unrecognized item "timeout" in "qSupported" response Ignoring packet error, continuing... Ignoring packet error, continuing... Remote replied unexpectedly to 'vMustReplyEmpty': timeout Kindly help me with this. One more doubt is what all config values should I give as 'y' while building custom kernel?