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

Factory OEM SiriusXM nearly working in Tesla 2022 Model 3

This site may earn commission on affiliate links.
TLDR; If this approach to external decoding would work, the user experience under these conditions would appear and sound like a fully integrated OEM SiriusXM experience using the Tesla SiriusXM OEM tuner with all controls using the native Tesla MCU SiriusXM client.


Another thought to a Ryzen solution: The part that is working is the UI interface, and the control plane of sending tuning commands to the tuner, and receiving control data back (confirmation of stream selection as well as song ID, etc). Can we use this part, which is 90% of the integration we want and solve the audio decoding externally? Tesla has done us a favor with the fallback behavior playing the audio stream of the last tuned FM station. Were we to decode the SiriusXM audio stream likely on the Broad R ethernet properly tuned already, we could just take the decoded analog signal and put it through an FM modulator whose audio is already playing through the MCU driven speakers in fallback to FM. The user experience under these conditions would appear to be a fully integrated OEM SiriusXM experience using the Tesla SiriusXM OEM tuner with all controls using the native Tesla MCU SiriusXM client.

I handwaved away the hardest and most unknown part: External decoding of the SiriusXM audio stream


However it looks like we have some pieces to start with stutech posted this response in this thread back in April 2023 to a separate question I asked.




Good start! So what does audio encoded on Broad R look like? A quick read of this chapter...


...suggest:

"We focus on the current solutions for audio/video communications, i.e. Ethernet audio video bridging (AVB) specification. This specification has adapted Ethernet technology to meet electromagnetic constraints (EMC) specific to the automotive domain, and at the same time reducing the number of wires required to communicate (only one twisted pair in the current specification for at a throughput of 1 Gb/s instead of four). We review Physical (Broad R-Reach PHY) and Ethernet MAC layer in that perspective. Several new protocols including: clock synchronization (802.1AS gPTP), stream reservation and transmission protocols (IEEE 802.1Qat SRP and IEEE 1722) have been developed, and new mechanisms for forwarding and queuing frames have been proposed."

Key words I'm picking out here are these protocols: IEEE 802.1Qat SRP and IEEE 1722

Stream Reservation Protocol:






This matches the description of how IEEE 802.1Qat SRP seems to work. IEEE 802.1Qat SRP and IEEE 1722 along with a number of other protocols appear to be all wrapped up in a larger standard called AVB (Audio/Video Bridging):





That "weird non-encrypted binary format" feels like it might be the AVB stream. So how do we take this stream and decode it externally? There appears to already be work on support with GStreamer and ALSA in Linux. Including a sample implementation of Talker AND Listener! Here: Getting Started with AVB on Linux* — TSN Documentation Project for Linux* 0.1 documentation

[/B] gst-launch-1.0 clockselect. \( clock-id=realtime \ avtpsrc ifname=eth0.5 ! avtpcvfdepay streamid=0xAABBCCDDEEFF000A ! \ queue max-size-bytes=0 max-size-buffers=0 max-size-time=0 ! \ vaapih264dec ! videoconvert ! clockoverlay halignment=right ! autovideosink \) [B]

The above is for a video stream, but the elements are there. We'd likely be in the dark on some needed values such as clock timing and frame size. External decoding would require some amount of computing power. Would a small SoC based system such as a Raspberry Pi be able to? Do the libraries exist compiled for ARM that would be required? Alternatively could an x86 based SFF system such as an Intel Nuc survive in a hot car? Those are question to address if the decoding is successful using desktop computing power.

If stutech has those wireshark dumps from the Ryzen car, it might be enough to get started. Honestly, I'm slightly beyond the edge of my knowledge here on the software side.

Has anyone explored down this line of thinking yet? If so, what have you found?
My thought would be, where is decryption occurring for the audio feed? If it’s in the tuner, then this could work? But if it’s on the other side, I think we’d still be SOL.
 
My thought would be, where is decryption occurring for the audio feed? If it’s in the tuner, then this could work? But if it’s on the other side, I think we’d still be SOL.
I'm pretty confident the decryption is being done in the tuner instead of the MCU. Every over SiriusXM solution I've seen has all the SDARS signal processing (including decryption) done in the tuner, and what comes out is analog audio. The change here with Tesla appears to be an additional AVB encoding before it leaves the tuner on the car's Broad-R Ethernet.
 
From prior posts that @stutech posted back in July of last year, they had most of the same thinking I just arrived at. The only exception is I'd like to simplify it slightly and use the FM fallback instead of trying to get the MCU to accept a stream we create on our own. I found the research paper stutech was referring to with the bridging approach. However, I'm not that far yet.

