Changelog
2.3.8
Released on August 12, 2026
Added
TGSN Full HW Test for NEC
Added the TGSN → TGSN Full HW Test dialog to run the hardware self-test procedure for the hardware used when working with NEC. The test is relevant only for NEC / TGSN Full project participants.
Minimum TGSN version: 3.4.1.
2.3.7
Released on August 11, 2026
Changed
AI Agent integration: IPC → MCP
AI Agent integration has moved from the custom file-based IPC bridge to the standard MultiProg MCP server (Model Context Protocol). External AI clients now connect to MultiProg as an MCP server, discover available tools, and invoke operations through the standard MCP model instead of working directly with agent_request.json / agent_result.json. Internally, it uses the same mp.* Lua API as the Script Console.
2.3.6
Released on August 9, 2026
Added
TGSN Full Pro for NEC / 78K
Added TGSN Full Pro for NEC/78K: a dedicated launch dialog, 3.3V/5V power selection, Start/Stop.
Changed
- Startup update check now uses an asynchronous request with an 8-second timeout.
- Lua example scripts now appear correctly after an update without overwriting user changes.
Fixed
- Custom baud no longer sticks after switching from ESP to another backend.
- TGSN mixed auto/json targets: fixed bootloader FW version display. The version is taken from the signature-parsed target; if valid data is missing,
Bootloader FW version unknownis shown.
2.3.5
Released on June 17, 2026
Added
ESP backend update (USB-UART)
ESP backend update. What's new and improved:
- a COM-port selector (
Auto/ specific port / refresh) and a selectable baud rate — the rate used to be fixed; now you can pick it from a ready-made list115200 / 230400 / 460800 / 921600 / 2000000or set your own viaCustom baud…; default460800; - a Cancel button for long operations — cancel cleanly reconnects to the target and returns the UI to the ready state instead of leaving it locked;
- a USB-UART pin tester (separate dialog): DTR/RTS toggling, a TX/RX loopback check and an RX monitor — helps bring up non-standard boards and verify wiring before flashing;
- byte-by-byte Verify comparison: a byte-by-byte comparison was added — after the block-wise MD5 pass, a mismatch is reported down to the exact differing bytes.
- ESP target configuration: ESP targets can now be configured — create your own ESP target in the Target Configurator. If the selected flash size differs from the detected one, a non-blocking warning is shown.
The headline is read speed. Thanks to updated RAM loaders and running at a higher baud, reads are now several times faster on every family. For example, ESP32-S3 16 MB dropped from ~24 min 31 s (old 115200 path) to ~2 min 46 s (about 8.9×); ESP32-C3 4 MB reaches ~1450 kbit/s at 2000000 (about 9.7× the previous result). 2000000 is not stable on every board/adapter — 921600 is the safe recommendation (ESP32-C6 is stable even at 2 Mbaud).
Per-segment scripting API (Lua) — ESP backend only for now
For cases where firmware is split into segments (e.g. by the partitions in partitions.csv) and only part of it needs updating, not the whole region. The functions mp.backend.read_segment / verify_segment / write_segment / erase_segment(addr, size) operate on a single aligned address range. Implemented in the ESP backend only for now; available both from Lua scripts and over the AI-assistant IPC. Bundled examples live under scripts/examples/esp_segment_*.lua (start with esp_segment_example.lua); the alignment rules are documented in the scripting reference.
STM32 Option Bytes as addressable regions (ST-Link)
The point is correct Option Bytes verification after a write: each OB byte is now checked the right way — writable bytes are verified, while the hardware-managed complement bytes are excluded from verification. To make this work, on the STM32 F0, F1, F2, F3, F4 families Option Bytes are exposed as addressable memory regions at their real addresses — they show up in the buffer and can be edited. OB dumps from MultiProg 2.3.0–2.3.4 are automatically relocated to the new addresses on load, so such files line up by address and need no editing. The OB addressing is also formally compatible with J-Link. For dual-bank F4, the OPTCR and OPTCR1 registers are merged into a single region.
AI Assistant integration (agent IPC)
Added a ping / status handshake for checking the link and current state. The integration itself (a file-based bridge that drives MultiProg through the same Lua API as the Script Console) already existed; enable it via Settings → AI Agent Integration.
TGSN: R8C forced erase via the ALeRASE ID and Protect guard
Added support for the R8C Forced Erase function. If an MCU is locked by an ID code and normal access is impossible (the ID is unknown), you can send the reserved ID ALeRASE: the MCU mass-erases its own user ROM and becomes accessible again. The data is lost in the process — that's expected; it's an "unlock by erase".
ALeRASE is 7 ASCII bytes (case matters: A L e R A S E):
41 4C 65 52 41 53 45
How to run a forced erase:
1. Enter the ID "ALeRASE" in the ID selector
2. Connect again — on an MCU that is not ROM-code-protected it erases and unlocks
- Works only on the R8C/3xC generation (e.g. R8C/32C, 33C, 35C, 36A/36C/36M/36T-A, 38C, 38W·X·Y·Z); older R8C/1x and R8C/2x do not have this function.
- Guarded against accidental erase: on Special Read, if the ID recovered from the MCU turns out to be
ALeRASE, MultiProg refuses and does not feed it back — a read operation will not erase the MCU. An erase only runs deliberately — from a user-entered ID. ALeRASEis not always enough. Forced erase is gated by ROM code protect (theROMCR/ROMCP1bits of the OFS register). If ROM code protect is enabled and the stored ID is notALeRASE, the MCU refuses the erase and MultiProg reports “ALeRASE refused: ROM code protect enabled” with the raw status bytes — such an MCU cannot be force-erased over serial.Protectis a different mechanism from ROM code protect. TheProtectreserved ID word disables serial/OCD communication entirely (the MCU goes silent); TGSN also always rejectsProtectas an ID you send. ROM code protect is a pair of OFS bits that leave the MCU talking but block the erase.
See R8C Protection Types for all R8C protection mechanisms and which states are recoverable.
Requires TGSN firmware 3.3.7 or newer.
Changed
- ESP reconnect reuses the live session instead of closing and reopening the port — fixes occasional open-hangs on native-USB chips (S2/S3).
- Startup update check hardened, with a notification when an update is available.
Fixed
- ESP first connect occasionally failed with "Can't read target id" right after sync — the chip-id read is now retried.
2.3.4
Released on June 2, 2026
Changed
Reading All Targets STM32/FM3/FM4 with New RAM Agent (ST-Link)
All microcontrollers from the STM32/FM3/FM4 families have been transitioned to the new reading agent with dual CRC checking.
Options Bytes (OB) STM32 (ST-Link)
Now, if OB = 0xFF (empty buffer), they are not written and consequently do not pass the post-write verification. All OB regions are address-compatible with J-Link files.
Data-Flash Check FM3-FM4
Targets FM3-FM4 now issue a warning in the log about unstable behavior of D-Flash (Work-Flash). If you receive a warning in the log: [WARN] D-Flash unstable read at ..., it is a 100% guarantee of a corrupted firmware (or rather, a hanging D-Flash write).
Additionally, a signature check (jep106) has been added for MB9BF168R/S6E2HE6G, with a warning in case of an error.
S6E2HE6G - Added RAM Agent for Writing (RAM-Loader)
The writing speed is now the same as that of MB9BF168R.
Fixed
HCS08 Pinouts
Issues with the pinout of some HCS08 have been corrected.
2.3.3
Released on May 16, 2026
Added
TGSN Installer — updated install flow
- Install from MultiProg only — no WiFi setup on TGSN. Internet is only required on the MultiProg computer; the TGSN itself no longer needs WiFi or authorization for installation. Two-stage process by default. Useful at sites with poor WiFi. The installer is focused only on installation; if WiFi on the device is still needed (for example, for subsequent updates via the Update menu directly on TGSN) — this is done separately via
TGSN → TGSN Configure WiFi. - Status row with the current state. On the programming page you always see the firmware version, git hash, current stage and sub-step. On completion — "Complete" / "Done" or "Failed: <reason>".
New example scripts
renesas_nec_targets.lua— outputs the list of NEC 78K0/xx2 targets with memory size. Originally written for our own task; left in the package as an example of accessing the targets database from Lua.- Lua script to clear statistics on FM4 boards (Cypress/Spansion MB9BF168R or S6E2HE6G) — added as an example. Clears Work Flash from
0x200C4000to the end of the region and preserves a service marker at0x200C5FFE(writes0xA5if empty, otherwise keeps the original byte). Full Connect/Read/Erase/Write/Verify cycle, restricted to supported targets.
Programmer utilities (drivers and firmware in the bundle)
- Drivers and firmware updaters are now part of the MultiProg installer.
- ST-Link:
STSW-LINK009(USB drivers) +STSW-LINK007 v3.14.5(firmware updater; v3.14.5 specifically — because this version also supports non-original ST-Link). - USBDM:
USBDM_Drivers_4_12_3_Win_x64.zip(drivers) + a trimmed-down build ofFirmwareChanger.exe(~9 MB) for reflashing JS16/JB16 + bootloaders +FlashImages/DeviceData. Only what's needed for reflashing JS16/JMxx is taken from the 183 MB original MSI.
- ST-Link:
- Unpacked into the user profile:
%USERPROFILE%/KuragaTech/MultiProg/programmer_utils/— a regular user doesn't need administrator rights. - You can open the required folder directly from the error window: on typical ST-Link/USBDM errors ("firmware too old", "Programmer not found", "libusb error", "Unsupported USBDM programmer", etc.) the dialog shows an "Open ST-Link/USBDM Utilities" button — opens the corresponding folder in Explorer.
- If the folder is empty — a clear "missing" message with a hint is shown.
License — license modules table
- A "License Modules" table appeared in the License dialog — what the license includes (which families/functions) is now visible.
- The table shows
ST-Link(exact module name).
FM3 / FM4 connection diagnostics (ST-Link)
- Flash size next to the target name in the info panel, e.g. "MB9BF168R · 1024 KB". Helps reliably distinguish FM3/FM4 models with the same prefix — these families don't have a chip-ID register, and when the chip marking is hard to read, the flash size becomes an additional reference point.
- Classifier of "won't connect" reasons for FM3/FM4. Typical scenarios are recognized:
- VTGT / no target power;
- USB stall on ST-Link (
libusb error -7) — hint "Unplug and replug the ST-Link"; - Floating SWD bus (signature
DHCSR=0xFFFFFFFF) — broken SWDIO/SWCLK/GND wire or swapped wires; - No MCU detected. Empirically confirmed across 6 different wiring variants.
- Warning on flash size mismatch now explains the context: "FM3/FM4 have identical part-number prefixes, no chip-ID register, writing may damage the firmware" — the user can see why it's worth stopping and re-checking the selected target.
TGSN: Self-update via the Update menu
- The
Updatemenu on the device updates the firmware over WiFi again — without MultiProg, directly from TGSN. - Update is available independently of the initial install via MultiProg. If the initial install through MultiProg hasn't been done on this firmware version, Update will still work (previously in that case it refused and required first running the install from MultiProg).
- Animated WiFi-connect loader in Update.
- Color verdicts by result:
- 🟢 "WiFi connected";
- 🔴 "WiFi timeout" (failed to connect to WiFi);
- 🔴 "Update Failed" (firmware didn't roll out);
- 🟠 "not needed" (current version, nothing to update).
Fixed
RL78 pinouts
- RL78/L12 and L13: pinouts split into separate sub-families.
- RL78/G1C and G14: base pinout unified across sub-families.
- RL78/G13 LQFP-64 (R5F100Lx / R5F101Lx): pinout updated.
R8C/10–13 — verified on the MCU in Mode 2
- LQFP32: pin CNVSS added on the connection diagram (mandatory for Mode 2).
- XIN/XOUT crystal: the requirement for an external crystal for Mode 2 is explicitly shown on the diagram — the user immediately sees that without it the setup won't start.
NEC 78K0 connect (TGSN side)
- Connect ~24 % faster. On a uPD78F0534 @ 5 V bench across 100 connect cycles the per-cycle time dropped from 449 ms → 388 ms. The baud switch on connect was optimized: the host immediately tunes to the bootloader's current baud and sends
OSC_FREQ_SETin a single pass.
RL78 (TGSN side)
- Improved error messages for RL78 Connect. When baud autosearch fails, a specific string appears in the MultiProg window: which step failed (
baudrate_set,OCD sync,OCD ping,reset,Signature/iverify,Checksum), at what baud it tried, what the chip responded — and a short hint of what usually helps (check power, ground, RESET, frequency, pick a different baud). If autosearch ran through all bauds and none worked — a single consolidated message with the most informative error is shown. - 5V-REGC echo fix. On RL78 with REGC > 3.3 V at 5 V supply (when MultiProg is set to 5 V and the RX→REGC wiring is used) the Flash Controller check at the baud-search step is now skipped: on failure the operation continues, and a warning is logged:
5V REGC: Flash Ctrl off — expected (REGC>3.3V), proceeding.. Previously this check was treated as fatal and the connection was aborted.
2.3.2
Released on May 13, 2026
Added
- ST-Link target configuration — added the ability to configure targets in ST-Link families via Target Configurator.
- Updater for 2.2.57 → 2.3.x — when a legacy MultiProg attempts self-update, a dialog shows a link to the new 2.3.x installer and system requirements.