RISC OS Open
Safeguarding the past, present and future of RISC OS for everyone
ROOL
Home | News | Downloads | Bugs | Bounties | Forum | Documents | Photos | Contact us
Account

Upgrading your Raspberry Pi to the latest development beta of RISC OS

category: RaspberryPi

Introduction

This page details the process for upgrading an already-working RISC OS installation on a Raspberry Pi to RISC OS 5.29.1

Please note: RISC OS 5.29 is a development release that contains untested, work-in-progress software. Some components may be unfinished and/or contain serious bugs: that is what development is about! You should only use RISC OS 5.29 if you are willing to accept the risks involved and have a suitable backup strategy in place.

Having said that, many builds of RISC OS 5.29 do work well. It may simply be a matter of trying a few different nightly builds until you find one that meets your needs.

1 If you wish to upgrade to the latest stable release (5.28) please see RISC OS Upgrade instead.

 

Prerequisites

You will need to download the following software:

  • The Beta ROM image from the Raspberry Pi downloads page.
  • The Beta HardDisc4 image from the Miscellaneous downloads page.
  • Updated Raspberry Pi firmware suitable for RISC OS 5.29.

If you are upgrading from 5.24, 5.25, 5.26 or 5.27, you will also need:

  • The Stable HardDisc4 image from the Miscellaneous downloads page.

A certain level of RISC OS knowledge is assumed, including how to use the command line, how to use the !Configure application and how to edit text files.

 

What release are you upgrading from?

The exact procedure to follow depends on the release of RISC OS you are currently running. Choose the appropriate entry from this list:

  • RISC OS 5.28
  • RISC OS 5.24, 5.25, 5.26 or 5.27 (including RC16)
  • RISC OS 5.19, 5.21 or 5.23 (RC15 or earlier)

 


Disc upgrades and monitor settings

Starting with releases prior to RISC OS 5.24

These releases are too old to retain the existing !Boot as it stands, so you will have to build a new !Boot directory based on the 5.29 version of !Boot. The process is as follows:

  • Enter the *Unplug command. If this lists any unplugged modules, find out if any replacement modules are being loaded (e.g. from !Boot.Choices.Boot.PreDesk) and keep a note of their location.
  • Go to the RISC OS Upgrade page and follow the section titled Procedure for upgrading from RISC OS 5.19 or earlier2 to rebuild !Boot and upgrade the disc-based applications – use the Beta HardDisc4 image, not the “stable” image mentioned on the page. DON’T upgrade the OS ROM just yet.
  • If you had been loading replacement versions of unplugged modules, re-install them (e.g. by copying them from the old !Boot.Choices.Boot.PreDesk to the new !Boot.Choices.Boot.PreDesk). This is just a stop-gap solution as the 5.29 ROM will have the latest versions of all modules.
  • If you are upgrading from RISC OS 5.23 (e.g. RC15), you may find a !!ZeroPain directory in your old !Boot.Choices.Boot.PreDesk – copy this to the new !Boot.Choices.Boot.PreDesk

Once you have confirmed that !Boot – and the other applications in the Beta HardDisc4 image – still work properly, go to Monitor configuration checks below.

2 Using the “Upgrade from 5.19” process forces a rebuild of !Boot rather than attempting an upgrade of !Boot. This is necessary because the “Procedure to upgrade from RISC OS 5.20 or later” requires you to have the 5.22 HardDisc4 image and/or the 5.24 HardDisc4 image: finding a copy of these disc images can be rather tricky.

 

Starting with RISC OS 5.24, 5.25, 5.26 or 5.27 (including RC16)

  • Download the stable HardDisc4 image and run the InSituBootUpdate file to update your !Boot directory to the 5.28 version. Reboot and fix anything that’s broken.3
  • Don’t bother installing the other applications: you will shortly be installing the 5.29 versions anyway.

3 You may find that Alarm has lost some of its settings. Don’t bother correcting this just yet: the 5.29 ROM has a revised version of Alarm which stores its settings in a different place.

 

Starting with RISC OS 5.28

  • Use the “Boot merge” facility (!Configure > Boot > Install) to install the new version of !Boot from the Beta HardDisc4 image. Reboot and fix anything that’s broken.4
  • Replace all the ordinary applications (i.e. the contents of every directory except !Boot) from the Beta HardDisc4 image. Simply delete the old application of the same name (e.g. !Maestro) and copy the new application across.

4 “Boot Merge” saves all replaced files in the !Boot.Backup directory – this will allow you to retrieve any changes you may have made to !Boot components (e.g. amendments to a built-in monitor definition file) if they have been overwritten.

 

Monitor configuration checks

MonitorType and WimpMode

At RISC OS 5.29, two CMOS RAM configuration settings – “MonitorType” and “WimpMode” – must hold valid information. Releases up to RISC OS 5.26 are rather forgiving of unusual values in these two fields, but from RISC OS 5.28 they must be correct or the monitor may not display a picture.

To check the settings:

  • Open a Task window (ctrl-F12) and enter the following two commands:
    *Status MonitorType
    *Status WimpMode
  • If the MonitorType is set to a number between 0 and 8, you must change it:
    *Configure MonitorType Auto
    If the monitor type is “EDID” you do not need to change it.
  • If the WimpMode is set to a number, you must change it:
    *Configure WimpMode Auto

 

“disable_mode_changes” (Optional setting)

In early releases of RISC OS 5 for the Raspberry Pi, the monitor pixel resolution chosen at boot-up was controlled by two settings supplied to the Raspberry Pi bootloader (the “hdmi_group” and “hdmi_mode” lines in config.txt).

From RISC OS 5.24 onwards, RISC OS will by default select a monitor pixel resolution according to the settings chosen in the “Screen” section of the !Configure application, thus ignoring the “hdmi_group” and “hdmi_mode” settings.

If you want RISC OS to continue using the “hdmi_group” and “hdmi_mode” settings5 you should add disable_mode_changes to the first line of CMDLINE/TXT inside !Boot.Loader. If the file doesn’t exist, create it.

5 For example, you may be using a display that only supports a specific pixel resolution, or perhaps you want to use the “AnyMode” utility.

 

Restart to check new monitor settings

  • If you have changed any of the monitor settings, shut down and restart the machine.
  • After the restart, you may find that the RISC OS desktop is displayed at a lower resolution than usual. To correct this, use the !Configure application to select a screen resolution more to your liking. For example, to use the monitor’s EDID settings, choose a monitor type of “Auto(your-monitor-name-here)” (e.g. “Auto(L225W)”) and a resolution of “Native”.6

6 If the menu option says “Auto(Unidentified)” it means that EDID has not worked. In this instance you should choose another monitor type from the list, or consider using disable_mode_changes until you install the 5.29 ROM.

 


Upgrading the RISC OS ROM

We recommend you continue using your updated !Boot for a week or two, so as to flush out any lurking problems before you upgrade the ROM. This gives you time to grab a selection of Beta ROM images of different dates7 – just in case a serious bug was accidentally introduced in a nightly build. You should also check the Bugs and Community Support forums to see if there are any problems with recent nightly builds.

7 The build date is mentioned immediately below the download link itself. Although listed as nightly builds, the average build frequency is closer to “once every 3-4 days”.

 

Preparing for the upgrade

  • Edit the file called CMDLINE/TXT inside !Boot.Loader (if it doesn’t already exist, create it) so that the text disable_gamma appears on the first line of the file.
    For example, if the file already contains “disable_mode_changes”, you would edit the first line to read:
    disable_mode_changes disable_gamma
  • Check that CONFIG/TXT (inside !Boot.Loader) contains – at minimum – the following lines:
    fake_vsync_isr=1
    framebuffer_swap=0
    gpu_mem=64
    init_emmc_clock=100000000
    ramfsfile=CMOS
    ramfsaddr=0x508000
    kernel=RISCOS.IMG
    If any lines are missing, you should add them. Do not remove any entries at this stage.
  • If you want to use the build on a Pi 4, make sure that the following three lines appear at the beginning of CONFIG/TXT:
    [pi4]
    enable_gic=1
    [all]
    It’s probably best to insert these lines even if you aren’t using a Pi 4 – that way you won’t be caught out if you subsequently start using a Pi 4.
  • Copy the existing versions of RISCOS/IMG, BOOTCODE/BIN, START/ELF and FIXUP/DAT from !Boot.Loader to another location, in case you need to regress to the old ROM version.

 

Installing the 5.29 ROM

  • Enter the *Unplug command. This should report “No modules are unplugged”. If it does list any unplugged modules, enter *RMInsert commands for each unplugged module.
    For example, if the GPIO module is unplugged, you should enter:
    *RMInsert GPIO
    Please note that you must RMInsert every unplugged module, as the order of modules in the new ROM may be different (which could cause the wrong module to be unplugged at the next boot).
  • Check that !Boot.Loader contains a file called “CMOS”. If it doesn’t exist, use the *SaveCMOS command to create it:
    *SaveCMOS !Boot.Loader.CMOS
  • Install the updated firmware (BOOTCODE/BIN, START/ELF, FIXUP/DAT) into !Boot.Loader. If you’re using a Pi 4, you will also need START4/ELF and FIXUP4/DAT.
  • Install the Beta ROM (RISCOS/IMG) into !Boot.Loader.
  • Wait 15 seconds, then press Ctrl-Break to reboot. If your keyboard doesn’t have a Break key, shutdown and power off then power on again.

 

After rebooting on RISC OS 5.29

  • Go to !Boot.Choices.Boot.Predesk and delete the !!ZeroPain directory (if present). If you want to continue using ZeroPain, install the latest version from the Bonus Binaries archive (available on the Miscellaneous downloads page). Note that RISC OS 5.29 will run happily without ZeroPain.
  • If !Boot.Choices.Boot.Predesk contains a file called “Alarm”, delete it. The Alarm application now stores its settings elsewhere, so this file is no longer required.
  • If you were temporarily loading revised versions of unplugged modules, remove them from your disc image. The RISC OS 5.29 ROM contains the latest versions of all modules (and if you followed the instructions above there are no longer any modules unplugged) so there should be no need to softload any of these modules.
  • Make a backup copy of your CMOS settings (either via “CMOS > Save” under !Configure, or by using *SaveCMOS) as some of the settings may have changed during the upgrade.8
  • If you want to use EDID9 but previously added “disable_mode_changes” to CMDLINE/TXT, now is the time to remove it. Your CMDLINE/TXT should now read:
    disable_gamma
  • If you have upgraded from RC14 or earlier, you may want to edit CONFIG/TXT to remove any no-longer-needed entries (e.g. “hdmi_group” and “hdmi_mode” are only necessary if you have specified “disable_mode_changes” in CMDLINE/TXT).

8 If you have upgraded from RC10 or earlier, none of your old “saved CMOS” files will work at RISC OS 5.29, so you will need a fresh backup anyway.

9 You cannot use EDID if you also want to use AnyMode. There are other edge cases (e.g. the Pi-Top v1) where custom monitor settings are preferable to EDID.

 

Common problems with the upgrade

  • The mouse pointer is visible but the rest of the screen is black (either on boot or when selecting a 256-colour screen mode)
    You upgraded the ROM but didn’t upgrade the firmware (bootcode.bin, start.elf, fixup.dat).
  • Monitor doesn’t display a picture on boot
    EITHER: You didn’t set MonitorType and WimpMode to “Auto”,
    OR: you didn’t put “disable_gamma” on the first line of cmdline.txt.
  • Desktop is displayed at a lower resolution than usual
    Use “Configure > Screen” to change the monitor settings. To use EDID, choose a monitor type of “Auto(your-monitor-name-here)” (e.g. “Auto(L225W)”) and a resolution of “Native”.
  • Configuration changes don’t survive a reboot
    (1) CONFIG/TXT (inside !Boot.Loader) may be missing the lines that load the CMOS file on boot. Check that the following lines are present:
    ramfsfile=CMOS
    ramfsaddr=0x508000
    (2) The CMOS file (inside !Boot.Loader) is missing/corrupted/read-only, or another file called CMOS also exists in the root directory of the Filecore partition (i.e. you have a file called $.CMOS in addition to $.!Boot.Loader.CMOS). Delete any wayward file(s), then issue:
    *SaveCMOS !Boot.Loader.CMOS
  • Unexpected behaviour in applications after installing the 5.29 ROM
    • This can happen if you installed the ROM without upgrading !Boot (or perhaps the attempted upgrade of !Boot didn’t go as well as you had hoped).
    • Alternatively, one or more modules are unplugged (enter *Unplug to check status). If any modules are unplugged, use *RMReinit to reinstate them (e.g. you would use *RMReinit GPIO to reinstate the GPIO module).
    • There may be a bug in the specific ROM build you chose. Check the forums to see if anyone else has reported a problem; if necessary replace the ROM with another 5.29 nightly build to see if that is any better.
Revised on June 26, 2021 20:29:23 by Sprow (202)? (91.85.45.13)
Edit | Back in time (3 revisions) | See changes | History | Views: Print | Source | Linked from: Using RISC OS on the Raspberry Pi, Software information: RaspberryPi: Beta RPi ROM

Search the Wiki

Social

Follow us on and

ROOL Store

Buy RISC OS Open merchandise here, including SD cards for Raspberry Pi and more.

Donate! Why?

Help ROOL make things happen – please consider donating!

RISC OS IPR

RISC OS is an Open Source operating system owned by RISC OS Developments Ltd and licensed primarily under the Apache 2.0 license.

Navigation

  • Home Page
  • All Pages
  • Recently Revised
  • Authors
  • Feeds
Site design © RISC OS Open Limited 2018 except where indicated
The RISC OS Open Instiki theme is based on Insitki's default layout

Valid XHTML 1.0  |  Valid CSS

Instiki 0.19.1(MML+)
This site runs on Rails

Hosted by Arachsys