MXL7704 (Raspberry Pi)

The MXL7704 is a programmable quadruple step-down DC/DC converter that is used in the following Raspberry Pi models:


 * Raspberry Pi 3 (A+ and B+) (MXL7704-R3 version)
 * Raspberry Pi 4 (all) (MXL7704-P4 version)

Cause of failure
If the Pi's 5V pin is shorted to the neighboring 3.3V pin, the MXL7704 will try to clamp the voltage on the 3.3V line. This destroys the MXL7704 chip, leaving the 3.3V line permanently shorted to GND.

Configuring
The MXL7704 chip can be configured via an I2C interface. The I2C address depends on the version of the chip:

Every version of the chip can be installed in every Raspberry Pi model, but its configuration will need to be changed manually if a version different than the original one is used.

Known configurations are listed below:

The following contacts can be used to acces the I2C interface:

Repeated failures?
Currently it is suspected that in some cases, a failure of some other component is destroying the MXL7704.

On multiple Pi 3 boards, the resistance between the 5V and the 3.3V rails has been measured after soldering in a new chip (but before applying power to the board). It has been observed that supplying power to the board destroys the MXL7704 immediately if a resistance of 50k was measured. This happened every time, even when the chip was swapped multiple times in a row. On functioning boards, the resistance between the 5V and the 3.3V rail is above 100k.

More research is needed to determine if the resistance actually is linked to those failures, and to locate the component that is causing the issue.

Note that the I2C interface usually doesn't work if the chip is broken.

Compatibility of I2C addresses
While all versions of the MXL7704 can be used interchangeably (if the right configuration has been written to them), it is currently not known if a chip with a different I2C address is properly recognized by the OS.

If the MXL7704 is recognized correctly, the following commands should return voltage readings when run on a Raspberry Pi 4:

vcgencmd measure_volts ain1 vcgencmd measure_volts usb_pd