SmartDisk II Firmware

Keep your SmartDisk II up to date: download the latest firmware below and install it over USB by drag and drop, or put it on the SD card and let the board install it by itself. Your SD card and your settings are not touched.

Latest firmware · standard board

SmartDisk II v0.83.17

For the standard SmartDisk II (0.96 inch OLED, four keys). Copy this file onto the DISKIIBOOT drive, or into /UPGRADE on the SD card.

MD5 21e6fab3a09df4905aab2d50fcee81d4

Latest firmware · XL board

SmartDisk II XL v0.83.17

For the SmartDisk II XL (1.54 inch OLED, rotary encoder). Copy this file onto the DISKIIBOOT drive, or into /UPGRADE on the SD card.

MD5 ca14d60af22f1fd7e9546ec728c6e003

All files of bootloader v0.25 (SD card, ST-Link bin, hex, elf)
FileForWhat it isMD5
bootloader_v0.25.binSD card update: copy it to /UPGRADE (bootloader v0.23 or later on the board)the bootloader image with a 16 byte trailer: a mark, the length and a CRC-32 the bootloader checks before it writes6c809c8d1c6264498354cf70249759c9
smartdisk_bootloader_v0.25_stlink.hexST-Link with OpenOCDthe plain image, Intel hex, with its addressa32fff496bfb0e5699d2eed2aeabeb3b
smartdisk_bootloader_v0.25_stlink.binST-Link or dfu-util, at 0x08000000, keeps the firmwarethe plain image, raw bytes. Refused on the SD card (no trailer)7d014971aa34a0a8c5a351e3e3740e9d
smartdisk_bootloader_v0.25.elfdebuggerthe same image with its debug symbolscabcb37f6883e68cdfc9abbfca04344d
All files of v0.83.17 (UF2, bin, elf)
FileBoardForMD5
smartdisk_std_btl_v0.83.17.UF2StandardUSB update (drag and drop)21e6fab3a09df4905aab2d50fcee81d4
smartdisk_std_btl_v0.83.17.binStandardprogrammer, at 0x08010000, keeps the bootloader9e6cfc80ad8753b84f491208668528d6
smartdisk_std_btl_v0.83.17.elfStandarddebugger, keeps the bootloaderda576502f45c29dc02588b48bc387d6e
smartdisk_std_v0.83.17.binStandardST-Link, at 0x08000000, replaces the bootloader0d5ed8dfa34373665f66712172aa1ae5
smartdisk_std_v0.83.17.elfStandarddebugger, whole flash, replaces the bootloader0a43e3077c8e29b660064d07eac71769
smartdisk_xl_btl_v0.83.17.UF2XLUSB update (drag and drop)ca14d60af22f1fd7e9546ec728c6e003
smartdisk_xl_btl_v0.83.17.binXLprogrammer, at 0x08010000, keeps the bootloader67226f8e4fae78436d0e71d8e4d313b6
smartdisk_xl_btl_v0.83.17.elfXLdebugger, keeps the bootloader8c38fc8fe23a4e9125eedade027599dd
smartdisk_xl_v0.83.17.binXLST-Link, at 0x08000000, replaces the bootloader52f3ce82698f7e6f726067085ee853af
smartdisk_xl_v0.83.17.elfXLdebugger, whole flash, replaces the bootloader683a096eaf4a5aa71096b53e17726a3b

SD card files

Copy these files to the root of the SD card (not into a folder), next to sdiskConfig.json. The firmware reads them when you use Create disk to make a bootable disk. They are not disk images, so the file manager does not list them. Do not edit them: the firmware checks their length and CRC32 and refuses a file that was changed.

FileSizeWhat it holdsMD5
SDPRODOS.BIN28,420 bytesthe ProDOS 8 system software (version 2.4.3): the boot blocks, PRODOS and BASIC.SYSTEM. Used by Create disk for ProDOS bootable and the boot blocks of ProDOS emptyd1547e2b2b8e78d85f05e83b9b0627c1
SDDOS33.BIN12,308 bytesthe three boot tracks of DOS 3.3. Used by Create disk for DOS 3.3 bootable1c657972cff677af8739cf290ff178a7
README.md2,104 bytesnotes on these files (not needed on the card)ac7bd0d3173c00d36ba546e2b66adc0e
sdcard.zip29,128 bytesthe archive with the three files above, in a folder sdcardcb8928d0103d36d1ececc7f6a3daaad5

How the files are named

smartdisk_<board>_[btl]_v<release>.<build>.<type>
for example smartdisk_std_btl_v0.83.17.UF2

PartMeaning
stdstandard SmartDisk II board: 0.96 inch OLED, four keys
xlSmartDisk II XL board: 1.54 inch OLED, rotary encoder. The two are not interchangeable
btlbuilt to run with the bootloader: the firmware starts at 0x08010000, after the bootloader. This is the version for every normal update
without btlbuilt for the whole flash, without bootloader: it starts at 0x08000000 and overwrites the bootloader. Only for an ST-Link programmer, if you know you need it
v0.83.17release 0.83, build 10. The splash screen shows the same number at power up
.UF2the file you drop on the DISKIIBOOT drive for a USB update
.binraw flash image, for an ST-Link or another programmer
.elfthe same firmware with its debug symbols, for a debugger

