Sansa view player – a tale of two protocols

I’ve had my Sansa View video/mp3 player for well over four years at this point. I don’t actually use it that much anymore, but keep it loaded with content, especially for long trips – mostly as an alternate to the iPod and iPhone, to be honest. It’s very similar to my iPod Nano, actually – a bit bigger, including a slightly bigger screen, but it’s slightly easier to fast-forward on the Nano.

Anyway, I was adjusting the content I had on the View yesterday evening, and that got me fooling around with the two different USB protocols that you can use with it. At first, the View only supported MTP – Media Transport Protocol. Now, the important thing with any data transfer protocol for a slave device, like a media player, is which microprocessor is directly responsible for talking to the device storage. You can’t have both the desktop and the player’s microprocessor reading from and writing to the onboard memory at the same time, because bad things happen if they try to access the same cluster at the same moment.

MTP protocol is the delegation approach – like if the Sansa View is a warehouse, the onboard microprocessor is the stock boy, and the desktop processor is the guy from head office. Here, head office tells the stock boy, “I need you to store A, B, C, give me a copy of D, give me F and not keep a copy, and throw G in the dumpster. Don’t bother me with the details.” And the stock boy does all that.

For whatever reasons, MTP support on the Sansa View was always a little buggy for me – I might copy a bunch of video files over, and one of them would fail. Sandisk released a firmware upgrade that offered the ability to switch into MSC protocol: Mass Storage Class. This is the same protocol that’s used by flash drives, though they don’t really have an onboard processor to worry about. In MSC protocol, the guy from head office tells the stock boy that he’s going to take care of everything and the stock boy doesn’t need to know the details; “just stay in the break room so you’re out of the way.” 🙂

I’ve found MSC mode support very good for videos on the View, but there’s one interesting thing I noticed after I started using it. If I deleted 2 gigs worth of videos through the clickwheel interface on the device, then hooked it up to MSC USB and loaded 2 gigs of video to replace it, the clickwheel menu would still say 2 gigs free. The stock boy is keeping track of free space in the warehouse based on what he sees happening, the new stuff he loads onto shelves or the shelves he clears out. He doesn’t go through the whole warehouse and do a complete inventory of available space unless his on-the-fly count ends up with more than the total capacity of the device free.

This is a little inconvenient, but I was willing to deal with it for a while. At least the View lets me delete from the device, which the Nano doesn’t – though the Nano does show me which videos I’ve finished watching when I plug it into iTunes, and I delete videos off the View when I’ve finished watching them for much the same reason.

Last night I came across a new wrinkle of this little saga. I’ve started using MTP protocol to load music onto the View – because MTP and windows media player is the best way I’ve found to load a playlist of music and actually play the music in the same order that I listed them. But with MTP, Windows media player believed that there was still 3 gigs free on the device, but I knew there was only 300 megs or so. I wasn’t sure what to expect when MTP tried to sync over something that there wasn’t actually room for.

What happened was, Media Player reported those songs as ‘aborted sync’ and stopped talking to Sansa View until I unplugged and replugged it. Sigh. It took a few times until I had the playlist the way I wanted it. (Especially since Media Player will try to load new songs before deleting old ones – whoops!)

This is a good example of how unexpected mistakes have lasting effects when writing software. The arithmetic way of calculating free space as you go made a lot of sense when the View was MTP-only, but it becomes less and less relevant with MSC as an option. Somebody should have thought to include an option to manually rescan the free space based on a full inventory of storage, but nobody thought of that or thought it was important. Sigh.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: