CircuitPython, Adafruit’s enhanced fork of the MicroPython language, runs on nearly 200 different microcontroller boards, including the Raspberry Pi Pico, and it could soon become an operating system for regular (non-Pico) Raspberry Pis. While appearing as a guest on the Tom’s Hardware Pi Cast this week, CircuitPython Programming Lead Scott Shawcroft told us that he wants to create a version of the language that single-board computers like the Raspberry Pi Zero, Pi 4 and Pi 400 can boot straight into, without the overhead of a full operating system.
“I’d like to get CircuitPython running on the Raspberry Pi alone, without Linux underneath it,” Shawcroft said in response to our questions about whether he plans to add Pico VGA output support to the languages. "So, when I think of 'I want to interface with a TV' sorts of tasks, I want to actually go the route of getting CircuitPython running the A series chips on the regular Raspberry Pis instead of putting my time into the VGA sorts of things on the Pico, because that’s super limited."
Recently, a number of Raspberry Pi Pico projects have used the chip’s ability to output to VGA. Ben Stragnell created a Pico-powered NES emulator and, on another recent episode of the Pi Cast, Raspberry Pi Pico SDK author Graham Sanderson showed off a BBC Micro emulator he had created for the microcontroller. However, to Shawcroft’s point, the Pico and its 133 MHz RP2040 processor will never provide the kind of high-res, high refresh rate video out that a regular Pi can.
"If we can get CircuitPython running on a CM4, a Pi 4 or a Pi 400, that means that you can have that nostalgia programming experience on a 4K display or two 4K displays and, if we’re running native on the devices, we can still have that experience of like plug it in and it shows up as a drive, depending on how its connected," Shawcroft said.
Aside from just allowing better video out than a Pico can handle, bringing CircuitPython to Raspberry Pi as an OS would have other advantages. It would likely allow a regular Raspberry Pi to act more like a microcontroller, booting and running its default program almost instantly and turning off without the need for a safe-shutdown process.
We got more details about this idea from Shawcroft after the show was over and he noted that, while he thinks that bootable CircuitPython for Raspberry Pi will happen, it’s just an idea at this point with no scheduled rollout.
A more immediate priority, which Shawcroft is starting to work on now, is creating the framework for users to edit CircuitPython over Bluetooth LE from mobile devices. So anyone who only has access to a phone or tablet will be able to edit code on a Bluetooth-enabled microcontroller using a mobile app or perhaps a browser. This will allow children, who may not have PCs, to get in on the programming experience.
Whenever bootable CircuitPython comes to Raspberry Pi, its workflow could take one of several forms. First, if the Pi supports USB host mode as Pi 4 and Zero do, you would be able to connect it to a PC and have it appear as a storage device you can write files to, much in the way you write files to CircuitPython-powered microcontrollers.
However, it’s also possible that the Pi could boot to a command interpreter that looks and acts similar to the way people programmed in BASIC on a Commodore 64. Shawcroft has actually played around with this mode of Python input and placed a demo of it, along with an animation of the demo in action, on his github. You also might be able to program the Pi via Bluetooth LE.
Even though there’s no bootable version yet, Raspberry Pi users do have a way to use CircuitPython right now. The Adafruit Blinka library for Python, which you can install via pip, allows you to add CircuitPython code to regular Python programs.
While Shawcroft may not have time to work on bootable CircuitPython for a while, he noted that other developers are free and encouraged to take up the project.
“If folks like this idea, then I'd encourage them to reach out to help make it happen,” he said. “We're always looking for more CircuitPython contributors. My highest priority is always to support others working on CircuitPython so I'm happy to give guidance and get things merged into CircuitPython proper. I'd love to see CircuitPython supported directly on Pis and other single board computers.”