Welcome to Tesla Motors Club
Discuss Tesla's Model S, Model 3, Model X, Model Y, Cybertruck, Roadster and More.
Register

Slacker Songs restarting - Why?

This site may earn commission on affiliate links.
Ah! Found it, sneaky!

Basically instead of checking any particular car feature, the code just checks (in read state function, so write always works!)

Code:
 if (currentBitRate((SlackerControl *)(slacker) == 40000 )
  {
    ...->playposition = 0LL;
  }
  else
  {
    v51 = QString::fromAscii_helper((QString *)"playPosition", (const char *)0xFFFFFFFF, v13);
    v14 = (QVariant *)QMap<QString,QVariant>::operator[](&v37, &v51);
    ...->playposition = (signed int)QVariant::toInt(v14, 0);
    QString::~QString((QString *)&v51);
  }

So this confirms thetheory that if you enable high bitrate option with slacker premium account, it should change the bitrate not to be 40000 and then the position should be restored.
For premium audio config default bitrate is 128kbps so it does not trigger the offset 0 either.
 
Ah! Found it, sneaky!

Nice work! That's very interesting. Thank you for taking the time to dig into the code.

Despite the repetitive nature of Tesla's standard audio and standard Slacker, I don't see myself springing for a premium Slacker account - especially right now when it can barely get through a couple of songs without a loading error. But that's for a whole other thread.
 
I guess somebody needs to try to check that "high bitrate" checkbox on the slacker login screen with empty or invalid credentials and see if it would still stick ;)

Also I just checked TuneIn podcast code and Spotify and I don't see any similar crippling in there, so seems to be specific to Slacker only.
 
Last edited:
My car a P85D with AP1 manufactured in Dec 2014 will resume songs that are stopped. It didn't do that for several months but an update somewhere along the way fixed that.

Given all of the bugs in media playback you have to thank God that the programmers who do the media playback on Tesla do not also do the AutoPilot programming. If they did we would all be dead.
 
  • Like
Reactions: David29
FYI, my service center got back to me today and told me that resuming is a feature of the premium sound system. They purposefully disable resuming on non-premium.

Not sure how this helps drive people to the premium sound system since it's not documented anywhere and took the SC a month to figure out.
IIRC the premium sound package used to include storage for keeping songs. My car is from 2012 and has premium sound but doesn't have the option to keep music files on internal storage. I wonder if this storage was repurposed in one of the updates, at least in part to allow Slacker to resume songs.
 
IIRC the premium sound package used to include storage for keeping songs. My car is from 2012 and has premium sound but doesn't have the option to keep music files on internal storage. I wonder if this storage was repurposed in one of the updates, at least in part to allow Slacker to resume songs.
There's just no spae on the cid for any meaningful music storage.
You'd have at best 2-3G which is not enough for any serious music collection.

Hm.. just looking around, it seems spotify has a huge cache of something that's the right size for mp3s, but content is something unknown (possibly encrypted?). Either way while the cache is there, it looks like every nee song is still downloaded from spotify itself so the purpose of the bigger cache is kind of unknown (on my car it takes 1.5G and has 500-odd files)

Slacker does not have any such cache, at most there's a single currently playing file in /tmp/
 
  • Informative
Reactions: David29
Ah! Found it, sneaky!

Basically instead of checking any particular car feature, the code just checks (in read state function, so write always works!)

Code:
 if (currentBitRate((SlackerControl *)(slacker) == 40000 )
  {
    ...->playposition = 0LL;
  }
  else
  {
    v51 = QString::fromAscii_helper((QString *)"playPosition", (const char *)0xFFFFFFFF, v13);
    v14 = (QVariant *)QMap<QString,QVariant>::operator[](&v37, &v51);
    ...->playposition = (signed int)QVariant::toInt(v14, 0);
    QString::~QString((QString *)&v51);
  }

So this confirms thetheory that if you enable high bitrate option with slacker premium account, it should change the bitrate not to be 40000 and then the position should be restored.
For premium audio config default bitrate is 128kbps so it does not trigger the offset 0 either.
This sure looks like C++ code to me, which would be compiled into binary. How is it that you are able to see source code?
 
IIRC the premium sound package used to include storage for keeping songs. My car is from 2012 and has premium sound but doesn't have the option to keep music files on internal storage. I wonder if this storage was repurposed in one of the updates, at least in part to allow Slacker to resume songs.
Close— it wasn’t just the premium sound package that was planned to have storage for music files, all of the cars were (or perhaps just tech package which was almost all cars then) but it was never used for that purpose. Tesla decided to use the storage for map cache instead. I think this was in 2013.
 
  • Helpful
Reactions: jmitchell