Sunday, 12 April 2020

Upgrading the divMMC future firmware

This is an old post, preserved for reference.
The products and services mentioned within are no longer available.

The divMMC future uses ESXDOS firmware, which is periodically upgraded. When a new release is published, we test it and when we are confident there are no problems, we start shipping the divMMC future with the new firmware. Currently, we are shipping version 0.8.7.
Users with older units can upgrade their firmware to the later version if they want to, although it is only advisable to do this if you want to make use of a new feature, or if there is a bugfix which is relevant to you. You may also be advised to reflash the firmware if it has been corrupted due to use with a faulty Spectrum. But in general,
if yours is working, you do not need to upgrade the firmware.
The version of firmware you have is shown top left of the screen when the Spectrum first powers on. This one has version 0.8.5, not the latest version, but it is working fine so I have not upgraded it. But for the sake of science, I am going to upgrade this today to show you the process.
  1. Load firmware flasher
  2. Eject SD card
  3. Check you have ejected the SD card
  4. Did I mention ejecting the SD card?
  5. Run the firmware flasher
  6. Update the BIN and SYS files on the SD card
  7. Reinsert the SD card and reboot
The first step is loading the firmware flasher program. You can download the files from, or from the TFW8b download page. If your divMMC is currently working, you can copy the flasher program onto the SD card and run it from there. Do not update the BIN and SYS files yet, as the divMMC needs to boot up with the old firmware and old BIN and SYS files before it runs the flasher.
You can also load that .tap file into the Spectrum using a device like the Tapuino or TZXduino or via a phone app. Also in that folder, there is a wav file. You can play that into the Spectrum using a audio player on a laptop or phone.
If you can't do any of those things, then you can buy a prerecorded cassette with the flasher tool for V0.8.6 and V0.8.7 from the TFW8b store.
With that, you need a suitable cassette player.
Or a +2 with a built in cassette deck.
Once you have loaded the flasher program by whatever means, you will be presented with a screen which tells you to adjust JP2.
No matter how extensively you search around the divMMC future, you will not find JP2. Don't be tempted to open one up as this will invalidate your warrantly (and spoil the nice case), and it's not in there anyway.
JP2 would be used to disable the divMMC to allow the firmware to be upgraded. On the divMMC future, we wanted it to be jumperless, so we use the SD card to control this. If the SD card is inserted, the interface is enabled. If it is ejected, the interface is disabled, so it can be reflashed. So all you need to do is push in the SD card to eject it.
This is what you want to see, a clear air gap around the SD card. You may thing I am over stressing this point, but I have had quite a few people who have had problems doing this upgrade because they had missed out the step where you eject the SD card.
When you press a key, if you forget to eject the SD card, the screen will go an angry red to remind you to re-read the instructions.
If you have remembered to eject the SD card, congratulations, the new firmware will be installed, the screen border will flash funky colours for a while, and when that has stopped it will return with an OK message to indicate it has finished.
Now is time to upgrade the BIN and SYS files on the SD card. If you don't, it will not work properly. So plug the SD card into a PC or laptop via a card reader. I am using an SD2USB card reader, but you can use something else if you must.
Once the new files are copied onto your SD card, reinstall it into the divMMC and boot up again.
The boot screen should have been updated to show the new version, currently V0.8.7. Note the RTC.SYS file [ERROR] will always be there as most divMMCs do not have a built in real time clock. It would be good if future versions came with a dummy RTC.SYS file so there were no errors displayed.
Everything should now be the same, press the NMI button (the illuminated one) and you should see the file browser menu and away you go.
So, the moral of the tale is, don't upgrade the firmware unless you need to, and if you do, remember to eject the SD card.