I’ve been a big fan of unlocked GSM phones since my first one back in 2009. I’ve also been through a surprising number of different phone since then, but all of them have been 2nd (or 3rd) hand and have been a good price for a phone that still has lots of use left in it. My latest phone the Samsung Galaxy S Vibrant (i9000m) is no different, but it came to me locked to Bell.
I purchased the i9000m knowing it could be easily unlocked if you had the right magic. With the stock firmware, if you don’t have the phone unlocked you’ll see what’s pictured at the top of this post when you install a SIM card.
It turns out the forums have a great how to guide, with pointers to an app on the Android Market if you’re afraid of a little bit of hex editing. It should go without saying that I selected the hex editing route. I’ll describe the steps I used here, but all credit to the folks in the forums for figuring this out.
I will assume that you’ve rooted your i9000m and you’re not incapable of using a hex editor.
Step 1: We’re going to copy some non-volatile memory off the phone that contains the ‘lock’. Perform the following commands on the phone (probably via ADB).
$ su
# cat /efs/nv_data.bin >> /sdcard/nv_data.bin
Now copy that file onto your PC for editing. Make a backup of the original before step 2.
Step 2: Edit that file, I used hexedit on Ubuntu. The lock bit is inside of the byte at 0x181469
in the file. See the green circle below, change that 01
into a 00
and save the file.
Starting at offset 0x181468
you should see the series of digits: ff 01 00 00 00 00 46 46
The XDA post describes it as follows:
There are 5 different types of locks in 5 different bytes
the FF byte should be left alone
the first byte after the FF is the network lock
the next byte is the network subset lock
the next byte is the sp lock
the next byte is the cp lock
the last byte appears to be a data lock.
the 46 46 should be left alone
Step 3: Use the modified file to update your phone. Let’s assume you copied the modified file to /sdcard/nv_data.bin on the phone, and again the commands below are executed on the phone.
$ su
# rm /efs/nv_data.bin
# rm /efs/nv_data.bin.md5
# cat /sdcard/nv_data.bin >> /efs/nv_data.bin
# chmod 755 /efs/nv_data.bin
# chown radio.radio /efs/nv_data.bin || chown 1001.1001 /efs/nv_data.bin
# reboot
That’s it, you’re unlocked. The unlock should persist across ROM (firmware) changes.
References: a great article with pointers to valuable information on the i9000 series.