[T-Mobile, Samsung Galaxy SIII] jovy23:
Hello to all Developers and XDA members! I have come here to give you a guide on how you can use native tethering without restrictions and here is how you can do it!

What Is Required...

★ First you need to have experience and know how to decompile/recompile apks with Apktools, apkmanager, smali, and baksmali

★ Have 7-zip installed onto your computer/laptop

★ Make sure you have Notepad++ also installed!

★HOW TO ENABLE NATIVE TETHERING WITHOUT RESTRICTIONS★

STEP 1

★ Go into your system/framework folder and take out your "framework-res.apk"

★ Then use one of the applications such as apktools or apkmanager and then use the commands to decompile the framework-res.apk

★ Once you have decompiled the framework-res.apk, go to:

Now with Notepad++ go and find:

<string-array name="config_mobile_hotspot_provision_app">

And then it will look something like this:

<string-array name="config_mobile_hotspot_provision_app">
<item>com.sec.tetheringprovision</item>
<item>com.sec.tetheringprovision.TetheringProvisionActivity</item>
</string-array>

Now what your going to need to do is remove both of the <item> lines that has "tetheringprovision" in them, the "string-" in the first line, and then remove the whole </string-array> from the last line, once you do it will look something like this:

<array name="config_mobile_hotspot_provision_app" />

Once your done now Recompile your framework-res.apk using apktools or apkmanager and your DONE!!!

NOTE: Remember by removing those "com.sec.tetheringprovision" lines in the arrays.xml, it bypasses all the checks, There will be no more popup message that's telling you to upgrade to a T-Mobile Hotspot Plan, and you will get no errors!. There is no need for any third party apps or creating a APN just to have Tether to work properly!

STEP 2

The next step that your going to have to do is go into your roms:

folder and then remove:

This TetheringProvision.apk is no longer needed. If you were to remove it without doing the framework-res.apk mod, you will get constant force closes and a "Tetheringprovision Is Not Responding Message" after you have enabled Mobile Hotspot on your Samsung Galaxy S3 device. But since you have modded it, you can just delete it.

STEP 3

Now for this step, this is going to give you the opportunity to edit/remove the locked APNS And also it will show you how you can see any of the hidden APN's from the "Access Point Names" Menu which is in Settings-More Settings-Mobile Networks-Access Point Names. Also this step your going to have to change the APN site name which makes you tether without bringing you into the T-Mobile Hotspot Browser Page.

First your going to have to go into your roms folder which is:

And then open up "customer.xml" with your notepad++ for editing.

Now go all the way to the bottom of this file and you will see the last APN Tethering setting which should looks like this:

<NetworkName>T-Mobile</NetworkName>
<Editable>no</Editable>
<EnableStatus>enable</EnableStatus>
<ProfileName>T-Mobile Tethering</ProfileName>
<Auth>none</Auth>
<Bearer>ps</Bearer>
<Protocol>http</Protocol>
<Proxy>
<EnableFlag>off</EnableFlag>
</Proxy>
<PSparam>
<APN>pcweb.tmobile.com</APN>

Now what your going to have to do is change where it says <Editable>no</Editable> into <Editable>yes</Editable>. By changing this, this will give you the permission to edit/remove this APN setting. REMEMBER: This APN Tethering setting only shows after you first use Tethering! And once your done with that go to where it says <APN>pcweb.tmobile.com</APN> and change it into <APN>epc.tmobile.com</APN>. By changing this APN site name it should give you total access for you to tether without bringing you into the T-Mobile Hotspot Browser Page from your PC's internet browser.

Once done it will look like this:

<NetworkName>T-Mobile</NetworkName>
[B]<Editable>yes</Editable>[/B]
<EnableStatus>enable</EnableStatus>
<ProfileName>T-Mobile Tethering</ProfileName>
<Auth>none</Auth>
<Bearer>ps</Bearer>
<Protocol>http</Protocol>
<Proxy>
<EnableFlag>off</EnableFlag>
</Proxy>
<PSparam>
[B]<APN>epc.tmobile.com</APN>[/B]

Now save this file with the new edits with Notepad++ and your DONE!

But your not done yet with this step, your going to have to do one last thing. The Tethering APN that you have modified from "above" is still hidden. Now what your going to have to do is go into your roms folder again to:

And then open up "feature.xml" with your notepad++ for editing.

Now with Notepad++ go and find:

Now DELETE THIS WHOLE LINE! [This hides the Tethering APN that you have modified from "above" from view]. Once your done save this file with Notepad++ and THATS IT! Now Go Enjoy Your Native Tethering!!! ;)

STILL HAVING PROBLEMS WITH TETHERING EVEN AFTER THE MOD? - Go into "Settings-More Settings-Mobile Networks-Access Point Names" and then press your phone's "Menu Settings Key" on the bottom left of your phone and then select "Reset To Default" and see if that helps.