I did my own wireshark captures on my Model 3 Ryzen with Tesla SiriusXM tuner (from a Model X). I saw lots of communication between the MCU (192.68.90.100) and the tuner (192.68.90.30), but what I'm not understanding is the DIRECTION. It appears all the traffic is originating at the MCU and GOING to the tuner. I would have expected to see the other direction with the tuner sending a constant stream of traffic to the MCU, but thats not what I'm seeing:

1697130726650.png



This may be the need for the bridging at the tuner.
 

Attachments

  • 1697130565773.png
    1697130565773.png
    153.6 KB · Views: 54
  • Like
Reactions: ph0ton
From prior posts that @stutech posted back in July of last year, they had most of the same thinking I just arrived at. The only exception is I'd like to simplify it slightly and use the FM fallback instead of trying to get the MCU to accept a stream we create on our own. I found the research paper stutech was referring to with the bridging approach. However, I'm not that far yet.

I did my own wireshark captures on my Model 3 Ryzen with Tesla SiriusXM tuner (from a Model X). I saw lots of communication between the MCU (192.68.90.100) and the tuner (192.68.90.30), but what I'm not understanding is the DIRECTION. It appears all the traffic is originating at the MCU and GOING to the tuner. I would have expected to see the other direction with the tuner sending a constant stream of traffic to the MCU, but thats not what I'm seeing:

This may be the need for the bridging at the tuner.
Silly question but does your adapter "short" the signal in any way? I know CAN works regardless of this but I don't know about ethernet.
 
  • Helpful
Reactions: ArtK
TLDR; If this approach to external decoding would work, the user experience under these conditions would appear and sound like a fully integrated OEM SiriusXM experience using the Tesla SiriusXM OEM tuner with all controls using the native Tesla MCU SiriusXM client.


Another thought to a Ryzen solution: The part that is working is the UI interface, and the control plane of sending tuning commands to the tuner, and receiving control data back (confirmation of stream selection as well as song ID, etc). Can we use this part, which is 90% of the integration we want and solve the audio decoding externally? Tesla has done us a favor with the fallback behavior playing the audio stream of the last tuned FM station. Were we to decode the SiriusXM audio stream likely on the Broad R ethernet properly tuned already, we could just take the decoded analog signal and put it through an FM modulator whose audio is already playing through the MCU driven speakers in fallback to FM. The user experience under these conditions would appear to be a fully integrated OEM SiriusXM experience using the Tesla SiriusXM OEM tuner with all controls using the native Tesla MCU SiriusXM client.

I handwaved away the hardest and most unknown part: External decoding of the SiriusXM audio stream


However it looks like we have some pieces to start with stutech posted this response in this thread back in April 2023 to a separate question I asked.




Good start! So what does audio encoded on Broad R look like? A quick read of this chapter...


...suggest:

"We focus on the current solutions for audio/video communications, i.e. Ethernet audio video bridging (AVB) specification. This specification has adapted Ethernet technology to meet electromagnetic constraints (EMC) specific to the automotive domain, and at the same time reducing the number of wires required to communicate (only one twisted pair in the current specification for at a throughput of 1 Gb/s instead of four). We review Physical (Broad R-Reach PHY) and Ethernet MAC layer in that perspective. Several new protocols including: clock synchronization (802.1AS gPTP), stream reservation and transmission protocols (IEEE 802.1Qat SRP and IEEE 1722) have been developed, and new mechanisms for forwarding and queuing frames have been proposed."

Key words I'm picking out here are these protocols: IEEE 802.1Qat SRP and IEEE 1722

Stream Reservation Protocol:






This matches the description of how IEEE 802.1Qat SRP seems to work. IEEE 802.1Qat SRP and IEEE 1722 along with a number of other protocols appear to be all wrapped up in a larger standard called AVB (Audio/Video Bridging):





That "weird non-encrypted binary format" feels like it might be the AVB stream. So how do we take this stream and decode it externally? There appears to already be work on support with GStreamer and ALSA in Linux. Including a sample implementation of Talker AND Listener! Here: Getting Started with AVB on Linux* — TSN Documentation Project for Linux* 0.1 documentation

[/B] gst-launch-1.0 clockselect. \( clock-id=realtime \ avtpsrc ifname=eth0.5 ! avtpcvfdepay streamid=0xAABBCCDDEEFF000A ! \ queue max-size-bytes=0 max-size-buffers=0 max-size-time=0 ! \ vaapih264dec ! videoconvert ! clockoverlay halignment=right ! autovideosink \) [B]

The above is for a video stream, but the elements are there. We'd likely be in the dark on some needed values such as clock timing and frame size. External decoding would require some amount of computing power. Would a small SoC based system such as a Raspberry Pi be able to? Do the libraries exist compiled for ARM that would be required? Alternatively could an x86 based SFF system such as an Intel Nuc survive in a hot car? Those are question to address if the decoding is successful using desktop computing power.

