Difference between revisions of "LPC Debug Port"
KaosEngineer (talk | contribs) m (LCLK (2) wrong pin changed to (1)) |
(Embed LFRAME# reconnection images from external links) |
||
(7 intermediate revisions by 5 users not shown) | |||
Line 4: | Line 4: | ||
! style="text-align:right" | Name !! style="text-align:right" | Pin !! Pin !! Name | ! style="text-align:right" | Name !! style="text-align:right" | Pin !! Pin !! Name | ||
|- | |- | ||
− | | style="text-align:right" | | + | | style="text-align:right" | SERIRQ (v1.0) || style="text-align:right" | 16 || 15 || 3.3V |
|- | |- | ||
| style="text-align:right" | SDA || style="text-align:right" | 14 || 13 || SCL | | style="text-align:right" | SDA || style="text-align:right" | 14 || 13 || SCL | ||
Line 27: | Line 27: | ||
== Pins == | == Pins == | ||
− | * '''3.3V''' (15 & 9) - Provides 3.3V while the Xbox is powered on. | + | * '''3.3V''' (15 & 9) - Provides 3.3V while the Xbox is powered on. On 1.6 hardware, pin 9 is disconnected. Reconnect to pin 15 to restore the supply voltage. |
* '''SDA''' (14) - [[SMBus]] data and address signal. | * '''SDA''' (14) - [[SMBus]] data and address signal. | ||
* '''SCL''' (13) - [[SMBus]] clock signal. | * '''SCL''' (13) - [[SMBus]] clock signal. | ||
Line 35: | Line 35: | ||
* '''LRESET#''' (5) - LPC reset signal; same as PCIRST#. | * '''LRESET#''' (5) - LPC reset signal; same as PCIRST#. | ||
* '''PWR''' (4) - On pre-1.6 hardware, this pin does not physically exist. On 1.6 hardware, this pin is connected to the power button. Shorting it to ground will turn the Xbox on and off. | * '''PWR''' (4) - On pre-1.6 hardware, this pin does not physically exist. On 1.6 hardware, this pin is connected to the power button. Shorting it to ground will turn the Xbox on and off. | ||
− | * '''LFRAME#''' (3) - LPC start-of-cycle signal. | + | * '''LFRAME#''' (3) - LPC start-of-cycle signal. On 1.3-1.5 hardware, this pin is disconnected. See [[LPC_Debug_Port#LFRAME.23_reconnect|LFRAME# reconnect]] for a possible reconnection. |
* '''LCLK''' (1) - 33MHz LPC clock signal; same as PCICLK. | * '''LCLK''' (1) - 33MHz LPC clock signal; same as PCICLK. | ||
The debug port lacks the optional LDRQ#, SERIRQ, CLKRUN#, PME#, LPCPD#, and LSMI# signals. This means peripherals connected to the debug port cannot utilize interrupt, DMA, bus mastering, or power management features. | The debug port lacks the optional LDRQ#, SERIRQ, CLKRUN#, PME#, LPCPD#, and LSMI# signals. This means peripherals connected to the debug port cannot utilize interrupt, DMA, bus mastering, or power management features. | ||
+ | |||
+ | == LFRAME# reconnect == | ||
+ | |||
+ | [[File:LFRAME-for-v1_3-and-up.png|thumb|200px|Disconnected LFRAME# can be reconstructed with via found on all [[MCPX]] revisions]] | ||
+ | |||
+ | It is possible to reconnect the LFRAME# signal to the LPC port on 1.3-1.5 hardware by tapping the MCPX soldermask and soldering a jumper wire from the via to the disconnected pin on the LPC port. | ||
+ | |||
+ | Result should look similar to this: | ||
+ | |||
+ | [[File:Dreimer-lframe-v1-3-reconnect.jpg|500px|Image provided by dreimer]] | ||
+ | |||
+ | In the end, we can gain kernel debug output from Super I/O serial again: | ||
+ | |||
+ | [[File:Dreimer-lframe-v1-3-windbg.png|500px|Image provided by dreimer]] | ||
+ | |||
+ | This reconnection was tested on 1.3 hardware, and should also work with the later 1.4 and 1.5 revisions. | ||
+ | |||
+ | == References == | ||
+ | |||
+ | * [https://web.archive.org/web/20140805105234/http://dwl.xbox-scene.com/~xbox/xbox-scene/tutorials/LFRAME-for-v1_3-and-up.pdf LFRAME-for-v1_3-and-up.pdf] An old manual from Xbox-Scene that explains how to reconnect '''LFRAME#''' (3) for a Cheapmod. This we don't care about, but is what we want for [[Kernel_Debug|kernel debugging]] via [[Super_I/O|Super I/O]]. Thanks to dreimer for finding and testing this documentation. |
Latest revision as of 18:47, 26 October 2019
Name | Pin | Pin | Name |
---|---|---|---|
SERIRQ (v1.0) | 16 | 15 | 3.3V |
SDA | 14 | 13 | SCL |
GND | 12 | 11 | LAD0 |
LAD1 | 10 | 9 | 3.3V |
LAD2 | 8 | 7 | LAD3 |
5V | 6 | 5 | LRESET# |
PWR (v1.6) | 4 | 3 | LFRAME# |
GND | 2 | 1 | LCLK |
The LPC Debug Port is an unpopulated 2x8 2.54mm (0.1") footprint on the Xbox motherboard that provides access to the system's Low Pin Count Bus, as well as the SMBus. Throughout the Xbox's lifetime, Microsoft modified the LPC port in an attempt to prevent modding and, in some cases, it must be "rebuilt" to restore the port's full functionality. Rebuilding the LPC debug port involves soldering wires between it and very small vias on the motherboard.
The LPC bus is controlled by the MCPX southbridge, which conforms to the Intel Low Pin Count Specification 1.0.
Pins
- 3.3V (15 & 9) - Provides 3.3V while the Xbox is powered on. On 1.6 hardware, pin 9 is disconnected. Reconnect to pin 15 to restore the supply voltage.
- SDA (14) - SMBus data and address signal.
- SCL (13) - SMBus clock signal.
- GND (12 & 2) - Ground.
- LAD[3:0] (11, 10, 8, 7) - LPC address and data signals.
- 5V (6) - Provides 5V while the Xbox is powered on or v1.6 always on when AC plugged in.
- LRESET# (5) - LPC reset signal; same as PCIRST#.
- PWR (4) - On pre-1.6 hardware, this pin does not physically exist. On 1.6 hardware, this pin is connected to the power button. Shorting it to ground will turn the Xbox on and off.
- LFRAME# (3) - LPC start-of-cycle signal. On 1.3-1.5 hardware, this pin is disconnected. See LFRAME# reconnect for a possible reconnection.
- LCLK (1) - 33MHz LPC clock signal; same as PCICLK.
The debug port lacks the optional LDRQ#, SERIRQ, CLKRUN#, PME#, LPCPD#, and LSMI# signals. This means peripherals connected to the debug port cannot utilize interrupt, DMA, bus mastering, or power management features.
LFRAME# reconnect
It is possible to reconnect the LFRAME# signal to the LPC port on 1.3-1.5 hardware by tapping the MCPX soldermask and soldering a jumper wire from the via to the disconnected pin on the LPC port.
Result should look similar to this:
In the end, we can gain kernel debug output from Super I/O serial again:
This reconnection was tested on 1.3 hardware, and should also work with the later 1.4 and 1.5 revisions.
References
- LFRAME-for-v1_3-and-up.pdf An old manual from Xbox-Scene that explains how to reconnect LFRAME# (3) for a Cheapmod. This we don't care about, but is what we want for kernel debugging via Super I/O. Thanks to dreimer for finding and testing this documentation.