Using BlueOS on a Compute Module 4 #2822
Unanswered
MarkSkinner92
asked this question in
Show and tell
Replies: 1 comment
-
@joaoantoniocardoso some interesting info about the Pi camera here. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Here is my journey of configuring BlueOS for a Compute Module 4.
I started with the standard BlueOS image, which I downloaded from Blue Robotics on April 16, 2024. I flashed it onto the Compute Module 4 using the IO board and rpiboot.
Booting
After flashing, it was working fine on my Compute Module 4 (except the PI camera was not detected). When we tried it with another Compute Module 4, it wouldn’t even boot! We plugged it into a monitor and found that our /boot/fixup4x.dat and /boot/start4x.bin were not compatible with the hardware. We had to update it, so I pulled the newest ones I could find off of github. The new ones were too new, and wouldn’t let us use the legacy camera stack, so I found a pair from Nov 1, 2021. These ones worked! fixup4x.dat and start4x.bin need to be swapped for the ones found in this github (from Nov 1, 2021): https://github.com/raspberrypi/firmware/tree/2787f23802f907f147ce3e1619fc2ee0d6b975b8/boot
It turns out that some compute module 4 revisions can’t boot the stock BlueOS image, while others can. Swapping out those two files above will fix that.
Cameras
To get the cameras working, I went to https://datasheets.raspberrypi.com/ and got downloaded the “cmio/dt-blob-dualcam.bin” file. I renamed it to dt-blob.bin and moved it into /boot. This configured the i2c and GPIO for cam0 and cam1, and allowed me to use those cam ports on the Compute Module. My setup was using cam0, so I needed a jumper attached to J6.
One way to check if the PI cameras will work is to use:
sudo vcgencmd get_camera
On the Compute Module 4, if it gives supported=2 detected=#, then you’re good to go.
If it gives supported=0 detected=0, then something is likely wrong with the device tree (using that dt-blob.bin solved this problem for me)
If you see supported=# detected=#, libcamera interfaces=# then something else is wrong, and your OS is attempting to use the new (unsupported) libcamera stack instead of the legacy camera stack. Changing start4x.elf and fixup4x.dat to and older version (but not too old) solved this for me.
Having minimal Raspberry PI OS experience, this took forever to figure out. Hopefully it will be useful to someone!
Beta Was this translation helpful? Give feedback.
All reactions