Saturday, January 10, 2009

Sirius on the iPhone

Getting Sirius on my iPhone was a difficult task for me. I was using Orb with uSirius for a while but I found that orb is too heavy for my home server. Also Orb takes too long to start from the iPhone... I have to click through 5 prompts before I can hear Stern. Then if I got disconnected, which happens all too often, I had 5 more prompts to click through.

So here's my solution using all free software without transcoding and without jailbreaking my iPhone.

This is for the technologically advanced user. If you don't have a web server or never heard of asp then stop here.

Requirements:

A home web server running asp
uSirius RC 8

uSirius Mirror: http://www.mediafire.com/?kn0cotmyt52

A sirius subscription
fStream (free on appStore)

A little background info:
When a media player hits a uSirius url (e.g. http://192.168.1.101:19080/streams/stream?bandwidth=low&num=100&r=1229898108), uSirius redirects the player to the correct feed from the sirius servers (e.g. http://g.lm.akamaistream.net/D/?auth=reallylongurl&MSWMExt=.asf)

How this redirection occurs is the source of the problem. Most media players don't like to be redirected. Especially all iPhone media players I tried. So my asp script simplifies the redirect by transforming it into a m3u playlist. Here's how to do it

Open up notepad and paste this code:


<%
response.ContentType="audio/x-mpegurl"
Set stream = CreateObject("MSXML2.ServerXMLHTTP.3.0")
stream.open "GET", "http://192.168.1.101:19080/streams/stream?bandwidth=low&num=" & request.querystring("C") & "&r=1234567890", false
stream.send ""
If stream.Status = 200 AND stream.readyState = 4 Then
s = stream.ResponseText
s = Mid(s, instr(s, "=")+1)
s = Mid(s, 1, instr(s, "Ref")-3)
s = "mms" & Mid(s, 5)
end If
response.write(s)
%>

Save it as sirius.asp and put it in the your web root directory.

You would have to get the ASX playlist location from uSirius and plug it into my script, substituting your internal ip address and the "r=1234567890" part.


Lastly, in fStream you could add a stream to Howard 100 by calling this script like this: http://myexternalipaddress/sirius.asp?C=100 because Stern is Sirius channel 100.



I have found this setup to be highly effective for me and it puts little strain on my server. I know this isn't the most complete tutorial in the world but I just figured I'd share my findings with you.

If you have a better solution please share in the comments.