Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
So it's looking like Radium is now abandon ware. Really disappointing, but I figured with the lack of responses I got from email that this might be the case. I'll send one more email to CatPig, but I think we should focus more on SXM now to develop an official app for OSX since there is none at the moment.

P.S. This thread has got to a page 2, which I didn't expect to happen at all.
 
Last edited:
Unfortunately, I too have had the same reported problems with Radium not loading the SXM stations. Like everyone else, I can get the other streaming stations just not SXM.

I have tried some of the things people here have tried like SXM Canada and such with no luck. There was a series of posts commenting on the possibility of a SXM server issue - has anyone got more info on that possibility?

Will try most any reasonable suggestion.

TIA
 
Any updates on any fronts? I still haven't gotten my email from CatPig Studios. I've just about given up on that end. Any way to get Sirius XM to notice and make an app for OS X?
 
Any updates on any fronts? I still haven't gotten my email from CatPig Studios. I've just about given up on that end. Any way to get Sirius XM to notice and make an app for OS X?

I'm not aware of any new info. I believe that it stopped working because of a change that SiriusXM made on their end, and I believe that Catpig Studios is completely dormant at this time. While you can still buy the app in the App Store, the developer (Kirill Zorin) seems to have moved on from the product. Most likely, since the app was the single focus of his development, it stopped earning a livable wage for him, so it went by the wayside.

I understand that SiriusXM wants to control the ecosystem around their streaming service. It's just unfortunate that neither they, nor the developer, are responsive to inquiries. Even a canned reply from the catpig support email would be better than no reply.

With the addition of a SiriusXM AppleTV app earlier this month, they have expanded their app footprint, but my use case is in my home automation, and a Mac sits at the center of that, including my zoned audio distribution. I used Radium on that Mac as a source, and controlled it from keypads and custom remotes through the house. I can not achieve the same thing with the browser based player, nor can I achieve the same thing through other devices yet, like Amazon Echo devices. Getting closer with that, but they don't play too well with home automation yet either. I'm definitely a minority need, but having a controllable app for audio sources is key to my setup.
 
I understand that SiriusXM wants to control the ecosystem around their streaming service. It's just unfortunate that neither they, nor the developer, are responsive to inquiries. Even a canned reply from the catpig support email would be better than no reply.

