Rock5 does not work on most PD power supplies

if this page is accurate… but well it is not that accurate, like the PMIC is RK806 but it says RK809, typo?

the charging IC is IP2315, which takes input up to 12V; searching online I saw it as capable of taking 12V4A, so it kinda explains why PD negotiation only stop at 12V?

Only stop at 12V is a pure software problem because Radxa hardcoded to only stop at 12V. A new kernel is released recently with support up to 20V.

interesting, when I check IP2315 datasheet it says 5-15V, but at the company website it says 5-30V :slight_smile:

it is often so wierd most of the times both are right but in a different way

So all of my PD charges are negotiating to a lower amperage than expected and nVME won’t boot. What’s the easiest way to provide clean 12v power to the usb-c port? Trying to figure out a way to use an atx PSU

here’s an example:

root@rock-5b:~# cat /sys/kernel/debug/usb/fusb302-4-0022 /sys/kernel/debug/usb/tcpm-4-0022 | sort
[    0.906057] sw reset
[    0.909791] fusb302 device ID: 0x91
[    0.909795] Setting usb_comm capable false
[    0.914412] pd := off
[    0.914414] vbus is already Off
[    0.914415] charge is already Off
[    0.914417] vconn is already Off
[    0.914418] Setting voltage/current limit 0 mV 0 mA
[    0.914423] polarity 0
[    0.914443] Requesting mux state 0, usb-role 0, orientation 0
[    0.915243] pd header := Sink, Device
[    0.915248] state change INVALID_STATE -> SNK_UNATTACHED [rev1 NONE_AMS]
[    0.915278] cc1=Open, cc2=Open
[    0.915280] CC1: 0 -> 0, CC2: 0 -> 0 [state SNK_UNATTACHED, polarity 0, disconnected]
[    0.915288] Start toggling
[    0.919984] start drp toggling
[    0.921931] IRQ: 0x80, a: 0x00, b: 0x00, status0: 0x83
[    0.921935] IRQ: VBUS_OK, vbus=On
[    0.927327] IRQ: 0x00, a: 0x40, b: 0x00, status0: 0x83
[    0.927330] IRQ: TOGDONE
[    0.936552] detected cc1=Rp-3.0, cc2=Open
[    0.936792] cc1=Rp-3.0, cc2=Open
[    0.936795] CC1: 0 -> 5, CC2: 0 -> 0 [state TOGGLING, polarity 0, connected]
[    0.936799] state change TOGGLING -> SNK_ATTACH_WAIT [rev1 NONE_AMS]
[    0.936803] pending state change SNK_ATTACH_WAIT -> SNK_DEBOUNCED @ 200 ms [rev1 NONE_AMS]
[    1.007277] IRQ: 0x41, a: 0x00, b: 0x00, status0: 0xd2
[    1.007292] IRQ: BC_LVL, handler pending
[    1.009494] IRQ: 0x51, a: 0x00, b: 0x00, status0: 0xc1
[    1.009508] IRQ: BC_LVL, handler pending
[    1.011863] IRQ: 0x51, a: 0x00, b: 0x00, status0: 0x83
[    1.011877] IRQ: BC_LVL, handler pending
[    1.013992] IRQ: 0x49, a: 0x00, b: 0x00, status0: 0x83
[    1.014006] IRQ: BC_LVL, handler pending
[    1.047149] BC_LVL handler, status0=0x83
[    1.136994] state change SNK_ATTACH_WAIT -> SNK_DEBOUNCED [delayed 200 ms]
[    1.137012] state change SNK_DEBOUNCED -> SNK_ATTACHED [rev1 NONE_AMS]
[    1.137021] polarity 0
[    1.137030] Requesting mux state 1, usb-role 2, orientation 1
[    1.138154] pd header := Sink, Device
[    1.138166] state change SNK_ATTACHED -> SNK_STARTUP [rev1 NONE_AMS]
[    1.138197] state change SNK_STARTUP -> SNK_DISCOVERY [rev3 NONE_AMS]
[    1.138204] Setting voltage/current limit 5000 mV 3000 mA
[    1.138215] vbus=0 charge:=1
[    1.138221] vbus is already Off
[    1.138231] state change SNK_DISCOVERY -> SNK_WAIT_CAPABILITIES [rev3 NONE_AMS]
[    1.144206] pd := on
[    1.144219] pending state change SNK_WAIT_CAPABILITIES -> SNK_SOFT_RESET @ 310 ms [rev3 NONE_AMS]
[    1.157962] IRQ: 0x41, a: 0x00, b: 0x01, status0: 0x93
[    1.157973] IRQ: BC_LVL, handler pending
[    1.157983] IRQ: PD sent good CRC
[    1.162858] PD message header: 51a1
[    1.162872] PD message len: 20
[    1.163054] PD RX, header: 0x51a1 [1]
[    1.163072]  PDO 0: type 0, 5000 mV, 3000 mA [E]
[    1.163077]  PDO 1: type 0, 9000 mV, 3000 mA []
[    1.163081]  PDO 2: type 0, 12000 mV, 3000 mA []
[    1.163085]  PDO 3: type 0, 15000 mV, 3000 mA []
[    1.163088]  PDO 4: type 0, 20000 mV, 3000 mA []
[    1.163093] state change SNK_WAIT_CAPABILITIES -> SNK_NEGOTIATE_CAPABILITIES [rev3 POWER_NEGOTIATION]
[    1.163103] Setting usb_comm capable false
[    1.163110] cc=0 cc1=5 cc2=0 vbus=0 vconn=sink polarity=0
[    1.163114] Requesting PDO 2: 12000 mV, 1500 mA
[    1.163117] PD TX, header: 0x1082
[    1.166557] sending PD message header: 1082
[    1.166576] sending PD message len: 4
[    1.169885] IRQ: 0x51, a: 0x04, b: 0x00, status0: 0x93
[    1.169905] IRQ: BC_LVL, handler pending
[    1.169914] IRQ: PD tx success
[    1.172774] PD message header: 121
[    1.172789] PD message len: 0
[    1.172794] PD TX complete, status: 0
[    1.173009] pending state change SNK_NEGOTIATE_CAPABILITIES -> HARD_RESET_SEND @ 60 ms [rev3 POWER_NEGOTIATION]
[    1.175925] IRQ: 0x51, a: 0x00, b: 0x01, status0: 0x93
[    1.175944] IRQ: BC_LVL, handler pending
[    1.175953] IRQ: PD sent good CRC
[    1.178501] PD message header: 3a3
[    1.178515] PD message len: 0
[    1.178744] PD RX, header: 0x3a3 [1]
[    1.178765] state change SNK_NEGOTIATE_CAPABILITIES -> SNK_TRANSITION_SINK [rev3 POWER_NEGOTIATION]
[    1.178778] Setting standby current 5000 mV @ 500 mA
[    1.178783] Setting voltage/current limit 5000 mV 500 mA
[    1.178807] pending state change SNK_TRANSITION_SINK -> HARD_RESET_SEND @ 500 ms [rev3 POWER_NEGOTIATION]
[    1.207499] BC_LVL handler, status0=0x93
[    1.306928] IRQ: 0x51, a: 0x00, b: 0x01, status0: 0x93
[    1.306944] IRQ: BC_LVL, handler pending
[    1.306953] IRQ: PD sent good CRC
[    1.309608] PD message header: 5a6
[    1.309624] PD message len: 0
[    1.309814] PD RX, header: 0x5a6 [1]
[    1.309836] Setting voltage/current limit 12000 mV 1500 mA
[    1.309850] state change SNK_TRANSITION_SINK -> SNK_READY [rev3 POWER_NEGOTIATION]
[    1.310039] AMS POWER_NEGOTIATION finished
[    1.312825] IRQ: 0x41, a: 0x00, b: 0x00, status0: 0x93
[    1.312842] IRQ: BC_LVL, handler pending
[    1.344121] BC_LVL handler, status0=0x93
[    1.351040] IRQ: 0x41, a: 0x00, b: 0x00, status0: 0xd1
[    1.351056] IRQ: BC_LVL, handler pending
[    1.352893] IRQ: 0x41, a: 0x00, b: 0x00, status0: 0x93
[    1.352928] IRQ: BC_LVL, handler pending
[    1.354773] IRQ: 0x41, a: 0x00, b: 0x00, status0: 0x93
[    1.354780] IRQ: BC_LVL, handler pending
[    1.371564] IRQ: 0x41, a: 0x00, b: 0x01, status0: 0x93
[    1.371580] IRQ: BC_LVL, handler pending
[    1.371590] IRQ: PD sent good CRC
[    1.375925] PD message header: 57a1
[    1.375934] PD message len: 20
[    1.376103] PD RX, header: 0x57a1 [1]
[    1.376126]  PDO 0: type 0, 5000 mV, 3000 mA [E]
[    1.376135]  PDO 1: type 0, 9000 mV, 3000 mA []
[    1.376144]  PDO 2: type 0, 12000 mV, 3000 mA []
[    1.376152]  PDO 3: type 0, 15000 mV, 3000 mA []
[    1.376160]  PDO 4: type 0, 20000 mV, 3250 mA []
[    1.376165] state change SNK_READY -> SNK_NEGOTIATE_CAPABILITIES [rev3 POWER_NEGOTIATION]
[    1.376181] Setting usb_comm capable false
[    1.376205] cc=0 cc1=5 cc2=0 vbus=0 vconn=sink polarity=0
[    1.376213] Requesting PDO 2: 12000 mV, 1500 mA
[    1.376219] PD TX, header: 0x1282
[    1.378510] IRQ: 0x51, a: 0x00, b: 0x00, status0: 0x93
[    1.378524] IRQ: BC_LVL, handler pending
[    1.381761] sending PD message header: 1282
[    1.381778] sending PD message len: 4
[    1.383964] IRQ: 0x41, a: 0x04, b: 0x00, status0: 0x93
[    1.383978] IRQ: BC_LVL, handler pending
[    1.383983] IRQ: PD tx success
[    1.385857] PD message header: 321
[    1.385865] PD message len: 0
[    1.385870] PD TX complete, status: 0
[    1.386040] pending state change SNK_NEGOTIATE_CAPABILITIES -> HARD_RESET_SEND @ 60 ms [rev3 POWER_NEGOTIATION]
[    1.388323] IRQ: 0x51, a: 0x00, b: 0x00, status0: 0x93
[    1.388333] IRQ: BC_LVL, handler pending
[    1.390659] IRQ: 0x51, a: 0x00, b: 0x01, status0: 0x93
[    1.390673] IRQ: BC_LVL, handler pending
[    1.390682] IRQ: PD sent good CRC
[    1.392728] PD message header: 9a3
[    1.392741] PD message len: 0
[    1.392937] PD RX, header: 0x9a3 [1]
[    1.392953] state change SNK_NEGOTIATE_CAPABILITIES -> SNK_TRANSITION_SINK [rev3 POWER_NEGOTIATION]
[    1.392968] pending state change SNK_TRANSITION_SINK -> HARD_RESET_SEND @ 500 ms [rev3 POWER_NEGOTIATION]
[    1.423799] BC_LVL handler, status0=0x93
[    1.521199] IRQ: 0x51, a: 0x00, b: 0x01, status0: 0x93
[    1.521202] IRQ: BC_LVL, handler pending
[    1.521204] IRQ: PD sent good CRC
[    1.522893] PD message header: ba6
[    1.522895] PD message len: 0
[    1.523030] PD RX, header: 0xba6 [1]
[    1.523042] Setting voltage/current limit 12000 mV 1500 mA
[    1.523059] state change SNK_TRANSITION_SINK -> SNK_READY [rev3 POWER_NEGOTIATION]
[    1.523071] AMS POWER_NEGOTIATION finished
[    1.524739] IRQ: 0x41, a: 0x00, b: 0x00, status0: 0x93
[    1.524740] IRQ: BC_LVL, handler pending
[    1.560286] BC_LVL handler, status0=0x93

