t-zones (a.k.a. $5.99 Internet access) on the iPhone

UPDATE 3 (May 12, 2009): This tutorial and the two update links below it are outdated. Instead, setting up T-zones is now a super easy 30 second process.

UPDATE 2 (July 26, 2008): There is a much easier way to set up T-Zones now.

UPDATE: After going through my logs I’ve noticed that there are a lot of Windows users checking out this guide. So I’ve added a step 0 new step 1 to help them out.

I received my iPhone on Friday and immediately went about actvating and unlocking it, and at the end of the tutorial, there’s a link to a forum discussion on getting t-zones working on your iPhone. After reading through it and placing a call to t-mobile’s customer support (great folks over there!) I finally got it working. Here are the steps needed in an easy to follow format.

I’m going to make a couple of assumptions in this tutorial.

  • You have T-Mobile and t-zones
  • You installed OpenSSH on your iPhone (part 3 of the unlocking process)
  • Your iPhone has Wi-Fi access

Instructions

  1. Windows users install WinSCP If you’re running Windows, install a file transfer client to move the files between your computer and your iPhone. I recommend WinSCP. If the tutorial makes anymore mention about transferring files between computers, just use WinSCP and connect to the IP of your iPhone. Set the protocol to be SSH/SSH2.

  2. Turn off Auto-Lock Go to Settings -> General -> Auto-Lock and select Never. You can turn it back on after you’re done with this, but for now disable it.

  3. Enter APN, username and password Go to Settings -> General -> Network -> Edge.For the APN field enterwap.voicestream.com`. Make sure the username and password fields are empty.

  4. Create proxy.pac Thanks to kdub3000 for the file contents. Open TextEdit or your favorite text editor on Linux, and paste in the following code into a new document:

    function FindProxyForURL(url, host)
    {
    if (isInNet(myIpAddress(), "10.0.0.0", "255.0.0.0"))
    return "PROXY 216.155.165.50:8080";
    else
    return "DIRECT";
    }
    

    Save the file to your Desktop as proxy.pac. On OS X, make sure TextEdit doesn’t append a .txt extension to the file.

  5. Find the IP address of your iPhone Go to Settings -> Wi-Fi, and click on the blue dot next to the name of the network your iPhone is currently connected to (the one with the checkbox). Look at the IP address there and remember it or write it down.

  6. Upload proxy.pac to the iPhone Now we need to copy proxy.pac to our iPhone’s /private/var/root/ directory. If you know how to do this using Cyberduck or any other file transfer program, feel free to do so. Otherwise open up a terminal (OS X, go to Applications -> Utilities -> Terminal.app) and enter the following command with the ip address of your iPhone substituted for the $IPHONE_IP:

    scp ~/Desktop/proxy.pac root@$IPHONE_IP:/private/var/root/
    

    On my Wi-Fi network, my iPhone’s IP is 192.168.1.52, so I typed this command:

    scp ~/Desktop/proxy.pac root@192.168.1.52:/private/var/root/
    

    Hit ‘Enter’ and it will prompt you for your iPhone’s root password. The default is dottie.

  7. Update preferences.plist Now we’ll copy preferences.plist to our local system for editing. It’s located at /private/var/root/Library/Preferences/SystemConfiguration/preferences.plist on your iPhone. Download it to your desktop using your favorite file transfer client, or use this command:

    scp root@$IPHONE_IP:/private/var/root/Library/Preferences/SystemConfiguration/preferences.plist ~/Desktop/
    

    Open up the preferences.plist file from your Desktop in your text editor, and look for the area of the file where it has the lines:

    <key>DeviceName</key>
    <string>ip1<string>
    

    Note that the text inside the string tags should be ip1 (as opposed to en0, ip2 or anything else). Now add the following chunk of xml to the file in the appropriate place (thanks to syasses):

    <key>Interface</key>
    <dict>
    <key>DeviceName</key>
    <string>ip1</string>
    <key>Hardware</key>
    <string>com.apple.CommCenter</string>
    <key>Type</key>
    <string>com.apple.CommCenter</string>
    </dict>
    // new stuff starts here
    <key>Proxies</key>
    <dict>
    <key>ProxyAutoConfigEnable</key>
    <integer>1</integer>
    <key>ProxyAutoConfigURLString</key>
    <string>file:///private/var/root/proxy.pac</string>
    </dict>
    // new stuff ends here
    <key>com.apple.CommCenter</key>
    <dict>
    <key>AllowNetworkAccess</key>
    <integer>1</integer>
    <key>Available</key>
    <integer>1</integer>
    <key>Setup</key>
    

    By adding this code to the file, you’re instructing your iPhone to use a proxy (T-Mobile’s t-zones server) for your communications over GPRS. Save the file. Now upload the file back to your iPhone with the command:

    scp ~/Desktop/preferences.plist root@$IPHONE_IP:/private/var/root/Library/Preferences/SystemConfiguration/
    
  8. Restart the iPhone Hold down the sleep button for 3 seconds on your iPhone, and then turn it off. Turn it back on, and you should be able to access the Internet through t-zones for just $6!

I tested my GPRS speed at iphonenetworktest.com and I got 154.2 kbits/s.