[G2 and Desire Z General] kusuriurikun:
It's been my understanding (both with the stuff you reported in this thread and in threads previously--both here and on other fora) that T-Mobile normally uses the User-Agent field in browsers to determine whether tethering is occuring.

More about this than you ever wanted to know:

Most browsers (Firefox and Chrome, for example) will send a User-Agent string to an HTTP host so that the host can send a version friendly towards that browser--this is used primarily for two things anymore, either:

a) Sending mobile-friendly webpages (used to be strictly for WAP back in the Bad Old Days, now it's mostly used for iPhone and Android-friendly pages)

b) Sending "IE6 friendly" pages to corporate users with ancient browsers :D

Where one gets into trouble with tethering on T-Mobile (and how T-Mobile can sniff this out)--your browser on your phone and the browser on the PC (as you discovered) send out different User-Agent strings. The site http://whatsmyuseragent.com/ actually is VERY useful for showing what's going on...

The User-Agent string on a PC is usually pretty blatant and flags it as a PC. For example, on Firefox on my PC (a WinXP box), the default User-Agent shows as "Mozilla/5.0 (Windows NT 5.1; rv:6.0.1) Gecko/20100101 Firefox/6.0.1", for instance; Safari on MacOS X identifies as "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_1) AppleWebKit/534.48.3 (KHTML, like Gecko) Version/5.1 Safari/534.48.32011-09-04 01:38:54"; Opera for WinXP identifies as "Opera/9.80 (Windows NT 5.1; U; en) Presto/2.7.62 Version/11.00"; and Chrome for WinXP identifies as "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.127 Safari/534.16". (That Chrome one is going to be especially useful to us in a bit. :D)

Not surprisingly, most browsers for Android EXPLICITLY flag as being Android-specific; Dolphin HD sends its default User-Agent as "Mozilla/5.0 (Linux; U; Android 2.3.5; en-us; HTC Vision Build/GRJ40) AppleWebKit/533.1 (KHTML, like Gecho) Version/4.0 Mobile Safari/533.1" whilst the standard browser identifies identically--basically, the User-Agent identifies not only that you're using an Android phone but specific OS version (in my case, ILWT CW7) and apparently calls for iPhone-friendly pages (Mobile Safari and AppleWebKit flag for iPhone-friendly pages as Mobile Safari is the default browser for iPhone).

(And for direct comparison with the iPhone itself: its default User-Agent is "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16".)

Of note--as you've probably seen--the default User-Agent string for Androids is almost identical to that of Chrome--there's a reason for this; the default browser on Android phones is basically a mobile version of Chrome. This also makes User-Agent particularly easy to fix if you're using Chrome as a browser on your PC :D

This is also why VPN works (it obfuscates the connection altogether so that T-Mobile's servers can't sniff an offending User-Agent). It's pretty obvious that T-Mobile is sniffing for "foreign User-Agents" in determining whether tethering is taking place :D

For at least Firefox and Chrome, there are ways to change the User-Agent on the PC itself that have been reported to work to defeat "tethering blocks". On Chrome you can literally create a shortcut with a startup option to use whatever user agent you want (details at http://knol.google.com/k/warren-l/google-chrome-change-user-agent-to).

With Firefox, the relevant extension for Firefox is User Agent Switcher (https://addons.mozilla.org/en-US/firefox/addon/user-agent-switcher/) which allows you to enter a custom User-Agent. Click on Tools/Default User Agent/Edit User Agents; click "New", use what I posted for the standard Android User-Agent and the existing iPhone User-Agent as templates for creating a new Android User-Agent.