Info: this is a guide for the international version I9300 with XMM6260 modem. The SGH-I747-variant uses a different baseband/modem from Qualcomm.
Warning: This guide allows you to interface your device at a very low level. You might brick your device or damage vital parts of it. A lot of this stuff is undocumented and there might be side effects. Be warned!
Short technical explanation:
By using a custom build USB cable you can establish a serial connection to your phone. It offers a UART interface to the XMM6260/X-Gold 626 modem used in the I9300.
The longer technical explanation:
The I9300 uses a FSA9485 USB Port Multimedia Switch (https://www.fairchildsemi.com/produc...s/FSA9485.html) behind the MicroUSB port. This IC can detect what kind of accessories are plugged to your USB port. The detection is done by a resistor wired between GND and ID pin of the USB cable. Using a resistance level of 523K will trigger the UART Mode. While in UART mode the I9300 will use the D- and D+ pins of the MicroB-plug as serial TX/RX data lines.
What to to with it?
While booting you can see debugging output of the secondary bootloader (not that much though, mainly eMMC initialize). Once booted you can see modem output and send commands to it. Another option is to show "PDA" messages, but i never managed to get any output with this setting.
You can communicate to your modem using AT-commands. For more information I recommend reading E:V:A's great post "[XMM6260][X-GOLD 626] Modem Specification / Documentation / Hack-Pack". While his guide is focussing on the SGS2, i want to keep this guide I9300 specific.
How to build a cable?
Stuff you need:
- A USB to serial converter supporting 3,3V(!) TTL levels (lots of this stuff around, check eBay or your local electronics supplier. Common chipsets are FTDIs FT232RL or Silicon Labs CP21xx, just make sure it supports 3,3V!)
- A USB MicroB plug (like this https://www.sparkfun.com/products/10031 or I just sacrificed a cable for soldering directly to the connector which works too)
- a resistor with 523K resistance (close value will work)
- some wires
- a soldering iron
Wire it like this:
How to use it (tested with I9300XXELL4 (Android 4.1.2):
- Install the drivers for your USB to serial converter (running linux your device will most likely be autodetected and assigned to /dev/ttyUSB0 or similar)
- On your I9300 Dial *#7284# and set UART mode to "modem"
- use your favorite serial console and set the following parameters for the serial port: rate: 115200 baud, data: 8 bits, parity: none, stop bit: 1, software flow-control: enable
I prefer using the "screen"-command on linux: "screen -t 'ttyUSB0 115200 8n1' /dev/ttyUSB0 115200,-ixoff,-ixon"
Now connect your UART-cable to the phone (it will power up on its own due to the FSA9485 chip, no need to worry)
If you see console output like this you got it right:
PMIC rev = PASS2(2) BUCK1OUT(vdd_mif) = 0x05 BUCK3DVS1(vdd_int) = 0x20 [MMC] there are pending interrupts 0x00010000 cardtype: 0x00000007 SB_MMC_HS_52MHZ_1_8V_3V_IO mmc->card_caps: 0x00000311 mmc->host_caps: 0x00000311 mmc_initialize: mmc->capacity = 30777344 � AST_POWERON AST_POWERON AST_POWERON
Try send a simple "AT" and your phone should respond with "OK"
Another warning at this time: Do not send random characters/commands to your modem. This is an easy way to brick your network connection or even your entire phone.
- check the wiring, maybe you switched TX/RX data lines
- on linux check user rights on your /dev/ttyUSBX device, check with superuser if unsure
- to be extended
- E:V:A for his great guides about modems/AT commands in general and the XMM6260
- the Replicant project: http://www.replicant.us/
- many other guys gave me a hint in the right direction which I forgot to mention here