Flash Storage


Has anyone tried to upgrade the Flash Storage in Sonos to get around the 65,000 track library limit?

This topic has been closed for further comments. You can use the search bar to find a similar topic, or create a new one by clicking Create Topic at the top of the page.

11 replies

Userlevel 7
Badge +21
Not that I know of and even if you did add memory it would not change the maximum limit that is set by the firmware.
I would have to assume that later generation speakers have larger amounts of memory. So that would suggest, as Stanley implied, that there's a bit in the software that limits that across all speakers, and it's not just a hardware limitation.
Sonos Technical Support advised the limitation is Flash Storage. They advised the amount of Flash Storage is proprietary. My Flash Storage is in my Connect. I do not have Sonos speakers.
What in the firmware limits the size of the library? Can the firmware be changed.
Userlevel 7
Badge +21
Flash memory is in the Connect, Amps, Speakers and Sound Bars, without it your Sonos would have no place to store your music index, playlists and settings across reboots and power cycles.

What firmware? The Sonos firmware, the stuff that runs the Connect, Amps, Speakers and Sound Bars. Since it is firmware it can be changed, the amount of effort involved would be at least large, you'd have to get the released Sonos source code and then disassemble any of the unreleased bits impacting the storage issue and then recompile with the desired changes. Getting it back into the Sonos components will be another challenge, no clue if they encrypt or sign releases or if there are hardware gateways you'd have to get past. It might prove easiest to lift the flash chips off the motherboard and program them on your bench.

Not a one time job either as you'd have to redo the whole cycle at every new Sonos firmware release taking into account any changes they have made which can be large.

Be a good project if there are any bored electrical engineers with a software engineering buddy that want to try it.

All the above is not considering the DMCA and your legal exposure, not a lawyer and not going there, hire a good one!
What in the firmware limits the size of the library? Can the firmware be changed.

Somewhere in the firmware code is a statement like:

#define INDEX_LIMIT 65000

You would need to change that value in the code, recompile, then find a way to install it on your system in order to increase the limit. Since you have no access to the code, there is no practical way of changing the limit.

Try Plex instead.
I'd always made the assumption it was more of a distributed memory statement. Not a programmer, but more along the lines of "if the sum of the data in these 6 indices is greater than X, then fail". Which would explain why there's failures even when people haven't actually hit 65K, but have too much additional data in the tags. But that's only an assumption.
Userlevel 7
Badge +21
I'd always assumed that the memory is shared for different functions. So the index, firmware, room names and settings, etc are all in there....with left over space for future firmware and features if possible. The limits on memory usage would need to be defined in that case, not based on what space is available. Since the Sonos units all have the same amount of memory (with specific products) there would be no need to programmatically adjust memory limits. So yea, I wouldn't think an upgrade in memory would change the index limit. It would need to also include a change in the code.

But I'm mostly guessing with a limited knowledge of these things.
I'd always made the assumption it was more of a distributed memory statement. Not a programmer, but more along the lines of "if the sum of the data in these 6 indices is greater than X, then fail". Which would explain why there's failures even when people haven't actually hit 65K, but have too much additional data in the tags. But that's only an assumption.

Actually, there are a few limits. iTunes playlist tracks (14K), and limits on tag lengths are two. Others are the number of favorites, and total number of services allowed. The tag lengths play into the 65K limit because if any of the tags are oversized, another element in the index is used to store the overflow. So a single track with an oversized tag takes up 2 indices. So not really a distributed memory model, the limits are the limits, it's just that in the case of the index, the way you can reach the 65K is not as straightforward to the user. However, it is a hard 65K.
Thanks for the extra clarity, sir!
Userlevel 7
Badge +21
If I was coding Sonos in this area I'd have two things, a 65K limit and a maximum size limit.

The 65K limit allows the use of 16 bit pointers, thus conserving memory (@128K additional) that would have had to be used by 32 bit pointers.

The maximum size limit keeps the memory space used by the library data from growing, crossing boundaries and disrupting other data. It also allows the data storage to be statically assigned and not allocated at run time. That simplifies several things for programmers and testers in an embedded device system.