Tech By marco, February 09 2010

Well, now that Internet Tethering works again on non-carrier iPhones (i.e., those that are unlocked and not in use on an iPhone-carrier network) I've finally been able to upgrade while still keeping tethering working. This has required an update of my Vodafone carrier bundle, so that is now available on-line in the same spot as before (here). I refer you to my earlier post, Updated Vodafone NL Carrier settings, for instructions on how to install it.

Happy tethering!

General By marco, June 18 2009

Update: the ipcc has been updated to work on iPhoneOS 3.1.3. It should still work on 3.0, too.

With the new 3.0 iPhoneOS a new carrier bundle is needed so as to enable a few new features. So I've uploaded a new Vodafone NL Carrier bundle, in IPCC format. Because this is the format Apple uses for their carrier updates, a jailbroken phone is not needed.

Simply download the IPCC, here, and put it on your desktop. Download that file such that it does not get processed after the download finishes. In Safari this can be accomplished by option-clicking the link. Note: IPCC files are really renamed zip files. Browsers try to be clever so the file might be renamed to end in .zip or .ipcc.zip. Make sure the file name ends in .ipcc or iTunes won't recognise it.

You'll need iTunes 8.2 with carrier testing enabled. On a Mac, this is done by typing:

defaults write com.apple.iTunes carrier-testing -bool TRUE
in a Terminal window, and restarting iTunes. Then, connect your phone to your computer, option-click the 'Check for Update' button and select the ipcc file. It should apply immediately.

This IPCC file does the following:

  • Sets a carrier logo to eliminate scrolling 'Voda...'
  • Disables 'call forwarded' notification when calling
  • Enables editing of data settings (APN, etc.)
  • Enables internet tethering
  • Enables MMS (settings preinserted)
Note: I had to restart my phone to get the MMS settings recognised.

Tech By marco, September 13 2008

I knew pretty soon after it was released that I wanted an iPhone. Shiny and new, so it must be made mine. It had a few show-stopper problems, however:

  • I detest SIM-locked phones.
  • A two-year contract is even worse.
  • T-Mobile is shit.
Luckily, all these problems could be solved thanks to the nice people just south of us. Except they're completely out of stock. Italy to the rescue: Telecom Italia Mobile (TIM) has shitlots of them and are willing to sell you just the phone, without SIM-locks and without a contract. Excellent. Off we are. (In reality it's just coincidence that I happened to be going there, but let's pretend we're decadent.)

In Italy, all was fine. I bought the phone, stuck my SIM-card in and activated it. It took a few seconds to recognise it wasn't anywhere near my home network so it looked for other interesting ones. Vodafone happens to also have an Italian presence, so of course my SIM instructs the phone to use that network. 'Voda IT'. Good. We're all set.

And then we got back to the Netherlands. Vodafone doesn't sell iPhones here, so my phone has no idea of this network, unlike in Italy. The carrier name here, therefore, is 'Voda...' most of the time. That I can live with, but due to the phone not having any settings for this network it would also pop up a notice every time I initiated a call: "Call-forwarding activated".

This is because Vodafone will redirect any callers to Voicemail for you if they call while you're on the phone. Even if you don't have voicemail: in that case, they'll get a recording saying you're unavailable. Fine, but the popup is annoying.

There is only One Way to fix this: Carrier Bundles.

iPhone uses Carrier bundles to set carrier-specific information, such as the APNs for data services, whether or not to use the network for Time info, if you can edit the APNs, the carrier logos, etc., and among those settings is a 'Display Call Forwarding' setting. This we need to turn off. There are two ways:

  • Edit the 'Unknown Carrier' bundle, which will apply the settings to all unknown networks, or
  • Create a 'Vodafone NL' bundle.
The former will always fix the popup, but will also apply to other SIMs inserted into your phone which you may not want. And if you edit a logo here, it'll always show up even if you're on another country's unknown network. Bad.

So instead I made a Vodafone NL bundle that contains logos in the same style as the other Vodafone carrier bundles (so it says 'Voda NL') and with the right internet settings and such.

I feel this may be useful to more people than just me, so here it is:

Download Vodafone NL carrier bundle. Note: a newer version of this file exists, for iPhoneOS 3.0. Find it here.

