It almost seems like more worthwhile news comes from XDA-Developers forum members than from carriers and manufacturers, doesn't it? This time around, it's user sino8r with a handy guide on how to modify the ROM on your rooted phone so that your carrier doesn't throttle your data. In other words, this one isn't for the inexperienced or faint of heart.
What exactly do we mean when we say this isn't for the rookies? Well, you'll need to have the Android SDK installed with ADB support, the related drivers, and smali. Assuming you've got all those prerequisites lined up, you need to crack open your ROM and commence grabbing, editing, and replacing numerous files - and that's just part of it. The process certainly isn't simple, so I say again: if you're not familiar with the SDK, cracking open ROMs, and Smali, this probably isn't for you.
Now that we're thoroughly disclaimed, the steps:
Okay, find your current rom on your pc (the zip file) and open it with your favorite extractor (winrar is nice)(dictionary - I think 7zip is the best)
Go to the system/framework folder and extract services.jar file onto your desktop.
Now open services.jar and extract classes.dex to the desktop. Cut and paste classes.dex to your sdk/tools folder.
Now, download smali and baksmali.jar from the link in the paragraph above. Rename them smali.jar and baksmail.jar for easier typing later. Cut and paste those two into the SDK/tools folder also.
Open your command prompt and cd (change directory) to sdk/tools folder. Then type this exactly (without the quotes: "java -jar baksmali.jar -o classout/ classes.dex". Look at your sdk/tool folder... that should have created a folder called classout. Open it until you find your files.
Locate the 7 files with "throttleservices" in the title. Delete them! Now type this into command prompt: "java -Xmx512M -jar smali.jar classout/ -o new-classes.dex". That should repack your edited files and create a file called new-classes.dex...
Cut and paste the new-classes.dex to your desktop and rename it classes.dex.
Open your services.jar (that should be on the desktop) with winrar (or whatever)(dictionary - again, try/use 7zip) and click add file. Add the classes.dex file from your desktop. It might ask you to replace it or save or not (it will depend on your extractor).
After you edited your services.jar, copy and paste it to your tools folder. Connect your phone via usb cable to the pc.
Boot into clockwork recovery. In the clockwork menu, make sure you go to mounts and storage and click mount /system before this next step.
Now, open the command prompt from your pc again, and cd to sdk/tools folder (if you are already there, you can skip this step! Good for you).
Now type "adb push services.jar /system/framework/". Reboot your phone and enjoy! [sic]
And there you have it. There are a few known issues to consider before you set things in motion, though:
The menu/settings/wireless & network settings/mobile networks are going to force close. It is rarely needed so this won't be a problem for 99% of users (1% of you are bastards). Just make sure you have data roaming enabled before pushing your services.jar and that your APN is correct (which it should be already) because you won't be able to change those again. You can always push your old services.jar (from your rom.zip) to quick restore (way easier than Nandroid but whatever) Just do that the same way we copied and pasted services.jar to tools folder and adb push. ONE THING you might miss is having the option to use 2G only. To remedy this, just dial *#*#4635#*#* from the dialer. Go to phone info and select your prefferences... 2G only,3G only, or 3G preferred. There's an app for that () called phone info by SC@taiwan on the market for free. It much handier than dialing all that *#*# crap. That should take care of most folks.
We extensively tested most roms but CM Nightly seemed to not like this edit. I guess it would depend on the build... (we tested nightly #50) My suggestion would be to all the rom developers out there to edit their own service.jars and remove those 7 deadly sins (or files) and put some kinda of falsie placeholder to prevent the force close. That should do it but since ALL roms services.jar are different... i can't make one magical file that will fix everything. ALSO, if you are running a added on theme, you need to use the service.jar from the theme to do this edit!
Well, I think that is all... so have fun and get what you paid for which is UNLIMITED DATA (NOT THROTTLED CRAP THAT IS SLOWER THAN 2G!) T-Mobile has found a loophole with this throttle crap so they can still CLAIM it's unlimited! That may be technically true but it is utter crap and they know it. They are already being sued for this but I doubt anything will happen. This also meant for user who don't use their phone as a home internet connection. Those folks are the ones who made t-mobile do this. This is meant for people who use a normal amount of data like 10-15GB and aren't using mobile internet for torrents or useless crap. That is just a suggestion and obviously this can be used for anyone who wants to. Again, you guys are the ones who editing your own services.jar and not me! I am not responsible! Like Pres Nixon said, "I am not a crook!" [sic]
One last (fairly significant) consideration: bear in mind that some carriers aren't so lenient about data use, and if you go over your usage or are caught using this modification, the consequences may not be pretty.
10 points to Gryffindor for every person who gets why this fits.
Think you're ready to take the leap? Read things through carefully a few times, make sure you have everything up to date and ready to go, and dive in. Let us know how it goes (although asking for help probably won't get you far, since this isn't our method, and it's not exactly simple). And don't forget to show the guys who came up with the hack some love - in sino8r's words:
First, I'd like to thank androidcues for extensive testing. Also, thanks to T.C.P. for giving us a hand. And finally JesusFreke for creating "smali" that so many of us use today.