i think you cannot come arround some soldering
and a link for nvme issues: NVMe problems on rock5

12v you just wire up to a usb-c connector and go. It has a buck that can cope with 20v but apparently ancillary components are much lower about 13v but its happy running on no pd 12v.

A few are using 12v barrel psu’s with a usb-c barrel adapter and even a usb-c breakout module from aliexpress with just vcc/gnd soldered to a molex or sata power 12v.
I had problems with PD with the v1.3v board and still not sure what happens but using a Pi5v usb-c works and after a couple of restarts plugging back in my PD magically works.

I didn’t seem to have a problem with a nvme Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM961/PM961/SM963

Maybe old/budget is the way to go as its still only entry level desktop class.

I have a similar problem: most of my power supplies did not work and I am currently using a Framework laptop PD power supply, but when I install a desktop environment or connect it to HDMI, it will stop working and only power cycles. Same with a SSD (currently booting from µSD)

I already updated the OS (rock-5b-ubuntu-focal-server-arm64-20220919-0839) after installing, but the problem remains.
What can I do, and what (EU) power supply is guaranteed to work?
it looks like it is only negotiating 9000 mV, 3000 mA
can I fix this in software?

1 Like

that is plenty of power for the rock 5b if you dont hook up power hungry devices

one possibility, but I didn’t try myself on Rock 5, is to use a PD to DC cable, and they should not be expensive (around US$2 in China); you may get a 12V or 15V + DC2USBC adapter, and that would be sufficient. I use quite a few of these PD cables (mainly 9V and 12V) for a lot of my devices (routers etc)