★HOW TO ENABLE BLUETOOTH TETHERING★

This guide will show you how you can enable bluetooth tethering so here is how you can do it!

STEP 1

★ Go into your system/framework folder and take out your "framework-res.apk"

★ Then use one of the applications such as apktools or apkmanager and then use the commands to decompile the framework-res.apk

★ Once you have decompiled the framework-res.apk, go to:

Now with Notepad++ go and find:

<array name="config_tether_bluetooth_regexs" />

And then it will look something like this:

<array name="config_tether_wimax_regexs" />
<array name="config_tether_bluetooth_regexs" />
<array name="config_tether_dhcp_range" />

Now what your going to need to do is add "string-" right before the "array" in the beginning of the config_tether_bluetooth_regexs, then under it add <item>bnep\\d</item> and make sure that the <item> from the beginning is aligned the same like the other <item> from the arrays.xml. Once you do, add </string-array> right under the "bnep\\d" line, then it will look something like this:

<array name="config_tether_wimax_regexs" />
[B]<string-array name="config_tether_bluetooth_regexs">
<item>bnep\\d</item>
</string-array>[/B]
<array name="config_tether_dhcp_range" />

Once your done now Recompile your framework-res.apk using apktools or apkmanager and your DONE!!!

★HOW TO EVADE/REMOVE DATA CAP THROTTLING★

This guide will show you how you can evade/remove data cap throttling and this is good for the people who don't have a unlimited data plan for their phone's carrier so here is how you can do it!

STEP 1

★ Go into your system/framework folder and take out your "services.jar"

★ Then use one of the applications such as apktool and then use baksmali commands to decompile and extract the classes.dex from the services.jar

★ Once you have decompiled the services.jar, go to:

Now open up "ThrottleService.smali" with your notepad++ for editing.

Once your in here go and find:

.method static synthetic access$1002(Lcom/android/server/ThrottleService;J)J

And then you will see something like this:

.method static synthetic access$1002(Lcom/android/server/ThrottleService;J)J
.registers 3
.parameter "x0"
.parameter "x1"

.prologue
.line 71
iput-wide p1, p0, Lcom/android/server/ThrottleService;->mMaxNtpCacheAge:J

return-wide p1
.end method

Now what your going to need to do is add an empty space below ".line 71" and then above "iput-wide" your going to add "const-wide/16 p1, 0x0", once you do it will look something like this:

.method static synthetic access$1002(Lcom/android/server/ThrottleService;J)J
.registers 3
.parameter "x0"
.parameter "x1"

.prologue
.line 71

[B]const-wide/16 p1, 0x0[/B]
iput-wide p1, p0, Lcom/android/server/ThrottleService;->mMaxNtpCacheAge:J

return-wide p1
.end method

By adding that, this will invoke the ".method private checkThrottleAndPostNotification(J)V" and also the clearThrottleAndNotification()V which are both in the "ThrottleService$MyHandler.smali" which looks like this:

.method private checkThrottleAndPostNotification(J)V
.registers 28
.parameter "currentTotal"

.prologue
.line 588
move-object/from16 v0, p0

iget-object v0, v0, Lcom/android/server/ThrottleService$MyHandler;->this$0:Lcom/android/server/ThrottleService;

move-object/from16 v21, v0

#getter for: Lcom/android/server/ThrottleService;->mPolicyThreshold:Ljava/util/concurrent/atomic/AtomicLong;
invoke-static/range {v21 .. v21}, Lcom/android/server/ThrottleService;->access$500(Lcom/android/server/ThrottleService;)Ljava/util/concurrent/atomic/AtomicLong;

move-result-object v21

invoke-virtual/range {v21 .. v21}, Ljava/util/concurrent/atomic/AtomicLong;->get()J

move-result-wide v15

.line 589
.local v15, threshold:J
const-wide/16 v21, 0x0

cmp-long v21, v15, v21

if-nez v21, :cond_18

.line 590
invoke-direct/range {p0 .. p0}, Lcom/android/server/ThrottleService$MyHandler;->clearThrottleAndNotification()V

.line 663
:cond_17
:goto_17
return-void

.line 596
:cond_18
move-object/from16 v0, p0

Now once your done with modifying the "ThrottleService.smali", Recompile your services.jar using apktool and smali commands and your DONE!

IMPORTANT REMINDER - This mod works best for the people who DON'T have a unlimited data plan so it will be good for devs to make a flashable.zip in their OP with this mod with their roms services.jar which could be different "since some devs maybe did other mods/tweaks into their roms services.jar" so the users that be having any throttling issues can flash it. Also use at your own risk!