[Epic 4G Themes] Rodderik:
I AM NOT RESPONSIBLE FOR ANY THING THAT HAPPENS TO YOUR HARDWARE! FLASH AT YOUR OWN RISK!

Objective: Change Samsung Boot Logo

Proof of Concept: http://www.youtube.com/watch?v=4rGRZgry8lk

Tools Needed:

Samsung Epic running DK28 ***MUST BE ROOTED*** (See Question #5 below for non rooted devices)

Heimdall 1.1.1 (I'm not going to get into how to install the drivers...read the README) Download HERE

Modified param.lfs HERE

ADB or terminal emulator

480x800 jpg 64KB or less in size (use the above image as a template if you need to) or use the skull logo from the video HERE UPDATE: blademonkey posted some more logos that should work here

Steps:

1. Unplug and power off your phone and put it into download mode by holding '1' on the keyboard while powering on.

2. Open Heimdall and select the modified param.lfs (make sure no other boxes are checked besides the param.lfs box)

3. Hit start and let the phone reboot. (I didn't but if you get a garbled screen on boot just ignore it)

4. After the phone boots copy the new jpg file to the sdcard via 'adb push newlogo.jpg /sdcard/' or mounting the sdcard on your computer.

5. open an 'adb shell' or your favorite terminal emulator and issue the following commands and replace newlogo.jpg with your file name:

$ su
# cp /sdcard/newlogo.jpg /mnt/.lfs/logo.jpg

6. Reboot your phone the normal way or just type 'reboot' and look for your new logo to show up!

Q&A:

1. Why 64KB or less for the jpg? Well the original logo.jpg is 64KB and with replacing files on flash memory it is a good idea to stick to that or smaller. I have tested with jpg files ranging from 11KB-58KB. If any one feels daring and wants to push a bigger jpg then please post your results. In theory, the partition is 5120KB which would leave us with about 3800KB free on that partition. But I would still recommend sticking to 64KB or less.

2. Why Heimdall and not odin? Whenever I tried to flash with Odin it soft bricked my phone every time. Returning to download mode and using Heimdall to flash the param.lfs file worked every time for me (and unbricked my phone). I used Odin 1.3 with and without the victory .pit and I don't know if it was my .tar or what but it never goes through. If any one wants to figure out why it doesn't work in Odin or figures out how to make it work then please post in this thread and I'll update the OP.

3. Why does the Samsung logo still show up after my image? The logo is a two part deal. The first part is contained in the param.lfs file that we are dealing with here. The second part is somewhere in the kernel. If some one knowledgeable wants to try and tackle the kernel I would be very interested to know how. It may not be possible until we get the source code.

4. Can I do this with ClockworkMod? I attempted to make a zip to flash the param.lfs with redbend_ua doing a redbend_ua restore does not flash correctly. In fact after I flashed with CWM the phone does not even mount /dev/block/stl6 (seen as bml6 by CWM) anymore. If any one has any ideas or can figure this out please let me know. This would allow the ROM developers another way to include a new logo in their ROM.

5. How can I replace the logo on my NON-ROOTED DK28 phone? To do this you will need a dump of the param.lfs from some one else's phone that has already followed the above steps. To dump an existing param.lfs in an adb shell or terminal and 'dd if=/dev/block/stl6 of=/sdcard/param.lfs' Then you can flash the modified param.lfs with Heimdall and ignore the rest of the steps above.

How it Works: (If you are curious)

The boot logo is stored /dev/block/stl6 which is mounted in /mnt/.lfs/ on the file system. By typing 'mount' in a terminal you can see it is mounted as a j4fs file system. From what I understand in my research is that j4fs is a closed source type of file system and is not well documented. Also you might notice it is mounted 'rw' but this is only partially true. You CAN create a NEW file in /mnt/.lfs/ but you can NOT delete or modify an existing file in that partition. So how do we get replace that logo.jpg to our custom image? We don't replace it. Instead I used a hex editor on the DK28 stock param.lfs file and changed every instance of '6C 6F 67 6F 2E 6A 70 67' to '6C 30 67 30 2E 6A 70 67' What this did is change the logo.jpg file name to l0g0.jpg. This allows us to flash that modified param.lfs and put a new logo.jpg on that partition. This same method could be used to replace the other files you can see in the /mnt/.lfs/ folder. Ideally I would have liked to delete the original jpg file all together but after many many different attempts, I couldn't find a way to do so. I'm also a noob when it comes to hex editing (this was my first time) so I don't posses the knowledge to do it that way nor do we know enough about the j4fs to make it happen.

References & Credits:

I would like to thank all of the people who contributed to this thread:

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

Thanks to connexion2005 for this video and files that I used for reference:

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

Thanks to z4ziggy for his research on diff forums and his site here:

http://z4ziggy.wordpress.com/page/2/

If you have any questions, concerns, *****es, or complaints please leave a post in this thread. Thanks.