This page contains a number of general issues that may crop up when running RISC OS on the Raspberry Pi.
Please note: This page makes frequent reference to the BREAK key. On some keyboards, the BREAK key is marked PAUSE. If your keyboard has neither key, see The Break key for how to configure another key as BREAK.
Yes you can. If you’re installing from scratch, see Beginners FAQ:Installing RISC OS.
If you’re already running RISC OS 5.30 on an older model of Raspberry Pi, make the following checks:
With those changes applied, the SD card should work in a Pi 4.
No (or at the very least, not yet).
RISC OS is a 32-bit operating system, but the Raspberry Pi 5 is primarily a 64-bit machine.1
There are long-term plans to allow RISC OS to run on 64-bit hardware, but we are looking at a timescale of years rather than weeks or months. Sorry.
1 The Cortex-A76 CPU in the Pi 5 allows a limited form of 32-bit operation, running in EL0 (user mode) only. RISC OS needs EL1 which is not available on the Cortex-A76.
Short answer: No.
This is for architectural reasons. The big show-stopper is that the Cortex-M CPU (used in the Pi Pico) only supports the Thumb instruction set, whereas RISC OS uses the A32 instruction set. Getting RISC OS to run on the Pi Pico would thus entail a complete rewrite of the RISC OS kernel. Sorry.
For the record, “RISC OS Pico” – now discontinued – was a completely separate product.
By default, the Pi 4 will only display a 3840×2160 picture at 30Hz, but most 4K monitors expect 3840×2160 at 60Hz. In these circumstances, RISC OS will fall back to a “safe” (i.e. low-resolution) screen display.
You have two options:
hdmi_enable_4kp60=1
to config.txt – see config.txt (Raspberry Pi) for more information. This will allow 3840×2160 at 60Hz, but will increase the operating temperature of the Pi 4, so additional cooling may be required.
When using RISC OS, HDMI sound is only available on the left-hand HDMI port. If you connect to the other HDMI port you will get a picture but no sound.
On the Pi 400, use the HDMI port closest to the SD card slot.
Ah. It’s time to let you in on a little secret: the PrtScn key on the Pi 400 performs many of the functions of the Break key.
Pressing the PrtScn key on its own still invokes the “Print” function, as before.
This was a problem when running RISC OS 5.28 on a newer hardware revision of the Pi 4B or Pi 400.
The solution is to upgrade to RISC OS 5.30.
This was a problem when running RISC OS 5.28 on the Pi Zero 2 W.
The solution is to upgrade to RISC OS 5.30.
Capacity:
Performance:
It may be worth checking the known good cards list as there have been problems with a few cards over the years.
Yes, but you’ll have to reformat them first. SDXC cards are supplied in exFAT format, which RISC OS cannot handle at present. Reports suggest that SDXC cards up to 256GB2 will work with the Raspberry Pi after reformatting to FAT32.
When reformatting the card, you must use Master Boot Record (MBR) partitioning. If you select “GUID partition table”, RISC OS will be unable to read the card.
In any case, SD is a poor choice for Filecore storage. The quoted SD speeds are for “sequential burst” writes, not the random read/write operations that Filecore typically performs. Cards with an A1 (app performance) rating will be slightly better in this respect, but may cost more than an ordinary card. In addition, RISC OS does not implement the TRIM feature, so SD cards that support TRIM will not know when files have been deleted. This means that the wear-levelling algorithms won’t work as well as they could, leading to a reduced operating life.
You might wish to consider an external (USB connected) HDD or SSD instead: these would be much more suited to the sort of read/write operations that Filecore performs. Note that most USB flash drives are not SSDs, so will typically deliver poor performance.
2 Higher-capacity cards are not recommended, as RISC OS can only access the first 256GB of a card in the SD slot of the Raspberry Pi.
Yes you can. Detailed instructions are on this page.
You can do it on the Pi 3 and Pi 4, but it’s far from easy. Here are some of the issues you would encounter:
configure filesystem scsi
configure scsifsdrive 0
savecmos scsi::0.$.!Boot.Loader.CMOS
configure filesystem scsi
configure scsifsdrive 4
savecmos scsi::4.$.!Boot.Loader.CMOS
FatSwopMouseButtons :4 On
This list is not exhaustive. You may experience other problems besides those mentioned above.
Users wishing to reduce SD card wear-and-tear would be better advised to continue booting from the SD card, but to move the !Boot directory to a USB drive, as described here.
3 If you have a Pi 400 and are running RISC OS 5.30, press Ctrl-PrtScn to reboot.
4 If your USB device appears as drive 0, the line becomes FatSwopMouseButtons :0 On
There are several possible reasons for this. Here are the “top four”:
*SaveCMOS sdfs:$.!Boot.Loader.CMOS
DOSFS understands long file names, but if you rename a file such that its name isn’t long any more, only the “long file name” entry is changed: the 8.3 name still points at the “long file name” entry.
The Pi bootstrap loader will only check the 8.3 filename (not the “long file name”) when looking for a file whose name fits in the 8.3 format.
The practical upshot is that if you rename RISCOS/IMG to old-RISCOS/IMG and then rename it back to RISCOS/IMG, the Pi bootstrap loader will no longer be able to find it.
Workaround: If you want to change the name of a file inside !Boot.Loader, use Copy instead of Rename.
The Pi does not have a real-time clock. Hence, when the Pi boots up, it will not be aware of the correct time.
The fix is to run an Ethernet cable5 from the Pi to your broadband router (or equivalent network port with access to the Internet). The Pi will then be able to update its clock from the network.
Note: “Real-time clock” add-ons are available for the Raspberry Pi, but some may require custom software to work with RISC OS.
5 If you have a Pi 3, Pi 4, Pi 400, Pi Zero W or Pi Zero 2 W, you may be able to use WiFi instead. See Getting Connected Online for how to enable WiFi.
When using PackMan, you might get scary “file clash” messages when you try to update an application. This is most likely to happen if the application was updated outside of PackMan (e.g. by downloading a new version from a website).
The fix is to click on the Backup button. This will move the “unexpected” files into a Backup directory: the update should then progress normally. After the update is complete, you can see a list of backed-up files in the Advanced section of PackMan’s icon bar menu, and delete or restore them as you wish.
For further information, see the PackMan User's Guide.
Starting with RISC OS 5.30, the onboard WiFi chips on the Pi 3, Pi 4, Pi 400, Pi Zero W, Pi Zero 2 W and Compute Module 4 can now be used.
See Getting Connected Online for setup instructions.
Starting with RISC OS 5.30, a wide range of Ethernet adapters are supported. For example:
Most other chipsets conforming to the CDC ECM protocol should also work.
Please note: Gigabit Ethernet adapters may deliver unexpectedly poor throughput, and USB3 multi-function devices (e.g. a combination Ethernet adapter and USB3 hub) may not work at all. This isn’t an Ethernet issue: it’s that RISC OS currently cannot operate USB3 devices at USB3 speeds.
USB drives – especially flash memory sticks – don’t write all the data to the drive immediately: some of it is delayed (in the expectation that the user will be writing more data). This is done for efficiency – and media longevity – reasons: the fewer separate write operations performed, the better. The data will eventually be written after a timeout, which could be several seconds.
This is exacerbated by the fact that many USB devices don’t action dismount requests6. Instead of immediately flushing all delayed writes to the media in the expectation that a power-off is about to happen, the delayed writes remain pending until the timeout (mentioned above) occurs in the normal course of events. If the device is unplugged immediately after issuing the dismount but before the delayed writes have been actioned, data will be lost.
So the “wait 15 seconds” rule will hopefully allow for all but the most tardy of these delayed writes to actually happen, thus minimising the risk of data corruption.
6 RISC OS is obviously doing the dismount “wrongly”, but no one has yet worked out exactly what is “wrong”.
Firstly, DHCP can be quite slow. It can take upwards of 20 seconds to acquire a DHCP address, so don’t start worrying until the message has been on-screen for (say) 40 seconds.
If boot-up has completely stalled at the “Contacting DHCP server” message, the most likely reason is that you are using a Raspberry Pi without an Ethernet interface (e.g. Pi Zero, Pi 3A+) and you haven’t connected a USB-to-Ethernet adapter.
There are two possible workarounds:
The old problems to do with moving an SD card from one Pi to another have been fixed at RISC OS 5.30.
First things first: are you doing Shift-Break properly? You should hold down Shift, press and release Break, then continue to hold down Shift until the reboot finishes.
There are several reasons why Shift-Break (and Shift power-on) may not work on the Raspberry Pi:
If you are seeing No keyboard present – autobooting, try disconnecting all USB devices (including USB hubs) and reconnect only the keyboard: you may find that Shift-Break now works.
RISC OS Pico was a cut-down version of RISC OS (no GUI) that was put together for a one-off special event (the 50th anniversary of the BASIC programming language in 2014). Updates ceased in 2017: it will not run on anything newer than a Pi 3B. In addition, there is the possibility of confusion with the Raspberry Pi Pico, which RISC OS does not support.
Hence RISC OS Pico is no longer available from the Downloads page.
To get the “RISC OS Pico” experience from a RISC OS 5.30 build:
disable_mode_changes disable_gamma
*Unplug BootFX
*Configure Language 19
*Configure Mode 7
*Configure NoBoot
RC stands for release candidate, a software build typically produced for acceptance testing in the run-up to the next stable release. While based on the corresponding development build, it may omit some untested or problematic components in an effort to improve stability.
RC builds are always beta test software. If you are using one of these you should upgrade to a later stable release when it becomes available.