What I did over the past week XIV

Home:

  • Another 10 bags of soggy leaves bagged and hauled off (Total: 90)
  • Cut up more fallen tree bits.
  • Flushed the water heater. Lots of fine silt!
  • Took off the doors to the home office closet, added more shelving, and continued organizing things.

Rockbox-specific:

Lots of rockbox work this week!

  • Purged a little more Archos stuff
  • Exclude audio drivers from bootloader builds
  • Get rid of hacks meant for targets that lack certain keys
  • Land the 'VTX' codec, and enable it on all current FP-capable targets
  • X3ii/X20 get larger default system font
  • Landed the reworked M3K port from xVortex.
    • Decent amount of [re]integration rework
    • Don't yet have ability to generate a patched FW image so it's not actually usable yet
    • Plenty of work still ahead
  • New port to the EROS Q / EROS K players and their clones
    • Including patching stock firmware images!
    • Still needs rbutil integration
  • Many improvements to the "Hiby Linux" platform & bootloader/launcher
    • Much better key mappings
    • On USB attachment, launch last firmware unless ADB is running
    • Allow remounting the SD card
    • Platform-level support for hotplug SD cards and external USB storage (!)
    • Still banging on it before I regenerate patches for rbutil to use
  • Greatly improved auto-mute in the hosted alsa PCM driver. X3ii is nearly sane!
  • Clean up "pivot root" path redirection on most hosted targets.
  • Add ROLO support for hosted targets.

What I did over the past week XIII

Fall has arrived, bringing a bout of very Seattle-esque weather. But I kept the blahs away by getting a lot done!

Home:

  • Hauled away another 10 bags of leaves from the pile (total: 80), and swept up another load. Rain prevented any additional work.
  • Cleaned the gutters and the driveway
  • Installed another shelf in a wardrobe
  • Completely emptied out a large tub of old computer stuff, organizing the worthwhile bits and throwing out the rest. All that remains is to tidy up one final cable snarl.
  • Purchased a "New Model M" keyboard from Unicomp to replace the 25-year-old M that was murdered by a glass of Orange juice just before the COVID lockdown started. The Cherry keyboard I was using in the mean time was decent, but.. the M remains the best keyboard I've ever used. Meanwhile, the 27-year-old M that I've used for every job of my career remains locked away in the inaccessible $dayjob lab.

Vehicular Stuff:

  • Found a large nail in the tire of the RTV while doing yard work, but it didn't actually puncture the knobby off-road tires.

Rockbox-specific:

Lots of rockbox work this week!

  • LUA plugins can now use buttons on iPod external remotes.
  • Fixed audioscrobbler file location on hosted targetsl
  • Continued slicing and reworking the M3K code dump:
    • xDuoo X3ii & X20 gained filter rolloff supportl
    • Alsa PCM driver can now sanely switch sample rates.
    • Support for 176/192KHz playback. (16-bit only still)
    • On hosted targets, turn of LCD when backlight is off.
    • Further cleanup work on the VTX decoder.
    • M3K Port almost ready for merging!
  • Hosted target improvements:
    • Improved LCD and general UI responsiveness.
    • Handle PCM underrun errors when starting a new playback stream.
    • Support muting analog output when PCM is not active (Rocker only for now, X3ii/X20 still have issues)
    • Backlight fading sped up.
  • xDuoo X3ii & X20 audio jacks can be hotplugged at any time now.
  • xDuoo X3ii & X20 keymap and lock switch emulations improved.
  • AGPTek Rocker WPS keymap fixes.
  • Improvements for 176/192KHz audio:
    • Heavily reworked support macros.
    • Larger mixer/DMA buffers.
    • Enabled 176/196KHz all most targets that have HW support and have sufficient free space for expanded buffers.
    • Many bugs will likely be exposed by this addition.
  • Triaged and closed several bug tickets.
  • Set up another build host on an old, slow box.
  • Used Rockbox funds to purchase a new M3K and used Hifiwalker H2 for R&D purposes.
  • Research into various Chinese music players for potential Rockbox porting targets.
  • A lot of thinking and discussions about ensusring Rockbox's long-term sustainability.

Printing-related:

  • Figured out the changes in the recent DNP QW410 firmware (additional paper sizes)
  • const-ified a static data structure

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 userspace 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 philisophical 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.

What I did over the past week XII

I didn't get a whole lot done due to suffering an allergy flareup over the weekend and long $dayjob hours.

Home:

  • Another 12 bags of leaves bagged and hauled off. 70 bags down, and the end is in sight! Unfortunately, this is just in time for...
  • Started sweeping up new leaves. Damnit.
  • Relocated trailer to new parking spot, wheels off the ground
  • Finally vacuumed out my home office.
  • Hauled some stuff up to the tick farm, and brought a trunk of stuff back that needed to be sorted.
  • Started sorting four tubs of miscellaneous cables and parts that have accumulated over the past couple of decades or so.

Vehicular Stuff:

  • Replaced camper's overhead and galley light fixtures.
  • Replaced truck's dome and map lights with new LEDs.
  • Replaced car's dome lamp with a much improved LED.

Rockbox-specific:

  • Got the xDuoo X20 UI simulator working.
  • Started slicing up the xvortex Fiio M3K sources into mergable bits.
  • Lots of discussions on IRC.

Printing-related:

  • Printed out some stuff, but otherwise, nothing.