Romi+WPILib: Which Raspberry Pi models work?

I am assembling some WPILibPi+Romi systems for our team. I have been using Raspberry Pi 3B+ boards on our systems, but have also used a couple Pi 4’s. A brief attempt to use a Pi Zero/W did not work, but I didn’t troubleshoot it very far.

So I am wondering if there is a list somewhere of supported Pi models? Or can people share their experiences trying to use different boards?

A compatibility list would be a great resource for the community.

The WPILib Romi Documentation only lists the Pi 3B+ and Pi 4 models as supported.

1 Like


I thought that statement was less definitive when I last read it, saying only the 3B+ and 4 had been tested, and that other models might work. (For example, the 3B is not that much different than the 3B+.)

I guess I’ll stick with the official recommendations unless I get desperate.

The list of “Supported” models would only constitute those Tested and Qualified by the developers.

The community could definitely still come together to make a broader list of “Compatible” models. I should have at least one of nearly every Pi Model released, whenever I get around to ordering a Romi Chassis, it may be something I spend some time figuring out. Seeing if we can get USB Wifi dongles to work on older models will definitely make that interesting.

1 Like

I am in the same boat. I have several different models, but most of them are embedded in other projects. It takes nothing but time…

Interesting, indeed. You shouldn’t have toooo much trouble getting a wifi dongle to work. I’m guessing the real constraints on compatibility are set by the amount of RAM and having the 40-pin GPIO connector.

Looking at this comparison chart, it looks like the best bets are the 2B v1.2 (but no wifi) or the 3B. The A and Zero don’t have much RAM, and not all are 64-bit.

Maybe without the vision processing the lower models might work.

If we are starting out purchasing all hardware brand new, what would you recommend for RAM, if we wanted to do vision and things with it down the road?

1 Like

In terms of platform compatibility with the Romi, any of the 40-pin GPIO models should work (but we’ve only tested the 3B and 4).

Integrated WiFi is a very nice feature to have for the Romi; the web interface for WiFi settings we know works with the 3B and 4 but we’ve not tested it with a USB dongle.

One downside of the 4 is it really likes to have a heatsink, particularly if you’re doing image processing, and there’s minimal clearance on the Romi to fit one. The 3B is also nice because PhotonVision supports GPU acceleration on it if that’s something you want to explore (so PhotonVision overall performance is actually better on a 3B than a 4). If you’re home-rolling vision processing (which probably means most operations on the CPU), you might want to go for the 4 instead, as it definitely has a beefier CPU.

You aren’t going to need much RAM for Romi or vision coprocessor use. 1-2 GB is fine. If you want to future proof it for other use cases (e.g. a desktop replacement) you might want more.

My recommendation today: get a 3B+, or if you’re future proofing for your own vision processing, get a 4 with 2 GB.


So the 3B has a GPU and the 4 does not?

They both have a GPU, but PhotonVision can’t use the GPU on the 4 for some reason (which could eventually be fixed, I presume).

A couple of links which may help here:

Feature Request: Raspberry Pi 4 Support

[…] designed to connect to the Model B+ and newer versions of the Raspberry Pi with 40-pin GPIO headers

For context, here’s the reason why we don’t support the Pi 4 (and its discord link). (TLDR, Pi 3’s supports the special OpenGL parameters we need, while the Pi 4 does not (yet)


There’s a hack I figured out for the Pi 4 that makes copying processed textures off faster by mapping /dev/mem (the Pi shares memory for the GPU and the CPU, and if you’re clever you can get a physical address and make the kernel reach into the GPU memory.) Unfortunately, a big part of the optimization is getting the image from the camera to OpenGL without doing any copying off the GPU, and this just isn’t supported at all on the Pi 4. Fixing this requires modifications to the VideoCore firmware and the userspace driver, but the VideoCore firmware is closed source and Broadcom has mostly exited the mobile SoC space which makes me think that getting support for this on the Pi 4 is unlikely.


I am told by one of our team members that the Raspberry Pi 3B (no plus) is also working with the standard WPILibPi image.

1 Like