iOS Carrier Bundles Demystified

One of my favourite things about the iPhone is that it's fairly
painless to throw another SIM card into your iPhone, and have all of
your carriers settings just work (internet, MMS, voicemail, and
tethering if your carrier allows it). The way this magic works is that
Apple actually has the settings for all of the official iPhone carriers
preloaded into iOS. If you throw in a SIM from a supported carrier,
the settings are simply loaded and away you go. These are referred to
as carrier bundles (or, carrier settings according to Apple).

Carrier settings updates are small files (about 10 kb)
that are installed on your iPhone or iPad (Wi-Fi + Cellular models).
Carrier settings include updates to Access Point Names (APNs), MMS
settings, features such as tethering, and default apps such as Stocks,
Maps, and Weather.

On your iOS device, they live at

/var/mobile/Library/Carrier Bundles/ - bundles
that have been updated with iTunes, or pushed over the air

/System/Library/Carrier Bundles/ - stock bundles that ship
with iOS

On your computer side, they can be found at

~/Library/iTunes/iPhone Carrier Support/

If you haven't ever had iTunes prompt you about a carrier update, this
folder probably won't exist.

Carrier bundles themselves are simply .zip archives, but with a .ipcc
extension instead. They're named after your carrier, and may also say
whether they're for your iPhone or iPad
(Telstra_au_iPhone.ipcc)

Carriers can also push updates over the air - no need to tether your
computer to iTunes to get updates. Your iOS device will check every
several days for updates, or you can also force a check by going to
Settings &gt; General &gt; About and waiting several seconds.

Unfortunately, the only 'editable' part of a carrier bundle as of iOS
4 are the carrier logos. Originally, it was possible to make your own
bundles from scratch and configure everything; carrier name, MMS,
voicemail, and APNs. APNs began to be signed in iOS 3.1, after
tethering was introduced and people were configuring their own APNs to
enable tethering without the support of their carrier (and get
tethering for free if your carrier charged for it, such as AT&T).

iOS 4 then introduced signing the whole carrier.plist file - no
changes could be made, and any that were would only take effect on a
jailbroken phone with 'commcenter' patched to bypass signature checks.
Luckily - the logos are still fair game. It's the most customisation
you can do on your stock iPhone without jailbreaking! You can check
out my own custom carrier bundles here.

It's easy to tweak and customise your own bundle with your logo and
then push it to your phone. It just takes a bit of time and patience.
The main drawback is not being able to go back to the original stock
logo without restoring.

Do a quick search to find your carrier and see if a bundle is available.

If you can't find a version for your carrier, they haven't pushed an
update over the air and you can only find your bundle inside iOS.
Unfortunately you'll need a jailbroken phone to get the bundles from
here.

Once you've got your carrier.ipcc, unzip and open Carrier.bundle.

You can throw your own logos in here; you'll need to follow the same
naming structures. There's no need to overwrite the existingFSO_CARRIER_CarrierName.png andTS_CARRIER_CarrierName.png either - since this works best on
retina devices, just add @2x to the end of the filename. (eg,FSO_CARRIER_CarrierName@2x.png) - as such, you're not
replacing the logo in the bundle, just adding more to it. iOS will use
@2x files on a retina device if available)

After adding your own images, you'll also need to bump the version
number so iOS will accept it. You'll need a property list editor (If
you have Xcode installed, you're already set) and open up Info.plist
and Version.plist

For Version.plist and Info.plist, you'll need to edit the following;

CFBundleShortVersionString

CFBundleVersion

If the current value is 13.0 for example, you just need to bump it to
13.0.1. If you then want to make more changes and push it back, bump
it to 13.0.2 and so on.

Now you've cooked up your perfect bundle, you just need to put it back
inside the 'Payload' folder, zip it back up, rename to
yourcarrier.ipcc, and push it on with iTunes. Easy!

Unfortunately, all of the exciting settings are in Carrier.plist which
can't be edited without a jailbreak.

Carriers get to dictate many exciting settings - how many people you
can call at once, whether the carrier can set the time on your device,
whether the 3G or LTE toggle shows, and they can also allow software
updates over the air if so desired - presumably disabled to prevent
any potential billshock events.
They also dictate whether you're able to edit any APNs yourself, and
which APNs you can edit. Telstra only allows the tethering APN to be
edited.

iMessage and FaceTime use SMS for activation, and to verify your phone
number. Some carriers like Telstra operate their own local (+61)
number for activations, and others rely on Apple's international
service (+44). As such, your carrier can also warn you about any
potential charges.

Carriers also dictate what traffic uses which APN - for carriers where
tethering requires payment; tethering traffic simply uses a different
APN that isn't enabled until you've paid. (eg, mobile data may use the
'internet' APN, and tethering may use 'tether'). In Australia, Telstra
uses telstra.wap for all internet traffic. Optus has
different APNs for tethering and mobile data. This is an issue if
you're a MVNO customer for example - Optus dictates that 'connect'
must be used for tethering, but your MVNO may use 'internet'.
Unfortunately you of course cannot edit these APNs.

To be clear here - it is the carrier actively controlling this - Apple themselves do not prevent tethering, but give carriers the controls to
do so. Unfortunately customers end up missing out.

Beau Giles is a 19 year old technology enthusiast
and social media junkie. Fresh out of TAFE, he loves getting his hands
on new technology, pulling it apart, and then putting it back together
just to find out how it works, what it should do differently, and why
you want it. When he's not at home tinkering around, he's out and
about trying to improve his photography. You can follow him on Twitter or drop him a line at his
website.