1

This is a bit of a follow up to Why is my Pi running at 700MHz all the time? and Overclocking - CPU Frequency Measurement Accuracy: vcgencmd vs cpuinfo_cur_freq

I have a Raspberry Pi B3+ (at least that's as what I bought it).

I'm trying to figure out why my CPU seems never to run faster than 600Mhz:

vcgencmd measure_clock arm
frequency(45)=600000000

I enabled the performance governor:

echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Then I ran a stress test:

stress -c 4 -t 60

While that is running, I still get 600Mhz from vcgencmd measure_clock arm.

I did no special config or overclocking (yet):

grep freq /boot/config.txt 
#arm_freq=800

The default seems to be fine:

vcgencmd get_config arm_freq
arm_freq=1400

The Pi should be able to run at up to 1.4Ghz:

cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
1400000

So what's going on here? What am I missing? Is my stress test wrong?

Andreas Gohr
  • 163
  • 2
  • 8
  • stress test looks OK - my pi3 goes to 1.2Ghz immediately using exactly that command line (well, almost exactly, I use stress-ng instead of stress) - you seem suspicious of what you bought - what is the output of grep Revision /proc/cpuinfo – Jaromanda X Oct 10 '18 at 22:11
  • It shows 4 cores identifying as ARMv7 Processor rev 4 (v7l), Hardware BCM2835 Revision a020d3 – Andreas Gohr Oct 11 '18 at 22:06
  • The command I asked you to run would've only shown the Revision :p I just wanted to see if you really had a 3B+ because you seemed unsure in your question. And yes, that Revision suggests you have a Raspberry PI 3B+ – Jaromanda X Oct 11 '18 at 22:12
  • Ah yeah, I somehow only read the /proc/cpuinfo part ;-) Anyway any idea what's going on? – Andreas Gohr Oct 11 '18 at 22:35

2 Answers2

2

It might be a problem due to power supply. Provide a 2.5A-3A power supply. When power supply is not proper, the pi gets throttled for proper working. You can check many status using this Python code:

import subprocess

GET_THROTTLED_CMD = 'vcgencmd get_throttled'
MESSAGES = {
    0: 'Under-voltage!',
    1: 'ARM frequency capped!',
    2: 'Currently throttled!',
    16: 'Under-voltage has occurred since last reboot.',
    17: 'Throttling has occurred since last reboot.',
    18: 'ARM frequency capped has occurred since last reboot.'
}

print("Checking for throttling issues since last reboot...")

throttled_output = subprocess.check_output(GET_THROTTLED_CMD, shell=True)
throttled_output = throttled_output.decode("utf-8")
print(throttled_output)
throttled_binary = bin(int(throttled_output.split('=')[1], 0))
warnings = 0
for position, message in MESSAGES.items():
    # Check for the binary digits to be "on" for each warning message
    if len(throttled_binary) > position and throttled_binary[0 - position - 1] == '1':
        print(message)
        warnings += 1

if warnings == 0:
    print("All is well")
else:
    print("\nFound these %d issues!"%warnings)
theashwanisingla
  • 267
  • 1
  • 11
1

It turns out the problem was the power supply. I was only rated for 1.5 amps and apparently that was not enough and the Pi throttled it self. A 3A supply fixed the problem.

Since I'm running this system headless and in a case, I neither saw the warnings during boot nor the power LED flashing.

If someone knows how to read the voltage warning in python, please let me know.

Andreas Gohr
  • 163
  • 2
  • 8