This is the start-here guide for using KickSmash from a Windows host. It takes you end-to-end, from a USB cable in your hand to a board that is flashed, configured, and ready to install in your Amiga, with the exact command lines to type at every step.
This guide covers: a Windows 10/11 host, a KickSmash board that already has its STM32 firmware loaded, flashing a Kickstart ROM image over USB, and configuring the board's banks. It stops at "board configured and ready to install" and hands off to the hardware-install documents for the physical installation in your specific Amiga.
This guide does not cover: loading the STM32 firmware (see
hw_programming.txt), building the software from source
(see DEVENV.md / sw_build.txt), the AmigaOS-side
smash workflow (see AMIGACLI.md), or Linux/macOS hosts. Those
paths are pointed to from the Extended Reading index at the
end, not walked here.
The host-side flow below is the same for every supported Amiga model. Only
two things vary by machine: the byte-swap mode (the A3000/A4000 examples here
need no swap flag; some models do) and the physical install. Where a model
difference matters, this guide points you to WHICH.md. All worked
examples target the Amiga 3000.
You'll do eight things on the host, then hand off to the hardware-install docs. Everything below is one of these steps.
- Confirm KickSmash enumerates over USB.
- Fix the Windows COM-port driver (the Code 10 / Code 28 stumbling block).
- Download the
hostsmashrelease binary and open a terminal in its folder. - Make first contact and run a health check.
- See what's already on the board's eight banks.
- Prepare (and sanity-check) your Kickstart ROM image.
- Write and verify the ROM into a bank.
- Name the bank and set the power-on default.
Then, with the host-side work done, you hand off to the hardware-install docs for your specific Amiga (the boundary of this guide, covered in step 9 below).
A Troubleshooting section and the Extended Reading index follow the steps.
Before step 1, gather all of the following so you don't discover a gap mid-flow.
| Need | Detail |
|---|---|
| KickSmash board | Firmware already loaded. It must enumerate as VID 0x1209 / PID 0x1610, product "KickSmash Prg" (see step 1). |
| An Amiga | A3000 or A4000 for the examples here. Other models work; see WHICH.md. |
| USB-C cable | Clearance near the ROM sockets is tight; see usb_cables.txt for fit notes. |
| Windows 10 or 11 | Newer Windows 11 builds (24H2/25H2) have driver nuances; see windows_notes.txt. |
hostsmash release binary |
The git checkout has no prebuilt binary. You download it from a GitHub release (step 3). |
| A plaintext Kickstart ROM | Not Cloanto-encrypted. You must be licensed to use it (e.g. an Amiga Forever A3000.47.115.rom). Step 6 shows how to check. |
wdi-simple.exe |
The Windows driver installer. Obtained during step 2 (download link there) -- nothing to do up front. |
Two things in every command below are placeholders you must replace with your own values:
com5-- your actual COM port number. Find it in step 2. It is bound to the-d(device) option, so it always appears as-d com5.A3000.47.115.rom-- your own ROM filename. Unlike the COM port, the ROM filename is a positional argument: it is not bound to-w. The order of-b,-w,-v,-y, and the filename is flexible, which is why the other docs show forms like-wv A3000.rom -b 0. Wherever you see this filename, substitute yours.
Only one hostsmash session can hold the KickSmash serial port at a time.
If you have a terminal session open (a -t interactive session), close it
(Ctrl-X) before running the next command, or the next command will fail to
open the port.
If your device shows up as a DFU device 0483:df11 instead of 0x1209 /
0x1610 "KickSmash Prg", the firmware is not loaded. That is out of scope
here; see hw_programming.txt and the DFU section of
windows_notes.txt.
Plug the KickSmash into your PC with the USB-C cable. Open Device Manager.
You are looking for a "KickSmash Prg" device (VID 0x1209 / PID 0x1610).
Before the driver is fixed it usually appears under Other devices, and a
related serial interface under Ports (COM & LPT) shows an error status. That
error is exactly what step 2 fixes.
This is the single biggest Windows-only stumbling block. Windows ships a generic serial driver, but it often does not bind to KickSmash automatically.
Symptom. In Device Manager, the COM interface shows:
This device cannot start. (Code 10)
A device which does not exist was specified.
and a second interface may show Code 28 ("The drivers for this device are not installed.").
Fix. Download wdi-simple.exe:
https://github.com/rogerclarkmelbourne/Arduino_STM32/blob/master/drivers/win/wdi-simple.exe?raw=true
Open an elevated (Run as administrator) command prompt and run:
wdi-simple.exe --vid 0x1209 --pid 0x1610 --type 3 --name "KickSmash Prg" --dest "maple-serial"
Then unplug and replug the board.
Result. KickSmash now appears under Ports (COM & LPT) as
"KickSmash Prg (COM5)". Note the COMx number shown -- that is your port. It
replaces com5 in every command below. Windows displays the port uppercase
(COM5); the commands type it lowercase (com5) -- they are the same port. If
Windows shows COM7, type -d com7 everywhere this guide shows -d com5.
If you have
wget, thewdikicksmash.batscript in the releasesw\folder runs the download and install in one shot. Seewindows_notes.txt, which also documents the STSW-STM32102 fallback for older Windows and a COM-port-arbiter trick to keep the same COM number across multiple boards.
The host utility is not in the git checkout. Download the official GitHub release:
https://github.com/cdhooper/kicksmash32/releases
Download the release zip (we used release_2.0, whose asset is
kicksmash_2.0.zip) and extract it. Inside, the Windows binary is at:
sw\hostsmash_win64.exe
The zip also carries linux, mac, pi, and win32 builds -- ignore those on
Windows 64-bit.
Open your terminal in the extracted sw\ folder so the commands below work
exactly as typed. In File Explorer, navigate into the extracted sw\ folder,
then Shift + right-click an empty area and choose "Open PowerShell window
here" (or "Open command window here"). Alternatively, add the sw\ folder to
your PATH.
Sanity check (works with no device attached -- help prints before the serial port is opened):
hostsmash_win64.exe --help
You should see the usage text listing options like -d, -w, -v, -b,
-t, and -y.
Confirm the host and board can talk, and that both flash chips are healthy, before writing anything.
Ask for the firmware version:
hostsmash_win64.exe -d com5 -t ver
Expected output:
Kicksmash 32 Version 2.0+ built 2026-05-30 00:15:38
CPUID=411fc231 Dev=0418 Rev=1001 Flash=256 KB
STM32F1 Connectivity revision Z
HCLK=72 MHz APB1=36 MHz APB2=72 MHz
Power-on reset
Valid config at 3e300
Connected: !A17 !A18 !A19 !D31 !KBRST Flash0 Flash1
Prom 000122d2 000122d2 M29F160FT M29F160FT
Standalone
CMD> ver
Version 2.0+ built 2026-05-30 00:15:38
Bench note on the Connected: line. The ! prefix on each signal
(!A17 !A18 !A19 !D31 !KBRST) means those Amiga bus signals are not
asserted. That is normal and expected when the board is on the bench (not
installed in an Amiga). All-! here is healthy.
Check the flash chips directly:
hostsmash_win64.exe -d com5 -t "prom id"
Expected output:
000122d2 000122d2 M29F160FT M29F160FT
Two matching IDs means both flash halves are present and healthy. (-t
takes a quoted firmware command; multi-word commands like "prom id" must be
quoted.)
Remember the single-owner rule: if you opened an interactive
-tsession, exit it (Ctrl-X) before the next command.
The flash is 4 MB total, divided into eight 512 KB banks (banks 0-7).
-b N selects bank N. Vendors often pre-flash DiagROM and a ROM Switcher into
banks 6 and 7.
hostsmash_win64.exe -d com5 -t "prom bank show"
Representative output:
Bank Name Merge LongReset PowerOn Current NextReset
0 Kick3.2.3 *
1 Kick3.X
...
6 DiagROM
7 ROM Switcher 0 * *
The columns are Bank, Name, Merge, LongReset, PowerOn, Current, NextReset. This is the layout you are about to modify.
KickSmash flashes a plaintext Kickstart image. It cannot use a Cloanto-encrypted image directly.
- A valid native Kickstart begins with bytes
11 14 4E F9(older 256 KB-class images may begin11 11 4E F9). - A Cloanto-encrypted image instead begins with the ASCII string
AMIROMTYPE1. These must be decrypted first (via Amiga Forever or amitools) before flashing.
Check your file's first 16 bytes in PowerShell:
Format-Hex -Path .\A3000.47.115.rom -Count 16Read the output's first row:
- Starts with
11 14 4E F9(or11 11 4E F9) -- plaintext, good to flash. - Starts with
41 4D 49 52 4F 4D 54 59 50 45 31(AMIROMTYPE1) -- encrypted; decrypt it first.
Version, for the curious. Header bytes 12-15 encode the Kickstart version
as major.minor. For example, A3000.47.115.rom has bytes 12-15 =
00 2F 00 73 = 47.115 = AmigaOS 3.2.3.
This is the core action: one command to write, one to verify.
Write the image into bank 0:
hostsmash_win64.exe -d com5 -b 0 -w A3000.47.115.rom -y
Expected output (the percentage line is abbreviated here):
Auto swap mode: 32, Swapping 3210, Length 0x80000
Erase area before write?: yes
Erase sector(s) from 0x0 to 0x80000: yes
...
Writing 0x080000 bytes to EEPROM starting at address 0x0
0% ... 100%
Wrote 0x80000 bytes to device
About auto-swap. For a recognized A3000/A4000 ROM, hostsmash auto-detects
the byte order and applies swap 3210 for you, so you do not need a -s
flag. The banner reads Auto swap mode: 32, Swapping 3210 -- note it says
32 (the 32-bit mode), not A3000. (Some older docs show A3000 here;
that text is stale.) This banner appears on both the write and the verify
step. The -y answers the erase/write prompts automatically.
Model note: the A3000T uses a swapped layout and needs
-s 1032. SeeWHICH.mdfor which models need a swap flag. The A3000/A4000 examples here need none.
Verify the write:
hostsmash_win64.exe -d com5 -b 0 -v A3000.47.115.rom
It re-reads the bank, compares against your file, and ends with:
Auto swap mode: 32, Swapping 3210, Length 0x80000
...
Verify success
Give the bank a human-readable label (used by the ROM Switcher and
prom bank show):
hostsmash_win64.exe -d com5 -t "prom bank name 0 Kick3.2.3"
Choose what the Amiga boots at cold power-on. To boot bank 0 directly:
hostsmash_win64.exe -d com5 -t "prom bank poweron 0"
To instead get the ROM Switcher menu at power-on, set the power-on bank to the switcher's bank (commonly 7):
hostsmash_win64.exe -d com5 -t "prom bank poweron 7"
The setting persists to the board's config (you'll see a config write at ...
line). Re-run prom bank show (step 5) to confirm the PowerOn column moved.
The board is now flashed, named, and configured.
Physical installation varies a lot by model and motherboard revision -- too many
variations to cover exhaustively here. Find your specific board and Amiga in
WHICH.md, then follow hw_install.txt for the
full procedure. The short A3000 checklist below is a heads-up, not a
substitute for those documents.
A3000 quick checklist (verify against your board's revision):
- ROM speed jumpers: set J151 and J152 to 1-2 (25 MHz operation) so the CPU can talk to the STM32 reliably.
- KBRST wire: connect the Amiga's KBRST signal to the KickSmash KBRST pin. On the A3000, KBRST is at RP701 pin 6 or U713 pin 1.
- ROM Tower: older A3000 boards (rev -- 7) require a ROM Tower adapter;
see
WHICH.mdand the A3000 ROM tower replacement. - Orientation and other models: the USB connector orientation and KBRST pin
differ per model. Defer to
WHICH.mdandhw_install.txtfor your exact board.
That is the end of the host-side workflow. Hand off to the hardware docs above to put the board in your Amiga.
| Symptom | Fix | More |
|---|---|---|
| Driver Code 10 / Code 28 | Run the wdi-simple.exe command in step 2, then unplug/replug. |
windows_notes.txt |
| Command can't open the port / "port in use" | Only one session owns the port. Close any open -t session (Ctrl-X) and retry. |
This guide, step 4 |
| Wrong COM port | hostsmash can't open the device. Re-check Device Manager -- Ports for the current COMx. |
windows_notes.txt |
| hostsmash rejects the image / reports an unrecognized ROM format | The image is Cloanto-encrypted (AMIROMTYPE1 header) or otherwise not a recognized layout. Decrypt or obtain a plaintext image and re-check the header is 11 14 4E F9 (step 6). |
This guide, step 6 |
0%Remote sent error 78 / CRC errors |
Communication failure. Capture a log with setx TERM_DEBUG out.txt, then re-run; try a pacing delay with -D <msec>. |
windows_notes.txt, sw_hostsmash.txt |
| Erase error during write | Usually the Amiga is powered off / KBRST not connected when programming an installed board, or a locked flash block. On the bench this should not happen. | sw_hostsmash.txt |
On the exact unrecognized-ROM wording: hostsmash prints a message of the form
Unrecognized Amiga ROM format:followed by the first four bytes it read. Treat any such rejection as "wrong/encrypted image" and return to step 6.
The documents below are grouped so the read order is obvious: start here,
then host programming, then on the Amiga, then hardware, then
reference / off-path for builders and firmware developers. Image files
(*.jpg, *.png) in doc/ are illustrative assets referenced by these
documents, not standalone reading.
| Document | What it covers | Read this when |
|---|---|---|
getting_started_windows.md |
This end-to-end Windows flashing + configuration walkthrough. | You are on Windows and want the literal commands to flash a ROM. |
FAQ.txt |
Why KickSmash exists, supported models, and a worked "program a new ROM and switch to it" recipe. | Background on why KickSmash exists -- optional before you start; useful for the program-and-switch pattern. |
WHICH.md |
Which KickSmash board fits which Amiga, socket spacing, install orientation, KBRST pin per board, ROM-tower note, and per-model swap flags. | Before buying or installing -- confirm your board and model. |
| Document | What it covers | Read this when |
|---|---|---|
sw_hostsmash.txt |
The authoritative host-utility reference: every flag, byte-swap modes, read/write/verify/erase, file serving. | You need a flag this guide didn't use, or deeper detail on swap modes. |
windows_notes.txt |
Windows COM-port driver fix, DFU on Windows, hostsmash debugging, COM-port arbiter trick. | On Windows when the device won't talk or you're scripting multiple boards. |
sw_install.txt |
Installing firmware updates (reset dfu) and copying the Amiga-side utilities. |
After hardware programming, before Amiga-side use. |
sw_kicksmash.txt |
The KickSmash firmware CLI command set (what -t "..." commands exist). |
You want the full set of prom ... and other firmware commands. |
| Document | What it covers | Read this when |
|---|---|---|
AMIGACLI.md |
Screenshot walkthrough of the AmigaOS smash bank show/write/name/verify flow. |
You want the in-system (Amiga-side) equivalent of this guide. |
SWITCHER.md |
What the ROM Switcher is (1.3 linked vs. 1.5+ stand-alone) and how to set it for power-on / long-reset. | You want a boot menu to pick ROMs. |
sw_smash.txt |
The AmigaOS smash utility reference for in-system programming and switching. |
Programming from the Amiga itself. |
sw_smashfs.txt |
The AmigaOS smashfs auto-mount filesystem for host-exported volumes. |
Sharing files between host and Amiga. |
sw_smashfsrom.txt |
The ROMable variant of smashfs. |
Embedding the filesystem in a ROM. |
sw_smashftp.txt |
The AmigaOS smashftp file-transfer utility. |
Moving files between host and Amiga. |
| Document | What it covers | Read this when |
|---|---|---|
hw_install.txt |
Physical install: KBRST wiring per model, ROM-speed jumpers, board orientation, post-install debugging. | Putting the board into the Amiga (step 9 hands off here). |
hw_programming.txt |
Loading STM32 firmware via ST-Link or USB DFU, plus the stand-alone pin / prom id health check. |
Firmware is not yet loaded, or you're building a board. |
usb_cables.txt |
USB-C cable fit recommendations for the tight ROM-socket clearance. | Sourcing a cable. |
| Document | What it covers | Read this when |
|---|---|---|
hw_build.txt |
PCB fabrication and build tips for manufacturing the board. | You are building the board, not using a finished one. |
DEVENV.md |
Building all the software via the VSCode devcontainer (Docker/Fedora). | Compiling firmware/utilities/host tools from source. |
sw_build.txt |
Build prerequisites and packages (including Raspberry Pi) for compiling hostsmash. | Building the host tools from source. |
release_notes.txt |
Per-release changelog (firmware / Amiga / host). | Checking what changed in a given release. |