[Android] tarsk:
Being new to XDA, I originally posted this information in the General Discussion forum under Changing the XOOM Splash Screen". Having had time to dig around more and read, I think this information is better suited here in the "Chef" area.

I have searched the web and many forums regarding this issue and found many many discussions on how to use utilities to do this and that to the Motorola XOOM Splash Screen. Most of which involved cropping the image to 256x320. This seemed a bit odd on 2 levels. First, no one ever seems to what to explain the process or the whys and wherefores, and second with a 1280x800 screen, having such a small splash screen just seemed odd.

So starting with the utility in :

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

and found I was randomly able to change my splash screen. I say randomly as it did not always seem to succeed, even though it appeared it had. As there was no feed back to indicate success or failure, one must presume it worked. So I did a bit of digging on how it worked and found that the image is an RGBA image with a depth of 8 for the XOOM. Additionally the image is simple stored on the partition pointed to by :

/dev/block/platform/sdhci-tegra.3/by-name/logo

This is simply a link to /dev/block/mmcblkXp4 (where the 'X' is 0 or 1 depending on if and when the external SD card was mounted). I therefore INSIST that the long path to the logo name be used to reference this partition as it will always point to the proper partition as mounted.

Another note -- sdhci-tegra.3 is the internal SD card while sdhci-tegra.2 is the external SD card.

Also, I found that the link above and the utility are only partly accurate. The utility requires you to crop an image to 256x320 before applying it the splash. This is actually not accurate. You can use an image up to 1280x800. The full size of the XOOM sxcreen. As long as you know the secret, and the BIN file isn't over 4M (4,194,304 bytes), which I am going to show you. For some reason I can find a lot of information on special tools to do this, but no one seems to want to just give away the format details. If you're like me, tools are nice, but you like to know what they are doing.

The best tool I found for converting an image to the RGBA format needed is ImageMagicK. If you used the utility I mentioned before, then you already have it installed. I think it's best because of the many features and simplicity. Plus the price is right. To modify the splash as I describe or use the tools I have attached below, you need to have ImageMagicK installed. With it you can do a convert of any image to the proper RGBA format by using the following command:

convert -size <W>x<H> -depth 8 <FILE> <RGBA>

Where <W> is the width of the image. Up to 1280.

<H> is the image height. Up to 800.

<FILE> is the image file (jpg, png, tiff, etc)

<RGBA> the name of the output rgba file, MUST have rgba as the file extension

This will create the RGBA file of the image needed to create the BIN file. This is where the utility in the other post fails out. The RGBA file must be converted to a "BIN" file. Which is basically nothing but the RGBA file with 20 extra bytes at the front. These bytes are:

ID - "SOL:"

xOffset - Offset from the left side of the screen (Being in landscape mode), up to 1280

yOffset - Offset from the top of the screen, up to 800

Width - Image width

Height - Image height

All values are in big endian format. Meaning that the value for 256 would be x'00000100' as opposed to the PC storage mode of little endian which would produce x'00010000'. I am including a windows program as an attachment that will make the BIN file. It is a command line program, and if you run it with no options, you get :

USAGE: MakeBIN.exe <input> <output> <width> <height>

Where -- <input> is the rgba file to be converted to bin

<output> is the name of the bin file to create

Note that for flashing to XOOM logo, the output BIN file

cannot be more than 4 meg in size.

If the width and height of the image are not specified to the MakeBIN utility, it defaults to 256x320. Additionally, the offsets are dynamically calculated to center image on the XOOM.

With this header in the front of the image, you are ready to "flash" the new splash screen. All you have to do for this is use ADB. First push the new file over to the XOOM using something like:

adb push mysplash.bin /data/local/.tmp

Once the file is there, you flash it. Again turning to ADB:

adb shell

This will put you at the command line on the XOOM. From there perform the following:

cd /data/local/tmp

dd if=mysplash.bin of=/dev/block/platform/sdhci-tegra.3/by-name/logo

exit

When you return to the command line, you are ready to go. Just reboot the XOOM your preferred way and enjoy your new splash screen. I like to do :

adb reboot

I hope this information has been helpful to others looking to make a bigger splash with the XOOM.

Oh. Two other things to keep in mind. The default background is black. So unless you're going full screen, you want to be sure you're using a black background. Or the second thing comes in handy - Transparency works. As the image is an RGBA format image, the attribute information for the pixel is supplied allowing transparency.

Now. I usually like to back up things before I do changes like this. If you do as well, simply perform the following prior to writing the above image out. This will create a 4M copy of the splash partition. Not all of the partition contains the existing image, but it doesn't hurt to have it all.

adb shell

cd /data/local/tmp

dd if=/dev/block/platform/sdhci-tegra.3/by-name/logo of=backup_splash.bin

exit

adb pull /data/local/tmp/backup_splash.bin

You can always reimage it to the partition by following the steps above.

I have attached a Apple image I used as a test. As it is 1280x800, the full screen was presented with my image. It's really an awesome site to see your full screen splash for the first time.

Further, I decided to make things easy. I developed a simple batch script for the Windows command like that will perform all the steps addressed above. It first verifies that the tools it needs are available, the creates the image and will flash it. Each sequence of steps it reported to the command window and you are prompted to perform each block. A "N" or empty response to the continuation questions causes the script to exit. So you could generate the BIN file without flashing it.

This is a very basic script. I could have developed a Windows application, and hidden all these steps so only I knew how to do it. Or even developed a XOOM app that would do it so you'd never know what I was doing. But I think the best way for others to learn about their systems is to know where things are and how they are used.

With that in mind, I have included the batch file in the zip.

Lastly, some information about partition sizes. I mentioned above that the partition size for the XOOM logo partition is 4M. That is to say it is 4,194,304 bytes in length. Why is this important? Because it will hold a full size 1280x800 image. When converted, a 1280x800 image using a depth of 8-bits is calculated as follows:

Size = Width x Height x 4

Why '4'? Because this is an RGBA file. The type says it all. As there is a depth of 8 bits, each color representation is 1 byte in length. 1 for Red, 1 for Green, 1 for Blue, and 1 for the attribute. That makes 4 bytes per pixel on the screen.

We then have to add the 20 byte header that tells the loader where to place the image and how big it is.

In total, the most a full screen splash will EVER be is : 4,096,020 bytes

This leaves 98,284 bytes as a buffer in case someone makes a boo boo.

Following the steps and using the tools I have documented in this thread, you will never make a boo boo and you will have lots of fun putting any image you like as your splash screen. (I'm using a photo of my family).

Thanks for taking the time to read my ramblings.