Each file is delivered in a small zip archive (the web site does not accept these file types directly): unzip it before you use the file.

What changed: release notes · Full guide: firmware update documentation · Bootloader and SD card update: bootloader documentation · Older files: GitHub releases


Update your SmartDisk II in 6 steps

  1. Back up your settings
    Copy sdiskConfig.json from the root of the SD card to your computer (favorites, settings, last image, SmartPort volumes). Keep the firmware file you have now, so you can go back.
  2. Take the board out
    Unplug the SmartDisk II from the Apple II or the Macintosh and remove the jumpers on J1 and J7: USB must be the only power source.
  3. Connect it to your computer
    Plug a USB cable (with data lines) into the USB-C connector of the BlackPill module. Mac, Windows or Linux: no software to install.
  4. Press reset twice, quickly
    Press the NRST button of the BlackPill twice within half a second (in the case, use the reset key). A drive named DISKIIBOOT appears on your computer and the OLED shows SMARTDISK II BOOTLDR · DFU MODE.
  5. Drop the firmware on the drive
    Unzip the download and copy the .UF2 file for your board (std or xl, always btl) onto DISKIIBOOT. The bootloader writes it into the flash as the copy runs.
  6. Let it restart
    When the copy ends, wait: the board restarts by itself, the drive disappears and the splash screen shows the new version at the bottom right. Unplug USB, put the power jumper back and reinstall the board.

Or from the SD card, without a computer

With bootloader v0.22 or later the board installs the firmware by itself, in the Apple II or on USB:

  1. Make a folder named UPGRADE at the root of the SD card.
  2. Copy one .UF2 file for your board into it (std or xl, always btl).
  3. Put the card in and switch on. The OLED shows VERIFY, FLASH, CHECK and UPGRADE OK, the buzzer plays a “ta-da”, and the new firmware starts.
  4. The file is renamed .UF2.done (or .UF2.err if it was refused), so it is not installed twice. Details: Bootloader documentation.

Bootloader version. The firmware runs with bootloader v0.21 or later; the update from the SD card needs v0.22 or later, and v0.25 is the current one. The version shows on the OLED in DFU mode. Never use v0.15: it causes problems with the SmartPort of the IIgs.

One power source at a time. Never connect USB, an ST-Link and the Apple II together. The board says it on its silkscreen: “ONLY 1 PWR SRC”.

If something goes wrong

If…Try this
No DISKIIBOOT drive after the double pressPress NRST twice again, a little faster. Try another USB cable (with data lines) and another USB port.
The copy was interrupted and the board does not startPress NRST twice to enter DFU mode and copy the .UF2 file again.
The board no longer enters DFU modeInstall the bootloader again with an ST-Link (see below).
UPGRADE FAILED after an SD card updateThe second line says why: see the bootloader documentation. The installed firmware is kept.
Nothing happens with the file in /UPGRADEThe bootloader is older than v0.22: update over USB, or install bootloader v0.25.
You want to go back to an older releaseDo the same steps with the older .UF2 file, then put your copy of sdiskConfig.json back on the card.

Bootloader

The bootloader is the small program at the start of the flash. At every reset it installs an update it finds in /UPGRADE on the SD card, then waits half a second and starts the firmware. Press reset twice in that half second and it shows the DISKIIBOOT drive for a USB update instead. It write-protects itself and refuses every UF2 block outside the firmware area, so no firmware file can overwrite it.

To install bootloader v0.25 on…Do this
a board with v0.23 or v0.24copy bootloader_v0.25.bin into /UPGRADE on the SD card, power the board from USB (out of the Apple II, no jumpers on J1 and J7) and switch on. Do not power off while WRITING BOOTLOADER is shown. The OLED then shows UPGRADE OK · BOOTLOADER v0.25
a board with v0.22 or older, or without bootloaderwrite smartdisk_bootloader_v0.25_stlink.hex with an ST-Link, as below
Installing the bootloader with an ST-Link

You need an ST-Link V2, four wires and the J6 header soldered on the board. Nothing else may be connected: no USB, no Apple II, no jumpers on J1 and J7.

Board J6 pinSilkscreenST-Link
13V3.3V
2SDIOSWDIO
3SCKSWCLK
4GNDGND

Then write the bootloader with OpenOCD (or write the _stlink.bin at address 0x08000000 with another tool):

openocd -f interface/stlink.cfg -f target/stm32f4x.cfg \
-c "init" -c "reset init" -c "flash protect 0 0 last off" \
-c "program smartdisk_bootloader_v0.25_stlink.hex verify reset exit"

Remove the ST-Link and connect USB only. A firmware already on the board is kept and starts; a board with no firmware goes straight to DFU mode, ready for the .UF2 file.

