3 Carrier Bundle for iPhone

Update

This post is now here solely for posterity, and will not be updated in the future. I’ve combined all my 3/iPhone related tools into a single entry that contains all the various bits and pieces of information you need to use them.


Three are not an official carrier of the iPhone in Australia, however they do offer BYO iPhone plans for those wishing to buy it outright from other carriers.

Because they aren’t an official carrier, some settings need to be manually entered [such as the APN for internet access] and some can not be edited easily [such as the voicemail number].

To solve this problem, I’ve created a carrier bundle — a set of instructions the iPhone uses for such features — specifically for those using the iPhone on Three. It also includes a 3 logo as the carrier name.

3 Carrier Bundle on a black background

It requires a jailbroken iPhone, and access to an SFTP and SSH command-line app, and takes about 2 minutes to install.

The instructions are pretty self-explanatory, but if you read through them and don’t understand what’s going on before you start, I would recommend you either find someone who does, or don’t do it at all. If you have any questions, contact me

The instructions below are for Mac OS X and iPhone OS 2.1. They should be pretty easy to adapt to equivalent Windows apps.

What does it do?

The Hutchison_au carrier bundle [version 2] makes the following changes:

  • Adds 2 PNG files [one for black background, one for white] of the 3 logo to be used as the carrier logo in the menu bar
  • Adds 4 PNG files — One of each for a black background and a white background of a 3 logo [for 3G coverage] and a 3 logo with the letter R beside it [for Roaming]
  • Specifies 3services as the APN, and specifies that it can be edited
  • Specifies 333 as the voicemail number in the phone app
  • Turns off the “Call Forwarding Active” notice when making a call
  • Adds Call Forwarding, Call Waiting, Show My Caller ID and SIM PIN options in Settings -> Phone
  • Adds a shortcut to the My3 account page to Settings -> Phone
  • Adds 50506 as a supported SIM carrier ID [Combined MNC and MCC]
  • Changes 50501 from being a recognised carrier ID for Telstra to “Roaming” (optional)
  • Adds smtp.three.com.au:25 as an SMTP server
  • Adds three.com.au, Planet3, and My3 Account as Safari Bookmarks

Checklist

Before you start, make sure you have the following, and know how to use them:

  • A local Wifi network. If you don’t have one, you can create an ad-hoc network using your Mac.
  • SFTP app – I use Coda but you may want to try Cyberduck, which is free.
  • SSH command line app – Again, I use Coda, but you can do it using any SSH app, including the OS X Terminal
  • A jailbroken iPhone – Download QuickPwn or Pwnage tool and jailbreak your phone.
  • OpenSSH installed on the iPhone. You’ll find this package in Cydia, and you’ll likely need to reboot after installing.
  • The 3 Carrier Bundle – Download and unzip it. It should extract to a folder with an instructions file and a .bundle file.

Note: The current carrier bundle is version 2. This includes images and additional code to support changing the carrier logos when out of 3G coverage ["Roaming"]. If you do not wish to use these logos, I recommend downloading 3 Carrier Bundle v1 and ignoring the optional steps below.

Instructions

  1. Turn on your jailbroken iPhone with OpenSSH installed, and connect to the Wifi network. Then, go into Settings -> Wi-Fi -> (network name) -> Blue arrow and get the IP Address of your iPhone. Then, to ensure your iPhone doesn’t go to sleep whilst we’re busy with it, go to Settings -> Auto-Lock and select Never.

  2. Fire up your SFTP app, and connect to the iPhone using the IP Address. The default username is root and the password is alpine. If this is the first time you’ve connected to your iPhone, it may take a while. If it asks you to generate new Host Keys, say yes.

  3. By default, the SFTP app will open up in /private/var/root. Navigate to /System/Library/Carrier Bundles/ and copy the Hutchison_au.bundle file into the folder.

  4. Once it’s copied, open up an SSH command line, using the same IP Address, username and password as the SFTP connection. Type in the following two commands [hit enter after each line]:

    cd /System/Library/Carrier Bundles/
    
    ln -s Hutchison_au.bundle/ 50506
    

    The first navigates to the Carrier Bundles folder, and the second creates a symlink to the new carrier bundle we installed from 50506, the carrier number the iPhone sees from the SIM card.

    Note: Depending on your SSH client, you may need to navigate up to the root level folder before typing in the commands. The command for this is cd .. and you may need to do it a few times until you get to the root folder.

    You might also need to put a “ after the word Carrier in the first SSH command [the command will then become cd /System/Library/Carrier Bundles/] so the client knows to include the space and everything after it in the folder name.

  5. OPTIONAL: This step removes Telstra from being a recognised carrier, allowing custom carrier logos when Roaming outside 3G coverage. I have not tested the implications of this when using a Telstra SIM, but I expect it would show the custom carrier logo if installed.

    This step should only be installed with version 2 of the carrier bundle, but is not required for the rest of the bundle to function properly. If, however you choose not to perform this step, I recommend installing version 1 of the bundle.

    Changing the carrier bundle for 50501 [Telstra's and also 3's 2G Roaming carrier ID] is fairly straightforward. It first involves deleting the current link to the Telstra bundle [but not the bundle itself] and then creating a new link from 50501 to the Hutchison_au bundle we installed earlier.

    In your SFTP app, go back to the Carrier Bundles folder we were working with in step 3. At the top of the Carrier Bundles folder, you should see a lot of “folders” with titles as a 6-digit number. These folders are actually symlinks — shortcuts to the bundles based on carrier IDs. Have a look through these and find the one marked 50501. Delete it.

    Then, go back to your SSH command line, and type the following two commands:

    cd /System/Library/Carrier Bundles/
    
    ln -s Hutchison_au.bundle/ 50501
    

    This will create a symbolic link from 50501 to the Hutchison_au bundle, and the iPhone will automatically select the “3R” images when you are outside 3G coverage.

  6. Once the symlink has been created, reboot your phone by holding down the sleep/wake and home button for 10 seconds.

The changes will take place as soon as the phone connects to the mobile phone network.

Update: I forgot to mention that the original carrier bundle was put together by hewball in this Mactalk thread.

To turn off the voicemail feature [it can be annoying when you accidentally hit the button and it dials voicemail] open up carrier.plist in the Hutchison_au.bundle folder. Scroll down to find and remove the following two lines:

<key>VoicemailPilotNumber</key>
<string>333</string>

You will probably need to reboot to see the changes.

Update

An .ipcc file [essentially the .bundle above wrapped up nicely for iTunes] can be used as an easy way to install the carrier settings.

.ipcc Install Instructions

  1. Download hutchison_au.ipcc.
  2. Connect your iPhone to your computer and fire up iTunes, then select your iPhone in the sidebar.
  3. Hold option and click the “check for update” button and select the .ipcc file. iTunes will load it to the phone. You may need to reboot or remove/replace your SIM to see the changes.

Update 2

Apple have disabled the adding of non-signed .ipcc files in iTunes 8.2, released alongside iPhone OS 3.0. Everything in the default carrier bundle [ie: out of the box settings, without my carrier bundle applied] works fine, but settings need to be added manually for MMS and tethering.

Update 3

There’s now a workaround to enable unsigned .ipcc files. Fire up terminal and put in the following command: defaults write com.apple.iTunes carrier-testing -bool TRUE and then follow the instructions above.


Older posts Newer posts