Skip to content

Instantly share code, notes, and snippets.

@cutrus
Last active January 2, 2026 06:57
Show Gist options
  • Select an option

  • Save cutrus/8da285c9f903812dc8c3edfe0d7ac8c1 to your computer and use it in GitHub Desktop.

Select an option

Save cutrus/8da285c9f903812dc8c3edfe0d7ac8c1 to your computer and use it in GitHub Desktop.
Stupid solution to unbrick Miniware MDP-P906 and MDP-M01 that stuck in DFU mode after firmware upgrade

For some reason I can't upgrade my MDP-M01 and MDP-P906 devices to newest firmware (M01: v2.02 and P906: v3.01).
Using .hex files always results in an error, and using .bin files bricks the devices and leaves them stuck in DFU mode.
This issue occurs for me on both Linux and Windows.

I found that after you get an error (your .hex file gets renamed to an .err file), you can flash the internal controller with any .hex file.
The problem is the available space on the device — there is not enough room to copy the full firmware twice.
So I discovered that you can truncate the original .hex file, trigger the error, and then copy the full .hex firmware again.

For example, for my MDP-P906 with new firmware:

# You can also copy the first N lines to another `.hex` file and copy it to the device.
# I'm not sure if the `.hex` filename matters.
head -n 1000 MDP_P906_v3.01.hex >| /media/cutrus/DFU\ V4_01_D/MDP_P906_v3.01.hex

# Wait for reset device.
# If you see the .err file, copy the full .hex file again:
cp MDP_P906_v3.01.hex /media/cutrus/DFU\ V4_01_D/          

This unbricked my device.

I tested it multiple times and it solved the problem every time. I also confirmed that the first .hex file must be truncated - using an empty .hex file does not work

@ploxiln
Copy link

ploxiln commented Jan 2, 2026

Amazing, thank you!

I needed this trick for my MDP-M01 and MDP-L1060, and got it to work, from modern linux (6.17.9).

First I tried just copying the full hex files to the "DFU drive", with Windows 11 24h2, and couldn't get that to work after a number of attempts. I thought it might, since years ago I was unable to use my regular linux system to update my MDP-P905, but was able to use Windows 10 at that time. (Not surprisingly, this firmware update strategy is really dumb and fragile, as it depends on un-specified details about how the OS decides to write to the filesystem, not just that the result is valid ...)

Then I found some other advice, for the Miniware TS100/TS80P soldering irons: mount as type "msdos" instead of vfat, and rename firmware file to short name like FW.HEX ... also couldn't get that to work (though I only made a couple of attempts). Finally, using this trick (and just letting my cinnamon file manager mount the volume with the default options) worked:

# prepare hex files
head -n200 MDP-L1060_V2.01/MDP_L1060_v2.01.001.hex >FW1.HEX
cat        MDP-L1060_V2.01/MDP_L1060_v2.01.001.hex >FW2.HEX

# use GUI to mount volume (I don't have automount enabled), then:
cp FW1.HEX /run/media/pierce/L1060_DFU/

# volume goes away, use GUI to mount again, see FW1.ERR, then:
cp FW2.HEX /run/media/pierce/L1060_DFU/

# volume goes away, use GUI to mount again, see FW2.RDY

I also tried like head -n200 MDPxxx.hex >/run/media/.../FW.HEX && cp ... and that didn't work on the first attempt 🤷 This isn't to say that all these details are needed or are not needed, but this is the combo that happened to work for me, and I hope helps someone else.

🙏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment