Raspberry Pi 4B has one well known issue — it doesn’t power up when plugged using some USB-C cables. It may work with old USB-C to USB 2.0 cable, but, for instance, with original MacBook charger it doesn’t. In general, it won’t work with electrically marked (e-marked) cables, but works well with ‘dumb’ cables.
This issue has recently been fixed in revision 1.2 of Raspberry board, however you can still come across older hardware versions. To check your board revision, see this page.
It turns out, that RPi board does not follow the USB-C electrical specification. In brief, USB-C has two CC (Configuration Channel) lines — CC1 and CC2, which are used to determine what kind of device the cable is connected to, based on resistance given at their ends. Regular cables have them unconnected, but e-marked ones monitor resistance at their ends and can cut-out power line. To get powered properly, the device should have both of them connected to ground through independent 5.1kΩ resistors. However, Raspberry Pi 4 has them shorted together and grounded through only one resistor. For USB-C cable Raspberry is detected as an audio adapter accessory. An in-depth detailed description can be found here.
Fortunately, a workaround is possible, however it requires some precision and basic soldering skills.
If you are not careful enough and do something wrong, you may damage your Raspberry Pi! Read three times before proceeding and cease if something is not clear to you. Be warned.
You will need a few things:
- A 5.1kΩ resistor (5.6k works too, checked). THT 0.125 or 0.25W, the smaller resistor, the easier
- Needle or stick pin
- Soldering iron and a bit of solder
- A magnifier might be useful
We are going to lift CC1 pin from USB-C connector on Raspberry board and connect it through resistor to ground. When looking from rear side of the connector, it is 4th pin from the right, marked in the datasheet as A5.
- Use needle to rip up plastic cover on rear side of the connector, just above 4th pin on the right. You need to scratch only a small amount to make the pin inside the connector (behind plastic) visible. It goes vertically from the board to about a half of connector height.
- Carefully pry the pin at the bottom (as close to the board as possible) until it breaks out from onboard pad. Do not mistake the pin! Check twice if you are working with right pin!
- Using needle, lift the pin up until it goes almost parallel to the board.
- Prepare your resistor — bend and cut its pins to fit in and make soldering easier. One side of the resistor will be connected to lifted pin, and the other to top pad of a big diode between USB-C and MicroHDMI connector (see photo below).
- Use tweezers to hold your resistor and solder one ending (direction doesn’t matter) to lifted pin, then the other ending to diode pad (the one closer to the board edge). Final effect should look similar to photo below.
Now, if you’ve done everything correctly, you should be able to power your Raspberry Pi 4B using electrically marked USB-C cables.
Thanks to Raspipat, who shared his fix in this post.