Raspberry Pi 4 Desktop. Image Credit: Gareth Halfacree
The Raspberry Pi 4 is an undeniably powerful machine, but, as our review shows, power comes at a cost. The Pi 4 generates considerably more heat than its predecessors, with sustained load bringing it to its thermal throttle point - the temperature at which the system-on-chip (SoC) reduces its performance to protect itself - in only a handful of minutes.
It’s an issue of which the Raspberry Pi Foundation is well aware, and there’s a partial solution just over the horizon: a firmware update for the VLI VL805 USB controller.
Update: You Can Try the Firmware Yourself
The Raspberry Pi Foundation has publicly released the alpha VL805 firmware for general testing, along with a tool capable of querying the current firmware version, saving the existing firmware, and flashing the new firmware. Those eager to try it out, however, should be warned that some users have reported serious performance problems with selected USB 3.0 devices when using the updated firmware, though we have been unable to replicate the issue - which is under investigation by the Foundation's engineers - on our own test bench.
Earlier models of Raspberry Pi relied on a combined USB hub and Ethernet controller, which connected back to the SoC via a single USB 2.0 lane - the cause of the traditional bottleneck which has been hampering both network and storage performance since the launch of the original Model B.
The Raspberry Pi 4 has a dedicated Ethernet controller, and the USB ports are handled by a VLI USB 3.0 controller dubbed the VL805. This controller has significantly more bandwidth than its predecessors, using a PCI Express lane to communicate with the SoC. It’s also the first time the part has been used in a Raspberry Pi board, which means there’s plenty of scope for improvement as the Raspberry Pi Foundation’s engineers learn how to get the most out of it.
A firmware update, currently in alpha testing and due for public release as soon as it has been proven it’s not going to crash anything, offers a glimpse at the fruit of the engineers’ labour: tweaks which drop the power draw of the VL805 controller considerably, making the whole Raspberry Pi 4 run cooler.
The Race to Throttle
To test the firmware out, a Raspberry Pi 4 was put on the test bench in two configurations: first running the launch-day firmware as supplied on all retail models and the second running the alpha-test release of the updated VL805 firmware. Both configurations were booted with a single HDMI-connected display, wireless keyboard and mouse dongle in the USB port, and a wired Ethernet connection, to reflect the most common usage, and set running a workload which combined sustained CPU and GPU activity.
As the workload ran, the temperature reported by thermal sensors embedded into the BCM2711B0 SoC’s VideoCore VI graphics processor was logged once per second along with the clock speed of the Arm processing cores. After ten minutes, the two runs were graphed and compared to see whether the new firmware can really have an effect on the operating temperature of the Raspberry Pi 4 under load. For both runs, the ambient temperature was 24°C; the Raspberry Pi 4 was allowed to cool to ambient temperature between runs.
Raspberry Pi 4 Thermal Throttling. Image Credit: Gareth Halfacree
The graph shows, as expected, the BCM2711B0’s temperature beginning to rise rapidly as the workload kicks off. The new firmware begins with a two-degree head start, running at an idle temperature of 48°C to the launch firmware’s 50°C - an early sign it may deliver on its promise. By the one-minute mark, both are sitting at around 70°C; by two minutes, the two-degree differential is back with the updated firmware at 75°C to the launch firmware’s 77°C.
The launch firmware run is the first to record a throttle operation, dropping to 1 GHz from the stock 1.5 GHz at the three minute 43 second mark - though viewing the HDMI output reveals earlier periods of throttling, too brief to be caught by the once-per-second logging frequency, thanks to the tell-tale thermometer symbol which appears in the top-right of the display.
The updated firmware, by contrast, doesn’t begin to throttle until five minutes and 21 seconds into the test - approaching a full two minutes later than the launch-day firmware.
It’s not just about how long it takes the Raspberry Pi 4 to reach its throttle point, either, but how long it has to stay there. In total, the launch-day firmware dipped below 1.5GHz for 86 of the 600 data points; the updated firmware for only 50. Even after the throttle point had been reached on both runs, the updated firmware won out with 50 recorded dips to 65.
The firmware update doesn't seem to have an impact on performance: testing the throughput to an external SSD using the fio benchmark showed no difference between the update and the launch versions. Workloads that had previously triggered thermal throttling, meanwhile, can be expected to finish marginally quicker under the new firmware.
A Thermal Analysis
What’s actually happening on the board between these two firmware release? Looking at power draw throughout the run, it’s clear that the Raspberry Pi 4 is using less electricity with the updated firmware installed: with the launch firmware, the Pi 4 draws 3.8W at idle and 7.9W at load, measured as before with a single HDMI display, wireless keyboard and mouse dongle, and a wired Ethernet connection; with the new firmware, the measurement drops to 3.4W at idle and 7.6W at load.
To see what that does to the board, the Raspberry Pi 4 is placed under a thermal camera while running each firmware revision. The board, with no peripherals connected, is allowed to sit at idle for five minutes, stabilising the temperature, then switched off and allowed to return to ambient. As with the thermal throttling test, the environmental temperature was 24°C.
Thermal Image of Raspberry Pi 4 with Launch Firmware. Image Credit: Gareth Halfacree
Running the launch-day firmware heat can be seen spreading throughout the board, but is particularly concentrated on the SoC, the USB controller at middle-right, and the power-management integrated circuit (PMIC) and supporting hardware at bottom-left. From this, it’s clear the USB controller contributes a surprising amount of heat, even with no USB devices connected. At 46.2°C, it’s the second-hottest device on the board; the SoC is the hottest at 48.2°C, while the PMIC cluster measures 46°C.
Raspberry Pi 4 with new Firmware. Image Credit: Gareth Halfacree
Simply switching to the updated firmware makes a dramatic difference. The biggest change, unsurprisingly, can be seen in the USB controller itself which drops to 41°C - a whopping 5.2°C difference. The SoC benefits, too, idling at 45.6°C, while the PMIC cluster runs cooler too at 44.2°C thanks to the reduced power draw.
These temperature drops affect the entire board: the thermal image shows the entire PCB is cooler, and even the USB and Ethernet ports - which pick up some heat from their mechanical and electrical connections to the PCB - are at a lower temperature.
The new firmware alone isn’t enough to prevent a Raspberry Pi 4 from throttling under sustained load - only additional cooling, either through aftermarket heatsinks and fans or via the official Raspberry Pi Power-over-Ethernet (PoE) HAT accessory, can guarantee that.
It does, however, make a distinct difference, in particular to how long a Raspberry Pi 4 can operate before hitting the thermal throttle point. It also provides a glimpse at one of the biggest selling points of the Raspberry Pi family over its multitudinous rivals: the Foundation keeps supporting and improving its products long after they’re launched into the market, releasing firmware and operating system updates which add new features and improve existing ones with impressive regularity.
The USB controller update is available now in beta and set is to be released as a production-level firmware in the near future, though the Foundation has not indicated when its testing will be considered complete. It has already confirmed additional features it has planned for the firmware updates to follow: PXE boot to allow the Raspberry Pi 4 to boot from a network server without a microSD card inserted, then USB boot to allow it to boot from an external storage device - again, without the microSD currently required to host the /boot partition.