Powering ROCK 5B?

While testing with the dev sample I tried 3 different USB-C chargers. Asking the PMIC using sensors tcpm_source_psy_4_0022-i2c-4-22 I got the following:

With a ‘dumb’ 15W RPi USB-C power brick (not USB PD compliant) obviously we’re ending up with 15W:

in0:           5.00 V  (min =  +5.00 V, max =  +5.00 V)
curr1:         3.00 A  (max =  +3.00 A)

With some 24W USB-C charger 18W get negotiated:

in0:          12.00 V  (min = +12.00 V, max = +12.00 V)
curr1:         1.50 A  (max =  +1.50 A)

And with an Apple ‘96W USB-C Power Adapter’ we’re at 27W:

in0:           9.00 V  (min =  +9.00 V, max =  +9.00 V)
curr1:         3.00 A  (max =  +3.00 A)

Is there already an advice how we can convince PMIC or USB PD chip to negotiate different settings?

And any chance to power the board differently e.g. 5V via GPIO header?

PD config is defined in device tree: https://github.com/radxa/kernel/blob/stable-5.10-rock5/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts#L679.
You can modify it. I’ve changed the 1.5A current for 12V to 3A.

Ok, so we’re talking about an I2C attached FUSB302 that should theoretically allow to dynamically adjust parameters.

Dealing with dtc ends up with rather inconvenient data:

sink-pdos = <0x401912c 0x402d12c 0x403c096>;

Are you able to provide a linux-dtb-legacy-rk3588-radxa-rock5b package containing the following adjustment?

<PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)
 PDO_FIXED(9000, 3000, PDO_FIXED_USB_COMM)
 PDO_FIXED(12000, 3000, PDO_FIXED_USB_COMM)
 PDO_FIXED(15000, 3000, PDO_FIXED_USB_COMM)
 PDO_FIXED(20000, 1500, PDO_FIXED_USB_COMM)>;

That would allow us to quickly check for maximum negotiated voltages in preparation to search for ways to dynamically adjust negotiation…

Hello, I’ve compiled this version of dtb:

sink-pdos =
               <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)
                 PDO_FIXED(9000, 3000, PDO_FIXED_USB_COMM)
                 PDO_FIXED(12000, 3000, PDO_FIXED_USB_COMM)
                 PDO_FIXED(15000, 3000, PDO_FIXED_USB_COMM)
                 PDO_FIXED(20000, 2250, PDO_FIXED_USB_COMM)>;

You can use this devicetree overlay:

/dts-v1/;
/plugin/;
/ {
        fragment@0 {
                target = <&i2c4>;
                __overlay__ {
                        usbc0: fusb302@22 {
                                usb_con: connector {
                                        sink-pdos = <0x401912c 0x402d12c 0x403c12c 0x404b12c 0x40640e1>;
                                };
                        };
                };
        };
};

Use command sudo armbian-add-overlay rk3588-pd-definations.dts to install this overlay.
I can get 20V2.25A power now:

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

And any chance to power the board differently e.g. 5V via GPIO header?

Yes, powering from 5V GPIO is possible on 5B.

I just created a wiki page to gather different power supply support status:

https://wiki.radxa.com/Rock5/5b/power_supply

1 Like

Thank you! My results are mixed. My cheap 24W charger is obviously 15V capable since it negotiates now this (24W instead of 18W):

in0:          15.00 V  (min = +15.00 V, max = +15.00 V)
curr1:         1.60 A  (max =  +1.60 A)

But both my Apple USB-C chargers show problems now (boot loop). Even after restoring rk3588-rock-5b.dtb and removing the overlay. Need to further investigate…

Great, so I need to grab my old 5V PSUs with Dupont wiring to check out USB-C capabilities…