How to emulate a BBC Micro on a Raspberry Pi (full tutorial)

By Colin Hoad | Feb 22, 2024

In this tutorial I show how to emulate a BBC Micro using a Raspberry Pi. This is a complete tutorial with full instructions, end to end. It also includes a quick how-to for getting a fresh copy of Raspberry Pi OS up and running, in case your Pi is in a poorly condition (as mine was!)


I'm using a Raspberry Pi 2 Model B but the steps should work for any model, including the Pi Pico for which the original guide by Ashley Whittaker was written.


As I say in the video, this is all very much "standing on the shoulders of giants", I didn't come up with this by myself and am hugely indebted to both Ashley and Graham for their work.


All I want to do is try and promote the concept a bit more, because I think it's ace!



Ashley Whittaker's article:

Raspberry Pi disc imager:

Graham "kilograham" Sanderson's B-em Git repository:

Raspberry Pi picoextras Git repository:

Elesar keyboard:



I've tried to include all of the major commands used in the video aligned with the steps. You can also refer directly to Ashley's article.


Step 1

sudo raspi-config


Step 2

sudo apt install build-essential cmake libdrm-dev libx11-xcb-dev libxcb-dri3-dev libepoxy-dev ruby libasound2-dev


Step 3

mkdir Pico

cd Pico


tar -xzf 1.5.1.tar.gz

git clone

git clone

cd b-em

mkdir pi_build

cd pi_build

cmake -DPICO_SDK_PATH=path/to/pico-sdk -DPI_
-DX_GUI=1 ..

make -j4


Step 4

cd src/pico




Step 5 & 6

Press F11 to get the onscreen menu within Bem

Use the cursor keys to navigate the menu, including the left/right cursors to select a disc image

Press Enter when you have found the disc image you want to use

Use SHIFT + F12 to boot up the disc image (or you can type *EXEC !BOOT and press Return)

Use ALT + F4 to close the emulator


Step 7

Deliberately skipped as I decided not to include this, since embedding disc images is - in my opinion - far more preferable.


Step 8

Use the following syntax when adding new entries to the beeb_discs_user.txt or master_discs_user.txt files:

Name Of Game = /path/to/discs/name_of_game.ssd

You can use the "greater than" symbol next to one entry to designate the default disc image

There seems to be a maximum limit of 144 entries in the configuration file, after which you run the risk of compilation errors

If you haven't already got a pile of disc images, you can get almost any BBC Micro game from the Complete BBC Micro Games Archive site: