Updating the firmware is a dangerous operation!
Please ensure you identify the SD card device correctly otherwise you may inadvertently wipe your host computer hard disk!
Disconnect power from the ZXZero.
Preferably using a pair of tweezers, remove the MicroSD card that is plugged into the Raspberry Pi Zero W. This is the card that contains the firmware for the system. Do NOT remove the external-facing MicroSD card. This contains your games!
Depending on your host computer, you might want to insert the MicroSD card into a standard SD card holder.
Plug the MicroSD card into your host computer that you will use to flash the new firmware.
Download the latest firmware from our Downloads page and locate it on your host computer.
You should now flash the image to your host computer. There are a number of ways to do this. We have included some platform-specific instructions below for macOS, Linux and Windows.
Once you have flashed the firmware onto the MicroSD card, you should safely eject it from your host computer and carefully re-insert it into the Raspberry Pi Zero W. Once inserted, apply power and your ZXZero should boot. You can check the firmware version in the "About" menu in Fuse.
Open a Terminal and type in:
% diskutil list
which should result in output similar to below.
/dev/disk0 (internal):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme 500.3 GB disk0
1: EFI EFI 314.6 MB disk0s1
2: Apple_APFS Container disk1 500.0 GB disk0s2
/dev/disk1 (synthesized):
#: TYPE NAME SIZE IDENTIFIER
0: APFS Container Scheme - +500.0 GB disk1
Physical Store disk0s2
1: APFS Volume Macintosh HD 89.6 GB disk1s1
2: APFS Volume Preboot 47.3 MB disk1s2
3: APFS Volume Recovery 510.4 MB disk1s3
4: APFS Volume VM 3.6 GB disk1s4
/dev/disk2 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *15.9 GB disk2
1: Windows_FAT_32 boot 268.4 MB disk2s1
2: Linux 15.7 GB disk2s2
In the example above, the SD card is /dev/disk2 as it is marked as "external, physical" and has a capacity of 16Gb (which sounds about right for an SD card as opposed to a hard disk!). By default, the Hermit Retro ZXZero ships with a 4Gb card.
You should now copy the firmware image to the SD card. In the examples below, you should replace /dev/diskX with the name of your SD card device identified above, e.g., /dev/disk2.
Firstly, you will need to unmount any SD card volumes. In the Terminal, type:
% sudo diskutil unmountDisk /dev/diskX
Next, you will transfer the firmware image to the SD card. You should replace path_to_firmware.img with the appropriate path to the firmware, e.g., hermitretro-zxzero-1-0-0.img
% sudo dd bs=1m if=path_to_firmware.img of=/dev/diskX; sync
Once complete, the command will report a number of blocks copied.
You should now safely eject the SD card.
In the examples below, you should replace /dev/diskX with the name of your SD card device identified above, e.g., /dev/disk2.
In the Terminal, type:
% sudo diskutil eject /dev/diskX
- Download the Windows installer from balena.io
- Run balenaEtcher and select the Hermit Retro ZXZero firmware image file
- Select the SD card drive
- Finally, click Burn to write the Hermit Retro ZXZero firmware image to the SD card
- You'll see a progress bar. Once complete, the utility will automatically unmount the SD card so it's safe to remove it from your computer.
Open a terminal, such as xterm and type in:
% lsblk -p
You should be able to identify the device from the listing by the size of the volume, usually 4Gb.
The left column of the results from the lsblk -p command gives the device name of your SD card and the names of any partitions on it (usually only one, but there may be several if the card was previously used). It will be listed as something like /dev/mmcblk0 or /dev/sdX (with partition names /dev/mmcblk0p1 or /dev/sdX1 respectively), where X is a lower-case letter indicating the device (eg. /dev/sdb1). The right column shows where the partitions have been mounted (if they haven't been, it will be blank).
If any partitions on the SD card have been mounted, unmount them all with umount, for example umount /dev/sdX1 (replace sdX1 with your SD card's device name, and change the number for any other partitions).
In a terminal window, write the image to the card with the command below, making sure you replace the input file if= argument with the path to your .img file, and the /dev/sdX in the output file of= argument with the correct device name. This is very important, as you will lose all the data on the hard drive if you provide the wrong device name. Make sure the device name is the name of the whole SD card as described above, not just a partition. For example: sdd, not sdds1 or sddp1; mmcblk0, not mmcblk0p1.
% sudo dd if=path_to_firmware.img of=/dev/sdX bs=4M conv=fsync
If dd executes correctly, it will report the number of blocks copied, e.g.
xxx+0 records in
yyy+0 records out
yyyyyyyyyy bytes (yyy kB, yyy KiB) copied, 0.00144744 s, 283 MB/s
These instructions use content from the Raspberry Pi Organisation image installation instructions.