Friday, July 25, 2008

Comcast broke firewire audio in firmware update

I recently noticed my Comcast DVR (Motorolla DCT6XXX something) had different looking menus from before, indicating to me that the firmware had been updated. Incidentally, this breaks the firewire DVR goodness I have been using for months to increase my DVR storage space. I'm going to call Comcast and complain that they are breaking FCC rules here. The only thing I could find on the nets was this single forum post.

If anyone out there knows of a solution, please post comments here.

Sunday, July 20, 2008

No word from the community on 2.0 jailbreak

My RSS feeds are all coming up with nil on the iPhone jailbreak front. From what I can gather from reading comments in the few posts I have found, it looks like it doesn't brick your iPhone and works just as promised. I think I'm still going to wait just a bit longer for some good guides with more clear info to come out before I jump in head first. I'll be posting updates here as I progress in jailbreaking my iPhone.

Saturday, July 19, 2008

iPhone 2.0 jailbreak released!

That's right, the iPhone dev team have released the jailbreak they have been working on since the betas of the 2.0 software came out. It looks it is a MacOS X application that takes a Apple distributed firmware image (like the kind you get from restoring), and patches it somehow. This is as far as I have gotten, but I suspect you then force your iPhone into restore mode with some magic button presses, and load up the patched firmware. I'm not sure what opens up immediately, but looking through expert mode of the program, it looks like the all important is unsupported as of yet. It looks like it installs the Cydia installer. I just found out about this, but Cydia appears to be an apt based package repository of iPhone ports of the usual GNU and BSD userland tools/applications. I think that a Cydia GUI frontend is installed instead of, allowing for installation from the Cydia package repos.