If stutech has those wireshark dumps from the Ryzen car, it might be enough to get started. Honestly, I'm slightly beyond the edge of my knowledge here on the software side.

Has anyone explored down this line of thinking yet? If so, what have you found?
You folks amaze me!!!
 
  • Like
Reactions: ph0ton
heads up: SXM changed a bunch of channels around in their lineup this morning. double check your favorites and move them around accordingly if needed (unfortunately this also means a lot of our channels are going to be mislabeled until tesla decides to update them, which may never happen considering holly hasn't been on 104 since christmas 2021 and yet it's still labeled as such in the car).

anyone have any thoughts on how we could potentially intercept the loading of the channel lists and accurately label / icon the channels, since tesla isn't interested in keeping them up to date? we know it's getting them from the data connection, i wonder if we could somehow spoof wherever it's downloading them from and update it...
 
heads up: SXM changed a bunch of channels around in their lineup this morning. double check your favorites and move them around accordingly if needed (unfortunately this also means a lot of our channels are going to be mislabeled until tesla decides to update them, which may never happen considering holly hasn't been on 104 since christmas 2021 and yet it's still labeled as such in the car).

anyone have any thoughts on how we could potentially intercept the loading of the channel lists and accurately label / icon the channels, since tesla isn't interested in keeping them up to date? we know it's getting them from the data connection, i wonder if we could somehow spoof wherever it's downloading them from and update it...

My understanding is that the channel map is a static file in the Infotainment computer. Every other SXM platform uses the over-the-air channel map ... Frustrating.
 
My understanding is that the channel map is a static file in the Infotainment computer. Every other SXM platform uses the over-the-air channel map ... Frustrating.

right, but it's updated through the data connection it seems. some people in the model S forum had reported they were able to get the list to refresh independently of a tesla software update...that's what made me think maybe we can somehow spoof it and update it ourselves.
 
right, but it's updated through the data connection it seems. some people in the model S forum had reported they were able to get the list to refresh independently of a tesla software update...that's what made me think maybe we can somehow spoof it and update it ourselves.

They can certainly push any file they wish of course; but historically I’ve thought of their whole SXM client as a summer intern’s side project. They’re back in high school right now so no SXM updates for us.

It really helps to think of it that way - eventually you’ll come to sympathize with the mythical intern. A touch of Stockholm syndrome?
 
  • Funny
Reactions: crackers8199
i'm just glad they finally updated the damn thing so that the scroll wheel works for cycling through favorites. i don't really look at the screen all that much anymore unless i'm trying to listen to sports PBP, and most if not all of those still seem to be labeled correctly (except for when i listened to penn state this past weekend on 205, which is in the online guide as sports BPB 205 but in the car as indy car radio).

a little annoyed they moved rockbar to streaming only and completely got rid of venus, though, as those were two of my presets.
 
  • Like
Reactions: ph0ton
someone reported on the model s forum that 2023.38.6 has broken the steering wheel scrolling thru favorites again and gone back to sequential scrolling. has anyone else seen this? i have that version waiting to install but I'm not touching it if it's going to break that again... especially right now while so many channels are mislabeled.
 
  • Informative
Reactions: ph0ton
someone reported on the model s forum that 2023.38.6 has broken the steering wheel scrolling thru favorites again and gone back to sequential scrolling. has anyone else seen this? i have that version waiting to install but I'm not touching it if it's going to break that again... especially right now while so many channels are mislabeled.
I can confirm this is happening to me in my model 3 on 2023.38.6. Though as of this morning the channel mappings are correct again (Diplo’s Revolution showing as channel 53, BPM channel 52 etc). I did not need a separate update to correct it, I got the updated channel list when I got into my car this morning.
 
  • Informative
Reactions: crackers8199
I can confirm this is happening to me in my model 3 on 2023.38.6. Though as of this morning the channel mappings are correct again (Diplo’s Revolution showing as channel 53, BPM channel 52 etc). I did not need a separate update to correct it, I got the updated channel list when I got into my car this morning.

is it scrolling sequentially all the time or only when on a non-favorite?

the scroll wheel has always gone sequentially if on a non-fav, it only cycled through favorites if on a favorite channel already. wondering if the re-mapping of channels screwed something up...if it's always going sequentially (even if you're already on a favorite channel), can you try deleting and re-adding your favorites, then going to a favorite channel, and see if it cycles through the favorites then? and then try from a non-fav and see if it goes sequentially?

and then (this is the key part)...wait a few hours with the car powered down and see if the behavior sticks?

if this is broken again, i guess i'm staying on 38.4 for a while. i would hope 38.8 (which is the version after 38.6) would fix it, but since it took them over a year to fix it the first time i wouldn't hold my breath. it's really pathetic that this was broken for over a year and has only been fixed for a few months before they broke it again.
 
  • Like
