diff --git a/hardware/raspberrypi/frequency-management.md b/hardware/raspberrypi/frequency-management.md index 4ae9d942fd..399c18ce81 100644 --- a/hardware/raspberrypi/frequency-management.md +++ b/hardware/raspberrypi/frequency-management.md @@ -8,14 +8,27 @@ For Raspberry Pi 3 Model B+, the PCB technology has been changed to provide bett The Raspberry Pi 4 Model B continues with the same PCB technology as the Raspberry Pi 3B+ to help dissipate excess heat. There is currently no soft limit defined. -### DVFS on the Raspberry Pi 4B +### DVFS on the Raspberry Pi 4 (4B, 400 and CM4) -On Raspberry Pi 4 Model B, firmware from late November 2019 onwards implements Dynamic Voltage and Frequency Scaling. This technique (outlined on Wikipedia [here](https://en.wikipedia.org/wiki/Dynamic_voltage_scaling)) allows Raspberry Pi 4B to run at lower temperatures whilst still providing the same performance. +Raspberry Pi 4 devices implement Dynamic Voltage and Frequency Scaling (DVFS). This technique (outlined on Wikipedia [here](https://en.wikipedia.org/wiki/Dynamic_voltage_scaling)) allows Raspberry Pi 4 devices to run at lower temperatures whilst still providing the same performance. Various clocks (e.g. ARM, Core, V3D, ISP, H264, HEVC) inside the SoC are monitored by the firmware, and whenever they are not running at full speed, the voltage supplied to the particular part of the chip driven by the clock is reduced relative to the reduction from full speed. In effect, only enough voltage is supplied to keep the block running correctly at the specific speed at which it is running. This can result in significant reductions in power used by the SoC, and therefore in the overall heat being produced. +Due to possible system stability problems involved with running an undervoltage, especially when using undervoltaged fixed clock peripherals (eg. PCIe), two DVFS modes are available and can be configured in `/boot/config.txt` with the below properties. GUI desktop systems should use `dvfs=2`, headless systems may benefit from `dvfs=1` provided peripheral use is managed. + +| property=value | Description | +|----------------|------------------------------| +| dvfs=1 | allow under-voltage | +| dvfs=2 | no under-voltage (default) | + In addition, a more stepped CPU governor is also used to produce finer-grained control of ARM core frequencies, which means the DVFS is more effective. The steps are now 1500MHz, 1000MHz, 750MHz, and 600MHz. These steps can also help when the SoC is being throttled, and mean that throttling all the way back to 600MHz is much less likely, giving an overall increase in fully loaded performance. +The default CPU governor is `ondemand`, the governor can be manually changed with the `cpufreq-set` command (from the `cpufrequtils` package) to reduce idle power consumption: +``` +sudo apt install cpufrequtils +sudo cpufreq-set -g powersave +``` + ### Heatsinks Whilst heatsinks are not necessary to prevent overheating damage to the SoC (the thermal throttling mechanism handles that), a heatsink or small fan will help if you wish to reduce the amount of thermal throttling that takes place. Depending on the exact circumstances, mounting the Pi vertically can also help with heat dissipation, as doing so can improve air flow.