It's fine if SiriusXM wants to cut off Radium, it's their right. But the whole situation has been mismanaged (mostly on CatPig's side). I wish there was an announcement from SiriusXM or CatPig about this, it would have taken 5 minutes for one of them to say what's going on. But I'm hoping that now with Apple TV functionality, an OS X native app is just around the corner. Though I will say that maybe with a native app, we'll get a few more features that Radium could not offer.
 
As of 0215 EST, 22 Dec it has starting working for me. It had been "off" with everybody else.

A curious thought is that SiriusXM has been running promotions with various "free" channels available without subscription. I wonder if this opening of their servers and allowing non-subscribers in causes something that Radium can't adjust to.

Anyway is is working from now.
 
As of 0215 EST, 22 Dec it has starting working for me. It had been "off" with everybody else.

Not working for me. Tried both iOS and OS X clients. Same as before, it tells me my service account is connected, but I can't find SXM stations. Curious what station names are coming up for you for SiriusXM now? What is the name of a SXM station you can search for and listen to now?
 
As of 0215 EST, 22 Dec it has starting working for me. It had been "off" with everybody else.

A curious thought is that SiriusXM has been running promotions with various "free" channels available without subscription. I wonder if this opening of their servers and allowing non-subscribers in causes something that Radium can't adjust to.

Anyway is is working from now.

The free promotions can't be the reason it's not working, since they have done so in the past and it's continued to work for me.

Anyway, still nothing on my end (might be because I'm listening on the web browser at the moment). Check back to see if it's off or still on for you.
 
Still nothing for me either. I'm not listening anywhere else. It accepts my streaming credentials without complaining, but no SXM stations showing up when I search.
 
I can log in OK (at least it's not showing me any errors when I do), but no joy on finding any channels. Maybe Jet will check back in with an update and some more details. I wondered if the channel names/feed format changed when they introduced their new app, but I've tried a variety of searches and am not seeing anything show up from SiriusXM
 
I can log in OK (at least it's not showing me any errors when I do), but no joy on finding any channels. Maybe Jet will check back in with an update and some more details. I wondered if the channel names/feed format changed when they introduced their new app, but I've tried a variety of searches and am not seeing anything show up from SiriusXM

Wellll..... It's no longer working. It was and then with Radium "off," I rebooted my iMac because of other issues. When I launched Radium again I got a "blank" box where I normally would have my various SXM channels listed. Just Blank - nothing there.

I went to Settings and looked at services and I was properly "connected." I unchecked the box and recheck to verify that Radium connected to SXM - it did.

Now, I have nothing other than a blank box. If I doo the search for SM+XM channels - it comes up "blank" - So, I am out of ideas and things to trouble shoot.

I have not heard from cat pig - sent total 3 emails - that guy pisses me off. Also, not sure why Apple still is carrying the app as it obviously has problems.

If I learn anything more - I'll put it here. - Jet
 
This is trick that seems to work - damnifino why

For me when Radium doesn't work I don't have the various Sirius channel selections in the Radium box - it is blank.

So, in reading the various Radium help thingys, I came across one that said the you could drag one of the Radium "channels' to the desktop as a URL. Well, that percolated for several days (weeks). What I decided to do was if (or when ever) I got Radium back with my Sirius Channel selections, I would click and drag them to the desktop.

My thinking was that when Radium goes out again with my channels not showing up again, I can just drag and drop them back into Radium.

Well....... It WORKS!!

I got Radium back with my selections for some damn reason - First thing I did: I dragged all my channels to the desktop. I have 13. The files identify themselves as Web Internet Locations (which are another way of saying URLs).

I quit Radium and relaunched - of course it came up without the channels showing. I dragged dropped the first over and it showed in the Radium box, I clicked on it and got my channel. I proceeded to drop all my channels back in the Radium box and they all work fine.

Another thing I did was double clicked the file in the folder I had shoved all the channel links into - The double click launches Radium and plays the channel - just another way.

For this to work - those of you that don't have the channels showing in the Radium box need to "Cast your Chicken Bones and other Incantations" to get the get your channels back - Just Once!!!! - then drag them to the desktop and we all should be good.
 
Last edited:
This is trick that seems to work - damnifino why

My thinking was that when Radium goes out again with my channels not showing up again, I can just drag and drop them back into Radium.

Well....... It WORKS!!

For this to work - those of you that don't have the channels showing in the Radium box need to "Cast your Chicken Bones and other Incantations" to get the get your channels back - Just Once!!!! - then drag them to the desktop and we all should be good.

Maybe you could post one of your channel URLs for me to compare against? I have one saved to my desktop from a long time ago, and it does not work at all.
 
Maybe you could post one of your channel URLs for me to compare against? I have one saved to my desktop from a long time ago, and it does not work at all.
Tried a quickie upload and the forum uploader said it has the wrong file extension Filename.inetloc (SiriusXM Escape.inetloc)

I'll have to work on how to get it done.
 
Tried a quickie upload and the forum uploader said it has the wrong file extension Filename.inetloc (SiriusXM Escape.inetloc)

I'll have to work on how to get it done.

Maybe just open the file with a text editor to get the actual link out of it?
 
OK - This is the contents of the file for the SiriusXM Channel Watercolors ( a Jazz channel).

I am not smart enough to decode all of it - so help would be appreciated.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>URL</key>
<string>radium://tune-in/?b=siriusxm&amp;c=jazzcafe&amp;pb=SiriusXM%20Radio%20USA&amp;pc=SiriusXM%20Watercolors&amp;h=&amp;</string>
</dict>
</plist>


This is stored in the file named: SiriusXM Watercolors.inetloc

Hope it helps.

Added after Sam's series of posts

As I noted in my post - for whatever reason it works for me. I will continue to "watch" what I do to see if there is some other secret decoder ring stuff. If some other helpful reader can decode the file contents that would help me and perhaps others.
 
Last edited:
OK - This is the contents of the file for the SiriusXM Channel Watercolors ( a Jazz channel).

Hope it helps.

Thanks, but no joy. That is the same file structure as the channel link I have saved, with the exception of the channel name info. Just not working for me. I had tried this approach first when it went down for me, because I had that one channel saved out as a web link. Seems quite odd that you've got it working some of the time, and others of us just can't get it to work at all.
[doublepost=1517527287][/doublepost]
Thanks, but no joy. That is the same file structure as the channel link I have saved, with the exception of the channel name info. Just not working for me. I had tried this approach first when it went down for me, because I had that one channel saved out as a web link. Seems quite odd that you've got it working some of the time, and others of us just can't get it to work at all.

Wait, hold the phone! After I tried launching from the web link file with no joy, I just tried searching for 'siriusxm' channels and they all came up in the results list...
[doublepost=1517528596][/doublepost]Well, it only worked on one computer, and it only lasted on one launch of Radium. I am not able to repeat the results. Bummer.
 
It appears there seems to be at least some sort of fix that someone was able to get to work, but I haven't found anything yet. Any updates? I really want to get back to using Radium to listen to my stations since the station delay is only a minute instead of up to five minutes on the web app. I'm on 2.8, so some of the latest fixes may not work for me? Any response from anyone?

Also a nope on the Radium mobile app, doesn't want to pick up SiriusXM, at least there's an app there. Wish that macOS app would get out though.
[doublepost=1523376922][/doublepost]Here's the Python code for SXM from Radium:
Code:
def compute_response(method, challenge, iters, salt, passw):
  from pbkdf2 import pbkdf2_bin
  from binascii import hexlify, unhexlify
  import hashlib
  def md5hex(x):
    return hexlify(hashlib.md5(x).digest())
  def aes(k, d):
    import aes
    # nb: aes init vector (iv) is hardcoded to 0, so we return the
    #     encrypted result sans its iv prefix
    return \
        hexlify(aes.encryptData(unhexlify(k), unhexlify(d), iv = [0] * 16))[32:]
  def sha256(x, outlen = 16):
    return hexlify(hashlib.sha256(unhexlify(x)).digest())[:outlen * 2]

  if '0' == method:
    passw = md5hex(passw)
  elif '1' == method:
    passw = md5hex(passw.upper())
  else:
    passw = 'D0DB1CA3B300831A301AF9144FC6986A'

  hwid, emac = '00000000', '0000CAFEBABE'
  pkey = hexlify(pbkdf2_bin(unhexlify(passw), unhexlify(salt), iters, 16))
  response = \
      aes(pkey, challenge + sha256('%s%s%s' % (hwid, emac, challenge)))
  return hwid, emac, pkey, response

def login(username, password, ctype):
  from util import get_url, extract_substr_fields
  login_url = 'https://www.siriusxm.com/userservices/authentication' \
              '/en-us/xml/user/login/v2/initiate'
  pdata = \
      '<AuthenticationRequest><userName>%s</userName>' % username + \
      '<consumerType>%s</consumerType>' % ctype + \
      '<subscriberType>SIRIUS_SUBSCRIBER</subscriberType>' \
      '<currency>840</currency></AuthenticationRequest>'
  challenge, iters, method, salt = \
      extract_substr_fields(get_url(login_url, pdata),
                            [['<authenticationChallenge>',
                              '</authenticationChallenge>'],
                             ['<iterationsCount>', '</iterationsCount>'],
                             ['<passwordHashType>', '</passwordHashType>'],
                             ['<salt>', '</salt>']])
  hwid, emac, pkey, response = \
      compute_response(method, challenge, int(iters), salt, password)

  resp = \
      '<AuthenticationRequest><userName>%s</userName>' % username + \
      '<consumerType>%s</consumerType>' % ctype + \
      '<subscriberType>SIRIUS_SUBSCRIBER</subscriberType>' \
      '<currency>840</currency><playerIdentification>' \
      '<hardwareIdentification>%s</hardwareIdentification>' % hwid + \
      '<ethernetMac>%s</ethernetMac></playerIdentification>' % emac + \
      '<authenticationData>%s</authenticationData> ' % response + \
      '</AuthenticationRequest>'
  comp_url = 'https://www.siriusxm.com/userservices/authentication' \
      '/en-us/xml/user/login/v2/complete'
  session, lineup = \
      extract_substr_fields(get_url(comp_url, resp),
                            [['<sessionId>', '</sessionId>'],
                             ['<channelLineupId>', '</channelLineupId>']])
  return session, lineup, pkey

def media_url(cid, user, passw, ctype):
  from urllib import quote
  from util import get_url, substr_between
  from binascii import hexlify, unhexlify
  import re
  try:
    import json
  except ImportError:
    import simplejson as json

  def aes(k, d):
    import aes
    # nb: iv prefix is 0; see "compute_response"
    return hexlify(aes.decryptData(unhexlify(k), unhexlify('00' * 16 + d)))
  def sha256(x, outlen = 16):
    import hashlib
    return hexlify(hashlib.sha256(unhexlify(x)).digest())[:outlen * 2]
  def fstr_at(s, x): # nb: fstr is short for "****ed string".
    size = 0
    for c in unhexlify(s[x:x + 4]):
      size += ord(c)
    end = x + 4 + 2 * size
    return unhexlify(s[x + 4:end]), end
  def get_m3u8(mrl):
    prefix, suffix = re.findall(r'(.*?/)(\?token=.*)', mrl)[0]
    return '%s%s_variant_large.m3u8%s' % (prefix, cid, suffix)

  session, _, pkey = login(user, passw, ctype)
  data = json.loads(get_url('https://www.siriusxm.com/userservices/token/en-us'
                            '/json/%s/token/v2/%s?sessionId=%s' % \
                              (ctype, cid, quote(session))))
  token = aes(pkey, data['tokenResponse']['tokenData'])
  mrl, pos = fstr_at(token, 8)
  mrls = [mrl, fstr_at(token, pos)[0]]

  keys = token[-72:-8]
  keys = [keys[:32], keys[32:]]

  return '%s///keys=%s' % \
      ([get_m3u8(mrl) for mrl in mrls][0],
       ','.join(['D0DB1CA3B300831A301AF9144FC6986A'] + keys))

def get_channels_list(user, passwd, ctype):
  from util import substr_between, get_url, clean
  _, lineup, _ = login(user, passwd, ctype)
  lang = 'en-us'
  format = 'xml'
  channels_url = \
      'https://www.siriusxm.com/userservices/cl' \
      '/%s/%s/lineup/%s/client/%s' \
      % (lang, format, lineup, ctype.strip('2'))
  data = get_url(channels_url)

  channels = []
  try:
    while True:
      cid, data = substr_between(data, '<contentId>', '</contentId>')
      desc, data = substr_between(data, '<displayName>', '</displayName>')
      name, data = substr_between(data, '<name>', '</name>')
      num, data = \
          substr_between(data, '<siriusChannelNo>', '</siriusChannelNo>')
      xm_num, data = \
          substr_between(data, '<xmChannelNo>', '</xmChannelNo')
      if not len(num.strip()):
        num = xm_num
      prefix = 'SiriusXM'
      if not name.startswith(prefix):
        name = '%s %s' % (prefix, name)
      channels += [[clean(x.decode('utf-8')).encode('utf-8') for x in
                    [cid, num, name, desc, xm_num]]]
  except:
    pass

  channels.sort(lambda x, y: cmp(int(x[1]), int(y[1])))
  return channels

def get_channels(user, passwd, ctype):
  return '\n'.join('\n'.join([f for f in x]) \
                     for x in get_channels_list(user, passwd, ctype))

# def whats_on(cid):
# # nb: useless without a timestamp to sync with, and we have no way
# #     to pass it.
#   try:
#     import json
#   except ImportError:
#     import simplejson as json
#   from time import strftime, localtime, time
#   from util import get_url

#   ts = strftime('%m-%d-%H:%M:%S', localtime(time()))
#   data = json.loads(get_url('https://metadata.siriusxm.com/metadata/pdt/'
#                             'en-us/json/events/timestamp/%s' % ts))
#   for entry in data['channelMetadataResponse']['metaData']:
#     if cid != entry['channelId']:
#       continue
#     evt = entry['currentEvent']
#     track = evt['song']['name']
#     artist = evt['artists']['name']
#     return '%s - %s' % (artist, track)
#   return ''
 
Last edited:
It appears there seems to be at least some sort of fix that someone was able to get to work, but I haven't found anything yet. Any updates? I really want to get back to using Radium to listen to my stations since the station delay is only a minute instead of up to five minutes on the web app. I'm on 2.8, so some of the latest fixes may not work for me? Any response from anyone?

Also a nope on the Radium mobile app, doesn't want to pick up SiriusXM, at least there's an app there. Wish that macOS app would get out though.

I was able to get it to work for a while by feeding Radium back its own URL's for Sirius Channels - Noted in an earlier post.

That has stopped working now. The Mobile App doesn't work either. It seems there is no response from the author. I wold like to tell Apple to take down the app (Mac and Mobile) to see if that would get the author's attention to fix the problems .

Sorry I don't have more info
 
Update, now their web player is not working. There's no way to listen to SXM on my Mac computer at all as of this moment. :mad:

It's not looking good for Radium to work again, since they say they don't support it, and since the developer is a no show, that's going to be a no go. I sent another email expressing that the app is down and maybe this time I'll get a response, but not expecting anything.

Good news is that someone on the help line said they will float up the suggestion for a SXM app for the Mac, since there is none at the moment. They might have to with the extended downtime of their web player, now into day two.
 
Last edited:
I've followed this saga for a long while, and was sad that Radium had stopped streaming Sirius XM channels.

On a lark, today I tried again today, after creating a new Sirius XM streaming account. And here's some great news: it's working fine! I was able to log in, I was able to search for channels, and I was able to select and play any channel. It's working right now on my 2015 MacBook Pro running macOS 10.14 Mojave. I'm streaming Sirius XM channels via Radium 3.1.3. I didn't have to apply any hacks or tweaks. It's just working. So y'all may want to try it again...
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.