Skip to content
View in the app

A better way to browse. Learn more.

Armbian Community Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

FriendlyELEC CM3588 Plus Nas + Armbian bookworm vendor OMV image = all 408 MHz CPU speeds

Featured Replies

Hi all,

I’m working with an RK3588-based board and running into a frequency scaling issue. All cores (cpu0–7) are stuck at 408 MHz, despite available OPPs going much higher (up to 2.35 GHz on the big cores). Attempts to raise frequencies via scaling_setspeed or userspace governor have no effect.

 

The image I'm using is:

https://www.armbian.com/nanopc-cm3588-nas/
(https://dl.armbian.com/cm3588-nas/Bookworm_vendor_minimal-omv
)
 

Device tree file is:
fdtfile=rockchip/rk3588-friendlyelec-cm3588-nas.dtb
 

 

# for cpu in /sys/devices/system/cpu/cpu[0-9]*; do
    echo "== $(basename $cpu) =="
    cat $cpu/cpufreq/scaling_available_frequencies
    cat $cpu/cpufreq/cpuinfo_max_freq
done
== cpu0 ==
408000 600000 816000 1008000 1200000 1416000 1608000 1800000 
1800000
== cpu1 ==
408000 600000 816000 1008000 1200000 1416000 1608000 1800000 
1800000
== cpu2 ==
408000 600000 816000 1008000 1200000 1416000 1608000 1800000 
1800000
== cpu3 ==
408000 600000 816000 1008000 1200000 1416000 1608000 1800000 
1800000
== cpu4 ==
408000 600000 816000 1008000 1200000 1416000 1608000 1800000 2016000 2208000 2352000 
2352000
== cpu5 ==
408000 600000 816000 1008000 1200000 1416000 1608000 1800000 2016000 2208000 2352000 
2352000
== cpu6 ==
408000 600000 816000 1008000 1200000 1416000 1608000 1800000 2016000 2208000 2352000 
2352000
== cpu7 ==
408000 600000 816000 1008000 1200000 1416000 1608000 1800000 2016000 2208000 2352000 
2352000
root@cm3588-nas:/#

 

 

Getting DVFS/EM kernel message about inefficient OPP:

[   14.038585] cpu cpu0: EM: OPP:816000 is inefficient
[   14.048575] cpu cpu4: EM: OPP:1008000 is inefficient
[   14.048584] cpu cpu4: EM: OPP:816000 is inefficient
[   14.060709] cpu cpu6: EM: OPP:1008000 is inefficient
[   14.060718] cpu cpu6: EM: OPP:816000 is inefficient


 

 

PVT readings

[   14.002363] cpu cpu0: pvtm=1425
[   14.002523] cpu cpu0: pvtm-volt-sel=1
[   14.011254] cpu cpu4: pvtm=1645
[   14.015591] cpu cpu4: pvtm-volt-sel=3
[   14.025824] cpu cpu6: pvtm=1665
[   14.030065] cpu cpu6: pvtm-volt-sel=3

 

Attempting to raise speed:

# for cpu in /sys/devices/system/cpu/cpu[0-9]*; do echo 1800000 | sudo tee $cpu/cpufreq/scaling_setspeed; cat $cpu/cpufreq/scaling_cur_freq; done
1800000
408000
1800000
408000
1800000
408000
1800000
408000
1800000
408000
1800000
408000
1800000
408000
1800000
408000


 

 

 

 

  • Why might all cores be capped at 408 MHz despite available OPPs and voltage steps?


     

 

Solved by Potatoman69420

  • Solution

I am observing the same thing. This can be easily fixed by setting the max frequency manually; https://www.incertum.net/post/2024/armbian-cm3588/

 

I checked `cpufreq-info | grep "available frequency steps"`

And made this to set the correct speed for all the cores on the RK3588 NAS KIT
 

# Little cluster (A55 cores: cpu0–cpu3)
for c in 0 1 2 3; do
    cpufreq-set -c $c -g schedutil -u 1.80GHz
done

# Big cluster (A76 cores: cpu4–cpu7)
for c in 4 5 6 7; do
    cpufreq-set -c $c -g schedutil -u 2.40GHz
done


Now running `watch -n1 "cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq"` together with `for i in $(seq 1 $(nproc)); do yes > /dev/null & done` shows the frequencies going up correctly, and down too when I `killall yes`

Edited by Potatoman69420
added instruction

  • Author

You're right - this works perfectly. I'm not typically a Debian user, so I'm not sure where this should be configured in a proper way. But at least I can unleash the CPUs now. Thank you for the very helpful reply.

  • Author

I looked a little closer and the included cpufrequtil init script is totally unaware of SoC clustering. If you put in a max value for the A76, it won't work for the A55. So I threw the problem into AI and asked for a flexible SoC solution (I'm of course simplifying it). This is what it gave me. Lightly tested: per cluster governors, per cluster min/max speed, ability to specify "min" and "max" rather than numeric values.
 

cpufrequtils-default -> /etc/default/cpufrequtils
cpufrequtils -> /etc/init.d/cpufrequtil

YMMV.

cpufrequtils cpufrequtils-default

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.