I patched my firmware, but then quit out of the program when it reported a failure to enter DFU mode (that is, my iPhone wasn't anywhere near my computer let alone hooked up to it). I think I'm going to wait for the fallout, and see what the blogs have to say tomorrow morning. I don't want to brick my iPhone 3G, but this is just super exciting!

Thursday, July 17, 2008

Pandora update

There are several other pieces I saw in the blagosphere today that were relevant to what I was getting at yesterday about Pandora on iPhone. I just wanted to link back to them for reference.

I know yesterday I was going on and on about the seamlessness of the audio experience...well, on the drive home yesterday I finally got a skip in a song due to an AT&T deadzone. And it turned out that when I got service again about 10 seconds later, Pandora just skipped the remainder of the song and went on to the next track. So I guess it isn't perfect as I thought. While I'm on negatives, I guess I have a small feature request list too. It would be great if the app could continue to play in the background while I did other things (like the iPod app does). Presently, hitting the home button just quits Pandora and kills your music. And I think lyrics would be nice, but personally it would only add to the "wow they thought of everything" factor.

Wednesday, July 16, 2008

My Review of the Pandora iPhone app

The Pandora app has to be one of the coolest things to come out of the App Store. This little gem of a piece of software is a way to listen to everyone's favorite "Music Genome Project" powered Pandora online radio. I have been using Pandora on my PC off and on for a couple of years now, and through the simple thumbs up or thumbs down I give it about songs, it has really honed in on my musical taste. When I heard there would be an iPhone and iPod Touch 2.0 app for Pandora, I wasn't expecting too much. I figured it would be plagued by buffering/playback/network issues and a pretty bad user interface. In short, I expected it would be an unusable first cut at doing this kind of streaming. I couldn't have been more wrong.

The User Interface
The first thing you see when you load up Pandora is this minimalist load screen. It is clean, and has a nice Apple rotating dial thingy letting you know its thinking. The first time I loaded up Pandora, it asked me if I wanted to establish a new Pandora account, or if I was already a user. After selecting the latter option, I was prompted to enter my Pandora user info. To my pleasant surprise, the next thing I was greeted with was a list of my stations, which at the moment contains one station that is really perfectly tuned in on what I like.

I'll never really cease to be surprised by how good the iPhone SDK controls all look, and by making the controls available in the SDK the same as those from the toolkit Apple's own developers use, it gives the impression that the iPhone experience really hangs together well. Even these third party apps look really polished and like a true extension of the iPhone since it is all the same handful of really well made GUI components.

After selecting "Raj's Radio", it started playing my music. The user interface here is on par with what the native "iPod" app has to offer! It uses the same layout, and at first glance you wouldn't know that you aren't using your iPod app! It has cover art that is full resolution for the iPhone screen, and aside from the expected play/pause, skip, and volume controls, there are the Pandora ranking features (thumbs up and down), and an additional menu that allows you to mark a song or artist as a favorite for your Pandora account, or go immediately to purchase it in iTunes. This integration is something they could have skipped, but makes the experience that much better for people who are interested in downloading these tracks permanently. You can also "flip over" the cover art to reveal a Pandora specific feature which reveals how the song was selected to match your musical tastes, something familiar to Pandora users. For having expected them to really botch the look and usability of the interface, I was really impressed with how clean, iPod-esque, and easy the experience was.

The Streaming Experience
The look and feel is all great, but how does it perform as a streaming music player? I knew that 3G had enough bandwidth to support this kind of application, but I assumed that there would be some network issues, constant "rebuffering", or maybe some kind of lapse in playback as I drove around through deadzones etc. On, 3G, none of this was the case. The network fast enough such that I think it actually buffers one entire song ahead at the start of playback. Even when I hit a deadzone inside my parking deck about halfway through a song, it still finished playing it. As for streaming when you are on Wifi, it is completely seamless. There is about a 1-2 second delay between songs when you are on Wifi, feeling completely natural for an inter-song pause. On 3G this pause was a bit longer, I'd say about 5 seconds, but still quite tolerable.

The transition between Wifi and 3G is completely seamless too from a listening perspective due to the nice long playback buffer. In a test, I started in a building on campus with Wifi, listening to Pandora. I got in an elevator down to a parking deck, got in the the car and hooked my iPhone up to the car, and drove through campus on my way home. The Wifi handed off my iPhone gracefully from one access point to the next as I drove about a half mile towards the edge of campus, and then when I went out of range of Wifi, my phone picked up 3G service. Not a second of audio was sacrificed. No stutter, no rebuffering. Just like listening to my iPod. This thing is fucking brilliant. Forget satellite radio, this idea is poised to be an XM/Sirius killer when widespread cellular IP-based broadband ever becomes ubiquitous (i.e. when WiMAX or LTE or some sucessor catches on). This Pandora solution already makes satellite radio obsolete for its users.

For the purposes of testing, I did end up disabling 3G to see how Pandora's streaming would handle being on the EDGE network. I have to say, this is not to be recommended, but YMMV. On EDGE, I DID get all those rebuffering stutters in audio I was worried about. And more importantly, even when it would work, when using EDGE I could constantly hear that interference noise you get on speakers when your cellphone is know the one, the morse-code-esque beeping, it was non-stop, and loud enough to be heard over the music. No such problem on 3G. I WAS using an ancient tape adapter with a long wire (read: EDGE antenna :-) to connect the iPhone to my car, so this might not be an issue for everyone. I even saw a review on the App Store itself claiming that Pandora worked like a charm on EDGE, so it might work in your area. I'm going to stick to 3G.

Pandora is an awesome application for the iPhone 3G. It is blessed with an intuitive and good looking interface. The new 3G networking capabilities really make it possible to have a seamless audio experience, even driving around. It performs fastest on Wifi, but the difference is a 2 second difference in initial buffer time between songs. It buffers ahead enough to account for deadzones and handoffs, and even the Wifi<->3G handoffs didn't phase the music experience. I wouldn't recommend it for use on EDGE exclusively according to my one simple test, but YMMV. If I had to give it stars, I'd say easily 5/5.

Tuesday, July 15, 2008

On the difference between jailbreaking and unlocking

Lots of articles in the blagosphere have been talking about "unlocking" the new iPhone, but have been using the term incorrectly. I really want to clear things up, because its annoying to see great sites like Ars Technica and Gizmodo screw this up. So lets get to it.

The act of "jailbreaking" your phone is making it open to third party applications which are not in the app store. This term comes from FreeBSD's chroot jail, a mechanism to segment a machine to different users as if each segment is its own machine. It is a "jail" because you can't break out of it and get into the juicy guts of the system, you can just access the segment you are allowed. Similarly, you can't access the inner workings of your iPhone, you just access the parts Apple allows, which is just their built-in functionality and anything they allow on the App Store.

There are somethings Apple probably wouldn't allow for use on the iPhone ever, like:
  1. An interactive shell/terminal application to access the system guts
  2. An ssh daemon, like OpenSSH (which would allow the iPhone to act as a proxy server to forward 3G over wifi to your laptop)
  3. A web server
  4. Custom XNU Kernel and extensions
To sum it up, since Apple wouldn't allow any applications that make your iPhone more into a general purpose computer instead of a consumer electronics device, you jailbreak your phone to do so. Since you now have a general purpose computer, you can do what you want to do on it, not only what Apple allows.

The jailbreaking process requires exploiting holes the iPhone software's "jail". In the past, this as been achieved e.g. by exploiting some bad TIFF image rendering code on the iPhone. Basically, you just load up a custom made corrupt TIFF image in Safari, which actually contains code. The bad rendering code will cause the iPhone to run the code, and voila, you have broken out of the jail they created for you. These custom made TIFF images then go on to install applications that allow you to access the guts of your system and do whatever you like, essentially rendering the already-in-place jail useless. Jailbreakme was a site that had one such TIFF image that works for older iPhone firmware.

Cellular phones in the US (and practically everywhere else) are typically configured so that you can only use a phone on the network from which you purchased it, even if there are no technical reasons limiting its usability on another network. This is why you can't easily take an AT&T phone you bought here and use it on the T-Mobile network, or take that same phone over to Europe and pop in a local teleco's SIM card to use it on that local network. This is called carrier locking of a phone.

AT&T and others do this so you don't buy a phone of theirs and take it over to another network. They want to retain their user base, and they want you to use their expensive international roaming services when you are traveling abroad instead of using a cheaper local service. There is no technical limitation that prevents any AT&T phone from working on GSM networks in the US (T-mobile), Europe (Vodaphone, O2, Orange, etc.), or anywhere else in the world. It is simply a way for carriers to protect revenue and market share.

Since there is no hardware limited technical issue, people figured out that by modifying the software that runs the phone, you can make it work on any e.g. GSM network worldwide. This is what's called "unlocking" your phone, and is actually how your phone comes by default from the factory. The carriers later lock the phones for use with their network. Some phones come with the capability to be unlocked by the carrier over the air, or by a code entered by the user. These are for situations in which the mobile operator allows you to use your phone on other networks, for example, in places they have no coverage and no parter carriers. Otherwise, there are various methods by which you can hack the device to unlock it.

In the US, unlocking your phone in a manner unapproved by your carrier was formerly thought to be illegal under the DMCA, as it circumvents a measure meant to enforce copyrights, but there has been an explicit exemption to the DMCA that protects your rights to use your phone on any network it will.

So are Jailbreaking and Unlocking related?

In the case of the iPhone, the answer is maybe. There are typically two ways to use a phone in an unlocked manner.

  1. Use a hacked SIM card. This is typically a thin adapter that attaches to your SIM card, and fools the phone into thinking that the SIM card belongs to the network to which your phone is locked, even though the card is from another network. It has been demonstrated with the latest iPhone 3G. This requires no jailbreak, since you are modifying a SIM and not the phone in any way.
  2. Hack your phone. This requires a jailbreak.

Option 2 is really the holy grail of unlocks, because it is a software only solution, requiring no SIM modification, a process which can require manual cutting with a razor and gluing of the tiny slivers of plastic we call SIM cards. The reason the software unlock requires a jailbreak is because in order to start "hacking" or doing anything useful towards unlocking your phone, you have to have control over what software it runs. This is the jailbreaking step. Once you have jailbroken your phone via an exploit, you can find software out there that hacks its way past the carrier lock.

But note that they are not one and the same. They are quite different things. Unlocking requires jailbreaking, but that doesn't mean that's the only reason to jailbreak. I, for example, want to jailbreak so I can run free games not available in the app store and use ssh SOCKS forwarding to get 3G my laptop. I have no intention of carrier unlocking my phone, but am waiting on a jailbreak to be released for my iPhone. More on this below.

Current status of Jailbreaking
The situation could get a little complicated in the future because of different revisions of the firmware on the iPhone, and now, two different hardware revisions. BUT, that said, all of the first generation iPhones can be jailbroken, regardless of firmware version number. Most of the software out there to do this support all revisions of the iPhone firmware up to the major 2.0 release that accompanied the new iPhone 3G. As of today, July 15, 2008, the latest iPhone firmware (iPhone 2.0) has been jailbroken. The bad part is, the jailbreak is unreleased as of yet, and is in heavy testing to work out any potential bugs. I am personally watching this closely, waiting for the release announcement from If you are following this whole thing, I would suggest signing up for the RSS feed on that page so that you know exactly when they release the jailbreak.

Monday, July 14, 2008

Send SMS for free using AIM on iPhone!

In the US, just add a contact named +1(ten-digit-phone-number-here) to your AIM buddly list, and then IM this contact using the AIM application on the iPhone. Free outgoing SMS! Gotta spread the love to the original source where I saw this.

AJAX done right = desktop class application in a browser window

I just wanted to post a quick link to one of the coolest things I've seen online in weeks. This has to be the cleanest AJAX webapp I've ever seen. And its fast.

Google Docs' presentation app has nothing on this little gem. So they'll probably buy this 280slides company :-) Check this app out!

Got a 3G iPhone!

And I only waited in line one hour today! We got there an hour before opening, and were in the first batch to get in (I was the LAST person of the first batch!) After getting in I was in the store maybe an hour, and that was WITH some trouble porting my number. The thing I'm MOST excited about hacking soon is running the phone as a bridge / gateway / modem so I can "tether" it to my laptop to get HSDPA wherever I go! Alright, lets be honest, their 3G coverage sucks outside of big cities, but at least I won't ever be stranded without EDGE, aka connectivity anywhere. Hell, if AT&T doesn't catch wind of this, I might even drop my cable internet service.

There is something funny about still calling it "tethering" though, because these days the process is over wifi. It goes something like this: you jailbreak your iPhone (waiting on pwnageTool release), then install the requisite software on it to get it to forward traffic from HSDPA->802.11b. Then you just connect the iPhone and your laptop in an ad-hoc network and boom, 3G data on you laptop.

Technically speaking, there are several ways to achieve this at various layers of the protocol stack. If done as a purely L2, bidirectional forwarding mechanism, you have a bridge/AP type of setup. If the IP layer does this, you kind of a have a router/gateway setup. If done at the application layer, its like a proxy server. The easiest route on the iPhone is to do things at the application layer, because adding functionality to the data-link and network layer requires changes to drivers and the kernel code. Since not many are in the business (except for Apple) of hacking the XNU kernel code, we run a forwarding application at L5. I hope it is as easy as is described for the old iPhone.