Out of the box, the Radxa Rock CM3 does not work with boards designed for the Raspberry Pi CM4. Here are the steps to get the most functionlity working on a CM4 board.
Before we get started, if you appreciate the work I do with rpilocator.com, hwlocator.com, and dphacks.com, consider buying me a coffee.
First step is to replace the cm3-io .dtb file with a CM4 .dtb file. If you don't perform this step, the board will still boot but it will have limited capabilities. If you have already flashed an image to the Rock CM3 on a CM4-based board, you can leave it plugged in and follow the steps blow.
I have not found a way to mount the boot drive before the first boot so you have to do this after you boot up the board for the first time. You can do it via ssh or UART.
cd /boot/dtbs/$(uname -r)/rockchip/
sudo mv rk3566-radxa-cm3-io.dtb rk3566-radxa-cm3-io.dtb.bak
sudo cp rk3566-radxa-cm3-rpi-cm4-io.dtb rk3566-radxa-cm3-io.dtb
Again, out of the box, the Rock CM3 doesn't have PCIe enabled. So, edit /boot/config.txt
to include the device tree overlay for PCIe
sudo nano /boot/confix.txt
And add the line below
dtoverlay=radxa-cm3-io-pcie2x1
After making changes to config.txt
you have to update the device tree infomartion by running the script below.
sudo update_extlinux.sh
Rock CM3 assumes usb_otg (device mode) by default. This means it will not work as a USB hub so you can plug external USB devices. I believe this is due to difference in how the CM4 carrier boards have the USB_OTG pin wired but I don't have a Rock CM3 board to confirm the differences.
Make the change blow to rc.local
so this system variable gets applied every time at boot.
sudo nano /etc/rc.local
Add the line below before exit 0
echo host > /sys/devices/platform/fe8a0000.usb2-phy/otg_mode
Reboot the system so the changes take effect
sudo reboot
Before installing Home Assistant, you need to make a few changes to get Docker running. Docker is needed even if you are rumming Home Assistant Supervised.
sudo apt install iptables arptables ebtables
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
Edit /boot/config.txt
to add the cgroup directive below
cmdline: systemd.unified_cgroup_hierarchy=0
After making changes to config.txt
you have to update the device tree information by running the script below.
sudo update_extlinux.sh
You should be able to follow the instructions for Home Assistante Supervised through the link below:
https://www.home-assistant.io/installation/linux that directs you to https://github.com/home-assistant/supervised-installer
On the very last step you have to choose the raspberrypi4-64
option when installing the Home Assistenat Supervised package (last step from the links above)