MP3 players, GPL violations, and Rockbox

Recently, as part of my work with Rockbox, I've been acquiring various MP3 players to aid with testing and further reverse engineering work.

Historically, these devices were traditionally implemented using some sort of real-time operating system, but these days all but the lowest-end units are built on top of a customized version of Linux, with the player/interface written as a user space application.

As I type this, in front of me I have five devices that are based on two different Ingenic MIPS-based SoCs. I know of at least five more built on the same underlying Linux software platform, and if you consider "newer" designs that use touchscreen interfaces, there are probably a couple dozen more models to be had -- Not counting those that are built on Android!

The SoC maker (Ingenic) provides the full source code for their reference design platforms, including patches to GCC and modified versions of U-Boot and the Linux kernel. Unfortunately, with one exception [1], none of the device manufacturers even acknowledge that they include GPL-licensed software, much less provide a way to obtain the source code they are supposed to provide.

Why does this matter? I'll leave the philosophical arguments to others, but in more practical terms, without the sources, we can't fix problems in the platform. This isn't a theoretical concern; several of the issues I'm trying to fix on a couple of recent ports are really kernel/driver-level bugs, forcing me to experiment with kludgy workarounds that, due to another kernel bug, forces us to choose between an ear-bursting pop on startup and losing the first two seconds of audio every time we resume from a pause. Bleh.

We would actually prefer to replace the Linux OS with Rockbox's bare-metal OS, allowing us to take advantage of the hardware's full capabilities -- But without sources, we're forced to rely on reverse-engineering, a very time-consuming endeavor which means that the hardware is inevitably obsolete and off the market before we are able to produce a working port.

[1] That one exception is FiiO. On the packaging for their M3K model, they explicitly state that the device contains GPL'd software, and where to go for more information. They also publish their Linux sources on GitHub.

Comments