Currently, you need a jailbroken phone and some SSH skills to get it installed. The process is as follows:

  • Copy the bundle (it's a directory, technically) to your phone's "/System/Library/Carrier Bundles" directory. This can be done using scp -r or some other tool that is capable of transferring entire directories.
  • Create a Symlink in the same directory, pointing to the bundle, called "20404". This is the network identification number (204 for The Netherlands, 04 for Vodafone Libertel N.V.) This you can do by cd'ing into the directory and typing "ln -s Vodafone_nl.bundle 20404").
  • Reboot the phone. Killing Springboard does not appear to suffice.
As of now, you should have 'Voda NL' in your status bar, and not be bothered by the Call Forwarding popup.

General By marco, February 15 2008

Note: as of, I suspect, Lion, Time Machine will recognise this situation itself and ask if the backup history should be inherited when you connect your time machine drive to your new Mac. This is essentially the same as the below procedure.

With my beloved Macbook Pro in the shop for repairs involving the trackpad and keyboard, I've temporarily switched to a regular Macbook to which I've restored a backup from Time Machine. This is great: just boot the Leopard DVD, tell it you want to restore a backup, let it sit for an hour and a half and you're done. It has your system ready to go, just as it was. Even on different hardware. (Of course, there are some requirements to doing it this way, like the hardware being compatible, drive large enough, etc.)

However after a day, I noticed something: Time Machine had stopped backing up and wouldn't show my old backups in its whiz-bang interface. Telling it to back up to my existing drive would just make it start all over again. Problem!

As it turns out, this happens only because not only did I switch drives (this, of course, is the normal use case for a full-system backup app), I also switched machines. And Time Machine keeps track of what machine it was backing up from, possibly to avoid issues with two different machines backing up to the same drive that also happen to have the same name.

It wasn't immediately obvious where it saves this info, though. None of the files in the backup directory seemed to contain any machine-specific information. Some digging revealed that the computer's MAC-address is stored as an Extended Attribute in the backup's top-level folder. This information can be revealed with the 'xattr' command (-l for listing, -w for writing):

bash-3.2# xattr -l *
Portia: com.apple.backupd.BackupMachineAddress:
0000   30 30 3A 31 36 3A 63 62 3A 39 30 3A 66 65 3A 34    00:16:cb:90:fe:4
0010   31 00                                              1.
Ok, so in theory I can just change that and be on my way again. Wrong! The backup folders are protected by ACLs so strong even the root user can't break through them. Trying to change anything about these folders (including the permissions, deleting them, etc.) just results in an 'Operation not permitted' error:
bash-3.2# chmod -N Portia
chmod: Failed to clear ACL on file Portia: Operation not permitted

bash-3.2# xattr -w com.apple.backupd.BackupMachineAddress 00:16:cb:90:62:0d Portia [Errno 1] Operation not permitted: 'Portia' Luckily, there's a way around this problem: simply disable the ACLs on the drive. This is done using fsaclctl, like so (my backup volume is called 'Thingz'):

fsaclctl -p /Volumes/Thingz -d
-p for the path to the drive, -d to disable.

After executing that, OSX will simply ignore any ACLs present. They're still there, just not used.

So to get to the point, here's how to change a Time Machine backup so it'll work from another machine, given a known MAC-address (as can be extracted from 'ifconfig'). In the example below, the drive is at '/Volumes/Thingz', the MAC-address of the new machine is 00:16:cb:90:62:0d and the machine's name is 'Portia'.

First, disable Time Machine (unselect the backup drive and turn it off), then, adapt the following to your needs:

cd /Volumes/Thingz
fsaclctl -p /Volumes/Thingz -d
xattr -w com.apple.backupd.BackupMachineAddress 00:16:cb:90:62:0d Portia
fsaclctl -p /Volumes/Thingz -e
Tell Time Machine to use the drive as a backup drive again, and it should continue right where it left off, with all the backups available again in the flying interface.

Small print, at regular size I can not guarantee that this will work for everyone. It seems to work just fine for me, however. I am not responsible if you wipe all your backups because you tried this. Thanks.

General By marco, December 25 2007

I mean, those Philips Living Colours lamps have been out there being sold to the general public for what, just about a year now? And no one google knows about has had the idea of computering it up? Seriously?

Obviously the internet has lost its cool.

So now I have one of those lamps (which, by the way, are really nice) and all I can do with it so far is use the remote to make it change colour.