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
Latest bootloader · standard and XL boards
SmartDisk II bootloader v0.25
The small program that starts the firmware and installs new ones, over USB or from the SD card. One file for both boards. The firmware runs with v0.21 or later; install v0.25 to update from the SD card. A board with v0.23 or later updates its bootloader from the SD card; an older board needs an ST-Link once. How the bootloader works
MD5 6c809c8d1c6264498354cf70249759c9 (SD card file) · a32fff496bfb0e5699d2eed2aeabeb3b (ST-Link hex)
All files of bootloader v0.25 (SD card, ST-Link bin, hex, elf)
| File | For | What it is | MD5 |
|---|---|---|---|
| bootloader_v0.25.bin | SD 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 writes | 6c809c8d1c6264498354cf70249759c9 |
| smartdisk_bootloader_v0.25_stlink.hex | ST-Link with OpenOCD | the plain image, Intel hex, with its address | a32fff496bfb0e5699d2eed2aeabeb3b |
| smartdisk_bootloader_v0.25_stlink.bin | ST-Link or dfu-util, at 0x08000000, keeps the firmware | the plain image, raw bytes. Refused on the SD card (no trailer) | 7d014971aa34a0a8c5a351e3e3740e9d |
| smartdisk_bootloader_v0.25.elf | debugger | the same image with its debug symbols | cabcb37f6883e68cdfc9abbfca04344d |
All files of v0.83.17 (UF2, bin, elf)
| File | Board | For | MD5 |
|---|---|---|---|
| smartdisk_std_btl_v0.83.17.UF2 | Standard | USB update (drag and drop) | 21e6fab3a09df4905aab2d50fcee81d4 |
| smartdisk_std_btl_v0.83.17.bin | Standard | programmer, at 0x08010000, keeps the bootloader | 9e6cfc80ad8753b84f491208668528d6 |
| smartdisk_std_btl_v0.83.17.elf | Standard | debugger, keeps the bootloader | da576502f45c29dc02588b48bc387d6e |
| smartdisk_std_v0.83.17.bin | Standard | ST-Link, at 0x08000000, replaces the bootloader | 0d5ed8dfa34373665f66712172aa1ae5 |
| smartdisk_std_v0.83.17.elf | Standard | debugger, whole flash, replaces the bootloader | 0a43e3077c8e29b660064d07eac71769 |
| smartdisk_xl_btl_v0.83.17.UF2 | XL | USB update (drag and drop) | ca14d60af22f1fd7e9546ec728c6e003 |
| smartdisk_xl_btl_v0.83.17.bin | XL | programmer, at 0x08010000, keeps the bootloader | 67226f8e4fae78436d0e71d8e4d313b6 |
| smartdisk_xl_btl_v0.83.17.elf | XL | debugger, keeps the bootloader | 8c38fc8fe23a4e9125eedade027599dd |
| smartdisk_xl_v0.83.17.bin | XL | ST-Link, at 0x08000000, replaces the bootloader | 52f3ce82698f7e6f726067085ee853af |
| smartdisk_xl_v0.83.17.elf | XL | debugger, whole flash, replaces the bootloader | 683a096eaf4a5aa71096b53e17726a3b |
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.
| File | Size | What it holds | MD5 |
|---|---|---|---|
SDPRODOS.BIN | 28,420 bytes | the 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 empty | d1547e2b2b8e78d85f05e83b9b0627c1 |
SDDOS33.BIN | 12,308 bytes | the three boot tracks of DOS 3.3. Used by Create disk for DOS 3.3 bootable | 1c657972cff677af8739cf290ff178a7 |
README.md | 2,104 bytes | notes on these files (not needed on the card) | ac7bd0d3173c00d36ba546e2b66adc0e |
| sdcard.zip | 29,128 bytes | the archive with the three files above, in a folder sdcard | cb8928d0103d36d1ececc7f6a3daaad5 |
How the files are named
smartdisk_<board>_[btl]_v<release>.<build>.<type>
for example smartdisk_std_btl_v0.83.17.UF2
| Part | Meaning |
|---|---|
std | standard SmartDisk II board: 0.96 inch OLED, four keys |
xl | SmartDisk II XL board: 1.54 inch OLED, rotary encoder. The two are not interchangeable |
btl | built to run with the bootloader: the firmware starts at 0x08010000, after the bootloader. This is the version for every normal update |
without btl | built 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.17 | release 0.83, build 10. The splash screen shows the same number at power up |
.UF2 | the file you drop on the DISKIIBOOT drive for a USB update |
.bin | raw flash image, for an ST-Link or another programmer |
.elf | the 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
- Back up your settings
CopysdiskConfig.jsonfrom 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. - Take the board out
Unplug the SmartDisk II from the Apple II or the Macintosh and remove the jumpers onJ1andJ7: USB must be the only power source. - 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. - 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. - Drop the firmware on the drive
Unzip the download and copy the.UF2file for your board (stdorxl, alwaysbtl) onto DISKIIBOOT. The bootloader writes it into the flash as the copy runs. - 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:
- Make a folder named
UPGRADEat the root of the SD card. - Copy one
.UF2file for your board into it (stdorxl, alwaysbtl). - 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.
- The file is renamed
.UF2.done(or.UF2.errif 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 press | Press 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 start | Press NRST twice to enter DFU mode and copy the .UF2 file again. |
| The board no longer enters DFU mode | Install the bootloader again with an ST-Link (see below). |
| UPGRADE FAILED after an SD card update | The second line says why: see the bootloader documentation. The installed firmware is kept. |
Nothing happens with the file in /UPGRADE | The bootloader is older than v0.22: update over USB, or install bootloader v0.25. |
| You want to go back to an older release | Do 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.24 | copy 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 bootloader | write 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 pin | Silkscreen | ST-Link |
|---|---|---|
| 1 | 3V | 3.3V |
| 2 | SDIO | SWDIO |
| 3 | SCK | SWCLK |
| 4 | GND | GND |
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