Reactions: ph0ton
minor update: the channel maps were updated without me having to update...i'm still on 38.4 and have the correct channels now. nice to know that they can do this without a full update, after they couldn't be bothered to update channels that haven't existed in over a year for so long.

for such a technologically advanced car, the software is just a complete joke.
 
  • Like
Reactions: Koheen and ph0ton
is it scrolling sequentially all the time or only when on a non-favorite?

the scroll wheel has always gone sequentially if on a non-fav, it only cycled through favorites if on a favorite channel already. wondering if the re-mapping of channels screwed something up...if it's always going sequentially (even if you're already on a favorite channel), can you try deleting and re-adding your favorites, then going to a favorite channel, and see if it cycles through the favorites then? and then try from a non-fav and see if it goes sequentially?

and then (this is the key part)...wait a few hours with the car powered down and see if the behavior sticks?

if this is broken again, i guess i'm staying on 38.4 for a while. i would hope 38.8 (which is the version after 38.6) would fix it, but since it took them over a year to fix it the first time i wouldn't hold my breath. it's really pathetic that this was broken for over a year and has only been fixed for a few months before they broke it again.
Can confirm that scrolling through favorites is working after removing and readding.

Also tested letting the car sleep for several hours and all is working on .38.6.

One minor annoying thing is that the newly mapped channels lost their icons, for example, Diplo’s Revolution now shows a standard music note icon in the now playing card.
 
  • Like
Reactions: crackers8199
One minor annoying thing is that the newly mapped channels lost their icons, for example, Diplo’s Revolution now shows a standard music note icon in the now playing card.

that's not a new thing, it'll eventually show them on some future update. what that icon shows varies from song to song with no real rhyme or reason as to when each thing shows. i'm actually amazed they at least updated the tiles so quickly, considering 104 was mapped as some fox talk channel and 105 as holly for over a year after those channels were dropped from the service.

glad to hear though that favorites are working again...thanks for confirming that for those of us who hadn't updated yet!
 
  • Like
Reactions: Koheen
Hi All,

I was asked to cross post over here.

I'm going to preface this with I don't know exactly why it works, but it does. I have a 2021 MSLR. My wife has a 2022 MYP. Every holiday she likes listening to the Holiday Traditions and Holly. So much so that I retrofitted SiriusXM into a few of her other cars so she could listen to it. Well, after a reprieve last year, I got the inevitable request. After discussing the streaming options in her car, I went looking for hardware options since my Model S has it (not wanting to give up my car for the season :).

I found this thread and the dreaded "it doesn't work on Ryzen cars response". I know someone who can look at the "vitals" and had him compare it to the one in my car. They are both "HARMAN" tuner types with no differences noted. This gave me the confidence I might be able to get it to work.

I bought the tuner from eBay, the adapter from Amazon, and reused an old NGVA3 antenna I still had in a box from one of the other tuners. Here is the process I followed hopefully to help others.

I installed all the parts following @dude7 , @RedTib & Tesla's replacement procedure, then performed a software reinstall from the service menu when done.

Car: 2022 Model Y Performance
Build Date: 6/22
VIN Range: 46xxxx
Software: 2023.44.1

Tuner P/N: 1622932-00-B (Build Date is 2 days newer than the factory installed tuner)

Replacement procedure:
1. Put the car in Service mode. Open the trunk, frunk, and driver's door.
2. Kill power to the car: Remove the intake trim, frunk liner, and HEPA assembly. Remove the 16V battery connector and the service loop next to the fireman's loop. Car is now powered off.
3. Follow the rest of the Removal/Replacement procedure outlined by Tesla, Dude7, and install the Antenna in the location RedTib does including removing the plastic housing. I taped down the antenna wiring to the existing harness and bundled the excess near the tuner where the harness bends down next to a large opening.
4. Power up the car. You should see the SXM Icon on reboot. You may even hear the Preview Channel playing.
5. Perform a Software Redeploy. There is a button in the lower righthand corner of the service menu to perform this routine. Takes about 15 minutes.
6. Button everything back up while the software installs. Put all the trim pieces back on and make sure there aren't any new rattles. Button up the frunk.
7. Make sure the frunk and trunk close as normal after the software reinstall is finished.
8. Go to the SXM Icon and grab the Tuner ID to sign-up for the 3 Month subscription for a dollar on the SiriusXM site.
9. Repeatedly request a refresh while trying different channels and on the webpage till it tells you you can't anymore today then give up in defeat thinking it doesn't work. OR Just wait a few hours till the subscription loads. :)

Thanks for all the discussion and work you guys did to get it working on your cars. It was a great help!