Joe, what about song limit?
I was just thinking about why there is a song limit and how to get around it.
Most likely the programmer of the x1/3/5 software used an available list-element which keeps all song names / albums / etc in memory. I don't know how much system memory the dual-core processor is equipped with, perhaps 512 MB. The limit was likely introduced because either the list element has a maximum limit or the programmer was afraid of system memory running low.
I can see two solutions to this:
A) use a simple database system with just one table and indexes on album, artist, song name etc. And store the database file on the memory card (Fiio probably uses some variant of Linux - there are free open source database systems available, it just needs to be something very simple).
Then use a list element that does not read the entire list into memory but reads in a flexible way the required records from the database as the user scrolls up and down.
This should be something like the display object called "data window" (that's what it's called in the Powerbuilder environment, but objects like that exist in most programming environments).
Or
B) make it even simpler and just create 3 or 4 plain files on the sd card whenever the song library is uodated in exact sorted order. Link a list element that dynamically reads lines from the required file as the user scrolls up or down. You could very easily program such a list object yourself if it didn't already exist prebuilt.
Class 10 micro sd cards are quick enough so that you don't need to keep all songs in memory to enable a list browsing speed that is sufficiently fast.
If your programmers can't do it, release the source to the public - I'm sure a fiio user would implement this for free...