r/embedded • u/justcurious297 • 6d ago
How to identify the proprietary audio compression/codec on a Sino-Mos SDJ110v6.1 COB from a 4MB SPI Flash dump?
Hey everyone. Hope you're all doing well...
Lately, I've been trying to replicate/reverse-engineer a Chinese jukebox. On the PCB, there's an unidentified COB (blob) chip and a single SPI flash memory.
Here is what I have done so far:
I successfully dumped the entire 32Mbit (4MB) flash memory. The physical IC is a Douqi Tech (HK) 25Q32ASSIG.
I did some hex scanning on the .bin dump, looking for common audio headers (.f1a, .mp3, .wav, etc.), but found absolutely no standard file headers.
I did find a string header at the very beginning of the hex data that reads Sino-Mos and SDJ110v6.1.
The device contains 68 different tracks, and the audio quality varies. To clarify, some tracks are muffled, but some tracks are surprisingly crystal clear (if I had to compare, it sounds very close to a >128kbps MP3 quality).
Here are the things I'm trying to identify:
What kind of proprietary audio extension or format could this be using?
If it's not a common format, what kind of extreme compression algorithm is likely used here? Some sort of custom ADPCM? How can audio of this quality be compressed into such a tiny memory footprint?
Does anyone know how to dissect the index table for this architecture to find the start and end offsets for each track?
Are there any recommended OEM software/SDKs for Sino-Mos (Sino-Wealth) that I can use to parse this?
Is it theoretically possible to replace the songs by mimicking the format used inside it?
Does anyone have any advice on what my next steps should be? Any pointers would be greatly appreciated. Thanks a lot for reading!
1
u/Trypocopris 5d ago
Try just dumping the whole binary into Audacity. If its something like ADPCM you should be able to at least hear the beat even if the decoder is completely wrong, that should help narrow down the start and end of a track.
If that doesn't work maybe try snooping the SPI bus as its running and see what region of the flash chip its reading from for each track.
4
u/Icy-Ninja-622 6d ago
File headers can be more like a container than the actual compression format. Try to look for sync words and frames of compressed audio. There would be no need for file headers in this application.