Reverse Engineering the Firmware of an MP3 Player with LLMs

uneven94341 pts0 comments

- The Story Behind Reverse Engineering the Snowsky Echo Mini Firmware

I have always had a strange obsession with the media we use to store music. Back in elementary school I loved using our home tape recorder to make mix tapes. It left me with so many good memories. These days my dream is to own my own cassette Walkman.

But this is not easy to pull off. Walkmans are expensive and come with plenty of headaches. (My birthday wish this year was that some kind friend would gift me one. But I know you would call me shameless for even thinking it.)

To fill that deep consumerist void, half a year ago I settled for buying a Fiio Echo Mini. It is an MP3 player designed to look like a mini cassette machine.

This Device Is Pretty Bad

After using it for a while I developed some complicated feelings. It is decent in some ways, but the overall execution is terrible.

The most painful thing to look at is that large pixelated screen. Fifteen years ago you might have considered it an average display. But in 2026, staring at that screen just feels odd. Even if the screen is pixelated, good visual design (like authentic retro pixel art) could have turned it into an advantage. The real problem with this device's design is its awful UI. The moment you power it on, a distorted face resembling an old man squinting at his phone on the subway slaps you right in the face.

I keep complaining to my friends that the designers must be young kids. The mistakes they made in design execution are ridiculously bad. Every single icon is completely unaligned to the pixel grid, so everything looks blurry.

In case you do not know, back when older designers were working, screen resolutions were low. To keep images sharp and clear they would avoid placing points on half-pixels that cause sub-pixel smoothing. The problem here is that many icons are very small. They blur into indistinguishable blobs. You stare at them forever with your head full of question marks: What the hell is this supposed to be? The most absurd part is that while the icons are blurry, the text is rendered with crisp pixel fonts.

For example, when you are upgrading the firmware the screen shows an interface drawn with ugly Zhongyi Black and Song fonts. The prompt text is not even centered on the screen! In daily use, if you switch the language to French you will notice that accented letters and regular letters have different sizes. All the characters end up at uneven heights.

There is something even more surreal. All the bitmap UI assets look as if they were exported in a lossy format, converted to BMP, and then embedded into the firmware. Every texture has a mysterious white outline around the edges between light and dark areas. The details are filled with compression artifacts and noise. In short, combined with the mediocre physical controls, using the device becomes physically and mentally uncomfortable.

Of course it has its good points. It looks cute and it is very small. You can carry it around as a social conversation piece. My favorite feature is that it has two headphone jacks! One balanced output and one standard 3.5mm jack. They can even work simultaneously! It reminds me of sharing a single pair of headphones with friends back in school. Now with this device you can share music with three other friends at once. Four people jamming together is hilarious.

There are also some even crazier ways to use it.

As we all know, Sony noise-cancelling headphones basically crank the bass to the maximum and blast your head while the high frequencies sound muddy and unpleasant. I happen to have a pair of flathead IEMs (the YINCROW model I recently bought). They handle highs well but lack bass. So the question became: Can I let one handle the highs and the other handle the lows?

To boost the bass I set Clear Bass all the way to +10. The flatheads ran without any extra EQ.

When I wore both headphones at once (flatheads inside my ears with the XM3s over them) and took turns unplugging one, something interesting happened. Unplugging the Sony made the sound instantly thinner. The guitar harmonics were still there but the low-frequency body resonance disappeared. Unplugging the flatheads made everything turn muddy as the Sony's dullness became obvious. When both played together, real music finally appeared.

But this setup has its costs. The output phases do not match, which makes the sound feel particularly dead. It is like swimming in a concrete pool. The sense of space suffers greatly.

The atmosphere is like this: The hardware is good but the software is bad. And the badness is very consistent and complete. Not only is the UI design bad; the engineering practices are also bad. I will talk about that later.

Later on I got so annoyed (actually I was not that angry, just had an idea) that I started trying to mod the firmware.

Firmware Modding

First Exploration

I have almost no experience with reverse engineering. The last time I did anything like this was in junior...

firmware even screen like engineering good

Related Articles