How to run Buster Image on RevPi Core (CM1)
Background
As the RevPi Core (with a Compute Module 1) has limited performance, it is no longer the first choice for most use cases. Therefore, the latest Buster images only provide unofficial support for it. To assist users who still continue to use it, we provide a workaround to make Buster images run on the RevPi Core.
Reason
The reason preventing Buster images from running on the RevPi Core is the USB driver. From RevPi Buster image 05/2022, we started to use DWC2 instead of DWC_OTG as the USB driver, as it runs more reliably with concurrent realtime applications such as piControl.
Unfortunately DWC2 is missing a performance optimization called FIQ support. The resulting increased CPU load is negligible on RevPi products with a Compute Module 3 and 4S, but it does make a significant difference on the RevPi Core with a Compute Module 1: Without FIQ support, the Compute Module 1 becomes so slow that booting fails with a timeout.
We recommend switching back to DWC_OTG on the RevPi Core to avoid the performance issue and fix the resulting boot timeouts.
Workaround
The USB driver is specified in the device tree overlay /boot/overlays/revpi-core.dtbo. As the dtbo file is in binary format, changing it is not trivial. Instead, we recommend modifying /boot/config.txt to override the USB driver: Add the line dtoverlay=dwc-otg
below the line dtoverlay=revpi-core
. The order of the lines is important to override the choice of USB driver made in the preceding revpi-core overlay.
Step-by-Step Guide
flash the RevPi Core 1 with latest Buster image
on first login, perform the factory reset as before
add configuration of dwc-otg to /boot/config.txt with command:
echo -e "\r\ndtoverlay=dwc-otg" | sudo tee -a /boot/config.txt
reboot the device