I'm using a Raspberry Pi 3, with a Raspberry Pi OS (arm64) official image to communicate with a PMBus compatible device (rpb1600-48 battery charger).

I was experiencing communication problems. Sometimes the problems were constant and sometimes they were sporadic. Search the web for this sort of problem gave all sort of different reasons, none of them resolved my problem.

It was until I hookup an Oscilloscope that I realized that the real baudrate was changing. Initially I couldn't figure out why, then it came to me the fact that many arm core microcontrollers get their baudrates from a main clock line.

Checking with this program: https://github.com/Eideen/Raspberry_pi_throttle I confirmed that the real baudrate was changing exactly when the pi was adjusting the core speed.

I mainly "fixed" the problem by forcing the Pi to "performance" scaling mode:

echo performance | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

But, this leaves the PI consuming more energy than needed (this is a battery driven application: a robot).

I tried to use both kernel drivers: i2c-bcm2708 and i2c-bcm2835

Both give the same result. They don't seem to have a module parameter to deal with changing core clocks.

There is a bug report, that was closed, related to this:


Has somebody solved this issue completely (constant I2C baudrate + ondemand frequency scaler for Rpi)?


1 Answer 1


Try setting the core frequency to a constant value in config.txt:


This should still let the governor to set the CPU frequency (arm_freq) depending on the system load.

  • Wouldn't this limit the max total CPU freq? (which depends on the core_freq I think) Apr 8, 2021 at 13:24
  • 1
    Still better than running on a single fixed frequency. I would expect that setting core_freq to the maximum value is compatible with the maximum arm_freq as well. For a Pi 3 that's 400 and 1200 MHz, respectively. Apr 8, 2021 at 13:48
  • 1
    I will try this. Not the optimal solution. But better than totally fixed! Thanks! Apr 14, 2021 at 10:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.