When you use a Raspberry Pi, you’re probably using Raspberry Pi OS or some other Linux-based operating system. Whether it is Kodi, or a retro gaming suite, there is an underlying Linux OS.
Emulation is particularly sneaky here. The emulators need an operating system to run on and almost all use a stripped down version of Raspberry Pi OS or an earlier Raspbian build.
But what if it was possible to run emulators on the Raspberry Pi without an operating system. Well, it is. Here’s everything you need to know to get started with bare metal emulation on the Raspberry Pi.
What Is an Emulator?
The internet is full of explanation as to what an emulator is (and what it is not). At its simplest, an emulator is software that runs programs written for one platform on another. So, for example, you might want to run Android software on Windows. This requires an Android emulator.
Many different emulators are available. The majority of computers, consoles, and arcade systems can be emulated on computers including the Raspberry Pi. These are available in systems like RetroPie, Recalbox, and Lakka. What these tools have in common is that the emulators all run on Linux.
It’s easy to confuse emulation with virtual machines, but these are in fact quite different, although the end result may appear identical to the untrained eye.
Like a standard emulator, a bare metal emulator runs programs intended for one system on another. The difference is that there is no underlying operating system; the emulator runs on the “bare metal” of the computer. In this case, that computer would be a Raspberry Pi.
Usually when you use an emulator on a Raspberry Pi it is sharing hardware resources with Raspberry Pi OS (or a retro gaming suite). This means that there is an operating system, it’s built in tools, any other running software, the emulator, and the emulated software all vying for processor, RAM, storage, even ports.
This can result in latency, slowing emulation down.
With a bare metal emulator, latency is minimal as there is no operating system.
Several bare metal emulators have been developed for the Raspberry Pi. These are largely from the 8-bit computing era.
Bare metal emulators should be downloaded and copied to a microSD card. Specific instructions for each tool can be found in the corresponding download links. Note that in most cases the Raspberry Pi can be simply powered down while using a bare metal emulator. Also, hot swapping USB devices is usually not supported, so connect devices before powering up.
1. ZX Baremulator (ZX Spectrum Emulator)
Launched in 1982, the Sinclair ZX Spectrum was a key driver of the nascent home computer and video game industry in Europe for 10 years. You can of course emulate it on a Raspberry Pi, and enjoy bare metal emulation with the ZX Baremulator.
This software provides a couple of useful additional screens. One is a keyboard reference (the ZX Spectrum had many commands for each key) and the other lets you browse and select tape images to load.
Learn more in our guide to setting up ZX Baremulator on a Raspberry Pi.
Download: ZX Baremulator (Free)
2. Faux86 (8086 Classic PC Emulator)
This is an open source bare metal emulator designed to run CGA / EGA / VGA display classic PCs. It will emulate 8086 and 80186 instruction sets, and has PC speaker, Adlib, and Soundblaster emulation.
In short, Faux86 should run anything written for an IBM-compatible PC up to the mid 1990s. If it runs on MS-DOS, it should run on this.
Note that the Faux86 bare metal emulator has no support for large storage. The developer recommends: “use a small capacity SD card and flash the image as a 32MB card.”
Download: Faux86 (Free)
3. Dragon-32-Rpi-Bare-Metal (Dragon 32 Emulator)
Like the Sinclair ZX Spectrum, the Dragon 32 was a UK-built computer, assembled in factories in Wales. (Interestingly, many Raspberry Pis are also assembled in Wales).
A rare computer that didn’t have the reach of other UK computers, the Dragon 32 (similar to the Tandy TRS-80 Color Computer) is nevertheless a fascinating choice for emulation. Despite that name of its hardware brethren, however, many Dragon 32 games play in monochrome.
A single keyboard command (F1) launches the emulator’s ROM and CAS file manager.
Download: Dragon-32-Rpi-Bare-Metal (Free)
4. BMC64 (Commodore 64 Emulator)
Fans of the Commodore 64 home computer might be more interested in BMC64. This Raspberry Pi bare metal emulator allows you to run Commodore 64, C128, Vic20, Plus/4, and PET software, and has a fast boot time.
There is also support for wiring C64 and Atari-compatible joysticks to the GPIO, and even support for a genuine C64 keyboard. This means that should you have a C64 with a broken mainboard, you could replace it with a Raspberry Pi running BMC64.
Note that BMC64 is only compatible with Raspberry Pi 2, 3, and Zero models.
Download: BMC64 (Free)
5. CS107E-GB-Emulator (Nintendo Game Boy)
Created by students for a computing class at Stanford, the CS107E-GB-Emulator runs on an original Raspberry Pi (you probably won’t get it running on a Raspberry Pi 4).
As the GitHub README.md file states:
“The nice part about the GameBoy in general is that it has no BIOS. In particular, the entirety of a given game is run directly from op-codes found in the game’s ROM, which makes it an interesting platform that requires no proprietary software to emulate.”
This bare metal emulator is a great illustration of the time, effort, and research that goes into developing these projects. I recommend you check the notes on this project, including the attributions.
Download: CS107E-GB-Emulator (Free)
Emulators aren’t the only bare metal experience on the Raspberry Pi. A GitHub search of “bare metal Raspberry Pi” reveals all manner of projects. You could have a synthesizer, a basic operating system, even games running directly on the computer without a Linux OS.
Whatever the case, the Raspberry Pi is capable of running software with or without the Debian-based Raspberry Pi OS. If you haven’t looked beyond that yet, now is the time to really push your Raspberry Pi.