Everything about the bootloader, the SD card update and what each message means: Bootloader documentation.

Release history

The changes of each release, newest first, are in the firmware release notes.

Older release history (v0.80.x)

Firmware Release:

27/07/2025 V0.80.16

  • [Smartloader] Add multipage feature, left and right arrow
  • [Smartloader] Add last folder saved for next reboot
  • [Smartloader] fix loading of image (sometime it was crashing)
  • [Smartloader] adding 20ms delay after reading block to avoid dead lock
  • [Smartloader] move arm track by one to enable easy reread in case of error

20.05.25 v0.80.13

  • [SMARTPORT] Fixing deadlock on FS access
  • [SMARTPORT] Manage Eject of Image and Disk present / not present

19.05.25 v0.80.12

  • [FATFS] changing strfunc in conf
  • [Smartport] adding ROM03 reinit devicelist
  • [Smartport] adding break on timeout
  • [Smartport] adding break on checksum failed to avoid corruption of sdcard block
  • [MAIN] adding TIM5 to manage deadlock
  • [PCB] beta release of PCB v6

10.04.25 v0.80.11

  • [Smartport] adding support for hdv file extension
  • [diskII] fix corrupted track on successive basic file writing
  • [diskII] fix empty directory when booting last directory

04.04.25 v0.80.9

  • Fixing instability on SDCard Access (Removing the constraints on DMA & SDIO IRQ)

26.03.25 v0.80.7

  • Fixing Favorites Screen
  • Adding Favorites to Smartport HD
  • Adding option to select boot index directly from Smartport Image
  • Adding toogle favorites SmartportHD
  • Display Fav Icon

26.03.25 v0.80.6

  • [SDEJECT] Disk Creation from Filesystem (PO,DSK,…)
  • [SDEJECT] Fixing SD Eject function for all emulator
  • [MAINMENU] Making the main menu dynamic according to emulation type
  • [UNIDISK / HD EDJECT] Manage Eject request from Smartport on update screen on SmartDisk
  • [SMARTPORT ] checksum and write fix
  • [SMARTPORT ] deadlock on some read query to Ack not asserted, workaround

22.03.25 v0.81

  • [SDEJECT] Fixing SD Eject function for all emulator
  • [MAINMENU] Making the main menu dynamic according to emulation type
  • [UNIDISK / HD EDJECT] Manage Eject request from Smartport on update screen on SmartDisk
  • [SMARTPORT WRITE KO] error on checksum to be fixed

22.03.2025 v0.80.5d

  • [DSK/PO] write process
  • [DSK/PO] sector skewing
  • [READ] optimize function timing duration
  • [WRITE] GCR_6_2 chksum comp
  • [WEAKBIT] option in setting
  • [UNIDISK 2MG] Full emulation of SMartport Unidisk with 2MG image file
  • [DISPLAY] Huge code clean up

06.03.2025

  • [ALL] code refactoring
  • [FS] Adding directory option
  • [SDEJECT] Removing HAL, bitbanging to GPIO
  • [SDEJECT] Add function trigger to emul loop
  • [SDEJECT] Add sysreset after sdcard reinserted

03.03.25 v0.80.5

Add extension filter to walkdir depending of the type of emulator

26.02.25 v0.80.4

  • [Smartport] mount regression fix
  • [Smartport] 2mg file ext disp fix
  • [WOZ] Correcting head / sector / region calculation
  • [FS] Adding “.” item on every location to add future access to option
  • [FATFS] Change conf of FATFS to manage STRFUNC
  • [WOZ] Passing the wozardry verify & dump test for both 3.5 & 5.25
  • [WOZ] Manage CRC32
  • [WOZ] Adding Blank woz file creation for 3.5
  • [WOZ] Adding Blank woz file creation for 5.25
  • [Smartport IIGS] TODO: Fix Splashscreen duration with Animation
  • [WOZ] TODO: blank WOZ 3.5 1 Byte slip to fix

23.02.25 v0.80.3

  • [All] Code cleaning, compilation warning cleaning
  • [Smartport] 2MG Extension checking fixed
  • [2MG] Fixing 2MG mount blockCount function
  • [Smartport] Fixing Missing Extended DIB Status
  • [SmartPort] Managing errorCode on CMD
  • [SmartPort] code refactoring
  • [SmartPort] Working on 2MG file support with Smartport
  • [SmartPort] Changed deviceType & subType according to the type of diskFormat (PO & 2MG)
  • [SmartPort] Added Standard Extended Function Call
  • [Merged] Merge code with A2F Contributor JoSch
  • [Display] Fixing some code on display

20.02.25 v0.80.2

  • Add confirmation screen MakeFS
  • Change display of MakeFS
  • MKFS on the Main Thread and not by interrupt
  • Deep work on 2MG & disk35

06.02.25 v0.80.1

  • [SmartPort] Fixing Smartport write process, and it WORKS!!!
  • [SmartPort] Managing incomming checksum command
  • [SmartPort] Optimizing read time
Scroll to Top