Skip to content

Instantly share code, notes, and snippets.

@camerahacks
Last active June 9, 2023 00:17
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save camerahacks/df4d4cd6b40ecc8a6a894d14a2386650 to your computer and use it in GitHub Desktop.
Save camerahacks/df4d4cd6b40ecc8a6a894d14a2386650 to your computer and use it in GitHub Desktop.
Rock CM3 Setup

Radxa Rock CM3 on a CM4 carrier board

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.

ko-fi

First Boot Config

CM4 Blob

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

PCIe

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

USB

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

1st Boot Config Complete

Reboot the system so the changes take effect

sudo reboot

Home Assistant/ Docker

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)

Home Assistant Supervised on Radxa CM3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment