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 red-blooded Mac OS X developer (well, or college student avoiding studying) would do and put on my reverse engineering cap.
After running ethereal on windows to get some idea what’s passing over the wire, I discovered two things:
- The way Sprint deals with ByteMobile in their connection client is slightly wrong in that it assumes that if ByteMobile isn’t on, then nothing needs happen for the compression to be off. Since it defaults to on, this behavior is wrong. (I’ve got a support ticket in their queue with my name on it to report this problem)
- 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
A few hours later, out came ByteMe Optimizer. I’m not sure if it’s quite perfect yet, but it suits my ends pretty well. 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!