I was not able to unlock my phone Froyo 2.2 I9000M phone running I9000UGJK4 firmware by using this official thread http://forum.xda-developers.com/showthread.php?t=761045
and after few hours of searching I found this method which worked for me from first attempt.
I give all the credits for this idea to cursor2010 from http://forum.xda-developers.com/show...&postcount=156
Here are the detailed steps
* Your phone must be rooted (I used SuperOneClick http://forum.xda-developers.com/showthread.php?t=803682) to do this unlocking and busybox from market is installed
* Get the archive file from first post of this topic. The archive contains ADB software which we will use to connect to the phone.
* Turn On USB debugging Application->Settings->Application->Development
* Follow the instructions of STEP 4 from http://www.communityhosting.net/sgsunlock/i9000.html to get your nv_data.bin to your PC
Get your current nv_data.bin file from the /efs directory on your phone. This can be done with ADB. Most often, the nv_data.bin file is not readable and you will get a permission denied message. You'll need to enter the commands manually.
To do this with ADB, from the DOS command prompt you can type:
adb pull /efs/nv_data.bin
If you receive a permission denied error, you can fix it by typing the following commands from an ADB shell (type "adb shell" at the DOS command prompt) or from within a terminal on the phone:
chmod 777 /efs/nv_data.bin
Then from the DOS command prompt:
adb pull /efs/nv_data.bin
Using Hex editor edit the file ( you can use any hex editor, http://www.logitheque.com/logiciels/...thexa_9903.htm for example). I personally use UltraEdit.
At the offset of 180069H you will see your provider MCC and MNC codes see http://en.wikipedia.org/wiki/Mobile_Network_Code
In my case the code was 30261020404... which is Bell Canada, so I changed 610 to 720 Rogers Canada now the code is 30272020404...
Again the offset in the file is 180069H.
Save the file on the pc.
* Follow the instructions from http://forum.xda-developers.com/show...&postcount=107
Copy your nv_data.bin to temporary folder on your phone:
adb shell "mkdir /sdcard/efs"
adb push nv_data.bin /sdcard/efs
ls -l -a /efs
If there is an nv_data.bin.md5 file in the directory, all is well. You should continue with these commands:
mv /efs/.nv_data.bak /efs/.nv_data.bakk
mv /efs/.nv_data.bak.md5 /efs/.nv_data.bakk.md5
busybox cp /sdcard/efs/nv_data.bin /efs/nv_data.bin
chmod 755 /efs/nv_data.bin
chown radio.radio /efs/nv_data.bin
if you have errors on the chown command, use
chown 1001.1001 /efs/nv_data.bin
If there was no nv_data.bin.md5 file, then something is wrong and you'll need to see other options or reflash again with a known working ROM that generates a new MD5 file when it's missing.
* Reboot the phone, it should not ask any unlock codes or anything, in my case it simply just registered on Rogers network
* Obviously you also need to program your APN settings for Rogers from http://forum.xda-developers.com/showthread.php?t=809003 to make your 3G working. For your own provider please search forum.
I wish it would be much simpler or automated or tested on bigger variety of phones.If somebody could gather the statistics and check if this method is applicable throughout all the versions of I9000, that would be very nice.
Feel free to comment my post.