yes that would be helpfull but put a big red label on it so no one plugs it in to a phone or a pi

well the original power supply does not cut it. powercycling all the time. updated SPI and Loader as mentioned in the PD thread. Still cycling. When i attach it with the usbc2usbc cable to my laptop as supply it works like a charm. I would have guessed it that the original ps and cable was tested and working well …

bummer …

My SBC was posted on 20th of October from Allnet China and already arrived with the latest firmware (v1.08.111 @ 2022-09-29 … checked on UART).
The ordered 65W power supply worked for me out of the box but I also had problem with other PD sources (dock stations, Lenovo 65W PSU). Nevertheless it also worked with Mi Power Bank 3 Pro. This was with the stock Debian image.

Then I installed Armbian and it works with (almost) everything including an LG 27UD69P monitor.

BTW, the fixed 12V input also works see my other post.

Thank you, for what it’s worth Armbian negotiates PD at the highest available for the power supply

tcpm_source_psy_4_0022-i2c-4-22
Adapter: rk3x-i2c
in0:          20.00 V  (min = +20.00 V, max = +20.00 V)
curr1:         3.25 A  (max =  +3.25 A)

However booting to nVME with armbian doesn’t appear to be possible without an sd card right now.

Yeah that might be a problem from what others where saying.

I was sure someone was saying 20v could be too high as the accompany caps are 16v but lost in the forum as can not find it and maybe I was dreaming!?
My memory sucks so maybe it was something else.

