Finally gave my MPK mini IV a proper brain transplant - custom firmware, stock bootloader untouched

Nov 09, 2026 Last reply: 2 hours ago 5 Replies
Jump to replies (5)

Been chipping away at this for a few months and it's finally in a state I'd let other people near. Full replacement firmware for the MPK mini IV, MIT licensed, zero involvement from Akai. The short version: it turns the thing into an 8-track MIDI looper with scale-locked keys, pads that trigger diatonic chords from whatever scale you pick, an arp, pattern chaining, and a song mode. Also redrew the whole UI from scratch becuase the original layouts were getting painful to stare at. How I got there: the stock firmware image isn't encrypted, so I pulled it apart and mapped the hardware from that. Main chip is an AT32F405 (Cortex-M4F), screen is a small ST7735-type panel driven over SPI with DMA. everythign runs through Akai's own USB update protocol, so no opening the case or touching SWD pads.



Two things I was stubborn about. The flasher checks the bootloader region against a hash and refuses to proceed if it doesn't match stock byte for byte, and shift+undo at power-up still drops you into update mode no matter what. Worst case scenario is you just flash the stock image back and carry on. Also spent a full day moving MIDI clock off the main loop and onto a hardware timer because the screen animations were audibly wobbly. Clock is dead steady now even with the display redrawing constantly.



Repo with hardware notes and the flasher tool:

formatting link
Demos of it running:
formatting link
If anyone has poked around other inMusic units on the same chip family, I'd genuinely like to compare notes. Feels like there's a whole family of these just waiting.


I spent a while messing with similar chips from the same family and that hash verification process you mentioned was definately the biggest headache. I had one unit where the bootloader check was too aggressive and it wouldn't even accept a single byte change unless the initial flash was absolutely perfect. You have to be really careful with the read/write permissions on the flash memory. It seemed like the original developers walled off that region very tightly. On the unit I worked on, wich was a smaller controller, the ST7735 display didn't run as smoothly as expected when the USB data stream was at its highest rate. I found that increasing the clock frequency slightly on the peripheral SPI bus really smoothed out the animations. It made a noticable difference, expecially when the pattern sequencer was running fast. It is interesting how much the AT32F405 family is used across these smaller gear pieces. I think if someone mapped out the memory maps for the entire line, you could probly build a universal flasher tool much faster. Good job putting this togehter.

I acutally hit a similar wall when porting the basic MIDI handling to a different 32-bit chip, but my issue wasn't the boot process like you mentioned. It was more about the real-time demands of the software. When you're generating those scale-locked chords and running the arpeggiator, the CPU needs to handle the timing perfectly without stuttering. If you spend too many cycles on the UI redraw or the peripheral polling, the sequence gets wobbly.

On the unit I was working with, I found that offloading the timing calculations to a dedicated hardware timer was the only way to keep the tempo solid. It stopped being about the general processing power and became purely about interrupt latency. The display updates, while nice, shouldn't have to dictate the rhythmic engine of the device.

I spent a good two weeks tuning the priority queues for the interrupts, making sure the MIDI input and the clock signal were always at the top of the stack. It felt like overkill, but having a perfectly steady clock even when the screen is drawing complex waveforms made the project feel much more stable. Good work getting the whole system running.

This seems like a big job. I've been looking into using similar chips for a few of my own little builds, but my worry was the flash memory recognition after swapping the firmware. It felt like the driver might choke on the new file layout if it wasn't exactly right. Also, since you added all those features, did you notice if the overall power draw changed at all? I'd hate to see any brownouts when the screen is drawing stuff and the sequencer is running.

I ran into a similar wall a few years back when I was porting firmware onto one of those smaller gear pieces. The AT32F405 chip is solid, but if the power rail isn't clean, you're going to see memory corruption no matter how much you tweak the settings. I used a beefier power supply back then, running everything at a steady voltage instead of relying on the flimsy USB power delivery. When you're wrestling with these SPI displays, the physical trace quality on the board matters just as much as the clock speed, so I always made sure to shield the signal path to keep things sharp.

The way you made it into an 8-track looper on that little thing is seriously clever. I always thought those small controllers were relly limited in what they could actually do, so turning it into a proper recording tool like that is pretty cool. Having the keys automatically lock into the scale you pick sounds like it would make playing way easier and sound better right away. It sounds like you just made a really handy tool for anyone who uses these small keys for music. Since you completley redrew the interface, did you have to change anything about how the pads are mapped compared to the original design, or was it easy to just move them around?

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required