Update: This is probably no longer needed because Sprint has since changed Byte Mobile to opt-in instead of opt-out.

I recently became a user of Sprint’s new EV-DO service, which I think is great with the exception of a few things. One of my major issues was that they use ByteMobile’s Optimization Services Node by default and don’t provide a Mac OS X client.

Now granted, they don’t even support Mac OS X, so I can hardly expect them to provide a client for disabling the image compression. On the other hand, I want to use Mac OS X and don’t like my images getting compressed. So I did what any Mac OS X developer (well, or college student avoiding studying) would do and looked at some packet captures.

After running ethereal on windows to get some idea what’s passing over the wire, I discovered two things:

  • Sprint requires that the ByteMobile client always be running in order to disable it instead of letting you opt out once. (I’m in an esclation queue for that, since you should be able to opt out permanently.)
  • I don’t have to actually reverse engineer their protocol because all I need to do is replay the magic disable packets from the client

I wrote a simple app to replay the packet that turns off the optimization using the same bits as the windows client. If you use Vodaphone, China Mobile, T-Mobile, Cingular, NTT DoCoMo, Orange, Sprint, or a mobile provider that for whatever reason seems to mangle your images (hint: bmi.js may be lurking in your downloaded html), give ByteMe Optimizer a try!