[Galaxy S I9000 General] lgkahn:
Here are the steps i did and proof.

I first flashed jp2 or the full name is I9000TDOJP2

Here is a thread about it:

http://xdaforums.com/showthread.php?t=851043

I flashed via odin.

If you flash via odin immediately after do a factory reset.

Also dont panic when the first time it boots up it hangs on the S.. It is rebuilding the dalvik cache files which takes a few minutes.. DONT panic and pull battery, just wait.

Now after factory reset. You have froyo and now want to go to 2.2.1.

Also this probably will work on an i9000M (you could also use jl2) IF you HAVE ENOUGH BALLS.. mine is currently in the shop which is why I picked up the i9000T (load off my back not to have to worry about SD card failures!!!!!)

Now you need to download heimdal and install (Note read the readme.txt. there is a driver that needs to be installed b4 it works)

Link is here.

http://www.glassechidna.com.au/products/heimdall/

Note this is necessary as no one has created yet an unbundled version of JPY (ie separate modem, csc, pda etc.)

You run heimdal and flash the factoryfs.rfs zimage param.lfs and cache.rfs

as csc.

You can get jpy from normal place here:

http://www.samfirmware.com/apps/auth/login?why=pw&try=1&wp=1&next=WEBPROTECT-i9000.htm

Note to unpack jpy you need gnu or some other tar: the command is as follows:

C:\galaxy\I9000XXJPY\I9000XXJPY>tar -xvf JPY_JPY_JPY.tar

tar: blocksize = 20

x modem.bin, 12582912 bytes, 24576 tape blocks

x param.lfs, 655360 bytes, 1280 tape blocks

x zImage, 4838208 bytes, 9450 tape blocks

x cache.rfs, 1392640 bytes, 2720 tape blocks

x factoryfs.rfs, 286584832 bytes, 559736 tape blocks

Note: that i AM using the csc from jpy...See the discussion below as to why the csc from jp2 did not work.

------------------------------

i tried to keep the jp2 csc also but when i installed jpy on top of jp2 using heimdal and skipping csc first time when it rebooted it was ok, but system info reported no csc, and indeed there was no csc directory on phone.

So then i tried using heimdal and select the cache/csc from jp2 and it rejected the csc saying firmware was for i9000 and csc was i9000t (not exact message but you get the idea).

oh yes and to get paid/apps etc back in market i had to edit the build.prop.. here is my modified build.prop. you need to be rooted and copy over the one in system with root explorer. Modified to look like jpo 2.2 to market.

-----------------------------------

Once you flash this you now have 2.2.1 on top of 850 mhz 3g jp1 modem.

Again this would probably work for jl2 bell modem as well.. either one is probably fine but I haven't tested that one.

Next some tweeks:

I tested and we now still have 2e and 3e boot loaders and 3 button still worked, BUT we are unable to install update.zip (ie clockwork mod etc.)

So, now i applied the CF root/kernel which gave me root, busybox (i installed the busybox from titanium later anyway), and most importantly you can installed unsigned .zip packages (ie clockwork mod).

the link is here:

http://xdaforums.com/showthread.php?t=788108

the file i used was:

CF-Root-XX_XEU_JPY-v1.3-BusyBox-1.17.1.zip (5.93 MB, 2378 views)

This is flashed again with odin as a pda.

Note: Interestingly the first time it failed...

Unplugged usb and plugged back in and it worked 2nd time (a little high tension there)

Now i got the app csc reset and after booting reset my csc from KOR to XEU

Do this NOW as later it does a reset and you will loose all installed apps.

link is here:

http://xdaforums.com/showthread.php?p=9316558

or you alternative can use code with imei to do this.

Now i used my backup pro and titanium and restored apps (BUT do not restore apps + data) not recommended as some will screw up your phone.

Finally i had to take build.prop off of phone and change so i could see my paid/protected apps in the market place. I think there are some apps to dol this but not sure exactly what they do or what version they put in build.prop because you want it to look like froyo not eclair. I change mine to look like ver 2.2 JP0.

see attachment for my build.prop

I used root explorer to copy over the one in system: (need to change to r/w access in root explorer b4 copy works).

Here are some screen shots showing version: and that 850mhz 3g is in fact working. I did not have to change any phone control settings.

GPS is also working great (I did change this to cold start as I prefer this)

<BR>

good luck!!!

NOTE: you can see in the pictures a different battery icon.. That is because I slightly change the framework to give me a few more colorfull battery icons and percentages and transparent bar, but they are only in 20 percent increments.. When I tried a fully modified framework The icons were blank even after clearing dalvik cache.. oh well!