[edit] found it yep my mem rockpi4

Not the case for ROCK 5B. The ROCK 5B is designed considering full PD voltages up to 20V.

1 Like

Yeah I did say in the edit, dunno why it stuck in my head as only really speed reading much of the PD woes.

Then there is still a software issue, I can’t use any PD power plug. I need to power the board with at least ~7V 2.5A in peak to get is working stable.

With this exact same board revision (v1.42 2022.08.29), my 3 PD adapters failed to power the rock 5B, negociation fails with infinite loop (Allnet 65W, Asus 65W and no name 65W), all having to move to 9V or higher for more than 15W and it is probably part of the explanation. With the Allnet PD654A charger bought fro the rock4B+, I tried both USB-A and C, but 5V is limited to 3A and this is here too low.

I did not think about it at first, but while ready these posts, I realized I had two unused smartphone chargers and the one from OnePlus Nord 2 is a simple 5V 2-6 A adapter… I crossed the fingers and tried… YEESSS!

If You have spare 5V smartphone adapter capable of 5 or 6A, not a PD compliant one, so with only 5V option, You may give it a try as it worked for me. FYI, I booted from a SanDisk Ultra 32 GB SD card.

Important: once upgraded (sudo apt-get update), most PDs are supported and boot correctly, although not all chargers while it is ok with Rock pi 4B+

You can use a Pi 5v dumb usb-c to get it to boot as there is the weird thing on new images you will hit on 1st boot it will not like some PD.
Plug in any dumb psu and boot, shutdown swap to pd and you are prob ok.
I guess its the 5.1v 3amp of the Pi PSU that has given no problem with stability for me with x2 boards tested.