Fixing Issues With Usplash on a Widescreen Monitor

The Ubuntu boot spash screen has never worked on my Dell 2405fpw widescreen monitor until now. The closest I ever got was to get the shutdown splash to work by editing the /etc/usplash.conf file. Well, I just installed 7.10 and after a little bit of digging today I finally figured out how to get my boot splash to display properly. PS, my issue with the boot splash was that the picture was squashed and skewed across the middle of the screen.

This is a three step process. First figure out what display levels are supported by your frame buffer, then edit your grub configuration to use one of the 16 bit resolutions supported, then edit your usplash.conf file to use a similar resolution. I had used this method before with no luck, then I came across a bug report that said you have to run sudo dpkg-reconfigure usplash because when Usplash is started during boot your root folder has not been mounted yet (meaning /etc/usplash.conf can not be read). This worked like a charm.

First we install hwinfo so we can use it to find out what resolutions we support.

sudo apt-get install hwinfo

Then I ran hwinfo and redirected the output to a text file. This way we can try a few different resolutions and we only have to reference the file, not run the command every time.

hwinfo --framebuffer > framebuffer.txt

Here is what my framebuffer.txt file looks like:

02: None 00.0: 11001 VESA Framebuffer
  [Created at bios.447]
  Unique ID: rdCR.z77_s6lubfB
  Hardware Class: framebuffer
  Model: "NVIDIA G70 Board - p317h2  "
  Vendor: "NVIDIA Corporation"
  Device: "G70 Board - p317h2  "
  SubVendor: "NVIDIA"
  SubDevice:
  Revision: "Chip Rev"
  Memory Size: 256 MB
  Memory Range: 0xe0000000-0xefffffff (rw)
  Mode 0x0300: 640x400 (+640), 8 bits
  Mode 0x0301: 640x480 (+640), 8 bits
  Mode 0x0303: 800x600 (+800), 8 bits
  Mode 0x0305: 1024x768 (+1024), 8 bits
  Mode 0x0307: 1280x1024 (+1280), 8 bits
  Mode 0x030e: 320x200 (+640), 16 bits
  Mode 0x030f: 320x200 (+1280), 24 bits
  Mode 0x0311: 640x480 (+1280), 16 bits
  Mode 0x0312: 640x480 (+2560), 24 bits
  Mode 0x0314: 800x600 (+1600), 16 bits
  Mode 0x0315: 800x600 (+3200), 24 bits
  Mode 0x0317: 1024x768 (+2048), 16 bits
  Mode 0x0318: 1024x768 (+4096), 24 bits
  Mode 0x031a: 1280x1024 (+2560), 16 bits
  Mode 0x031b: 1280x1024 (+5120), 24 bits
  Mode 0x0330: 320x200 (+320), 8 bits
  Mode 0x0331: 320x400 (+320), 8 bits
  Mode 0x0332: 320x400 (+640), 16 bits
  Mode 0x0333: 320x400 (+1280), 24 bits
  Mode 0x0334: 320x240 (+320), 8 bits
  Mode 0x0335: 320x240 (+640), 16 bits
  Mode 0x0336: 320x240 (+1280), 24 bits
  Mode 0x033d: 640x400 (+1280), 16 bits
  Mode 0x033e: 640x400 (+2560), 24 bits
  Mode 0x0345: 1600x1200 (+1600), 8 bits
  Mode 0x0346: 1600x1200 (+3200), 16 bits
  Mode 0x0347: 1400x1050 (+1400), 8 bits
  Mode 0x0348: 1400x1050 (+2800), 16 bits
  Config Status: cfg=new, avail=yes, need=no, active=unknown

The information you are interested in is the Mode. If you want to set your boot resolution to 1024×768 at 16 bits you want to use mode 0×0317. As you can see my frame buffer doesnt support any widescreen resolutions. I picked the 1280×1024@16bit, which was 0×031a on my computer. I tried some of the higher resolutions as well as some of the lower ones. They all resulted in different issues from only displaying as black and white, to not displaying anything at all. both 1024 and 1280 seemed to work ok though, so I went with the higher one. Just pick one and go with it. I should note that these resolutions will not effect the resolution once Ubuntu is completely started up. They are unrelated.

Open up the grub menu configuration to edit the resolution:

sudo gedit /boot/grub/menu.lst

find the following line:

# defoptions=quiet splash vga=

and modify it so that it has your mode after the vga=. Here is what mine looks like:

# defoptions=quiet splash vga=0x031a

Do not uncomment the above line or it will not work. It has to be commented.

Save and close the file and then update grub:

sudo update-grub

Now you want to update usplash to use the same resolution that you set for boot. Open the Usplash configuration file:

sudo gedit /etc/usplash.conf

I changed mine to look like this:

# Usplash configuration file
xres=1280
yres=800

Now you will notice I set my boot resolution to 1280×1024 but my Usplash resolution is set to 1280×800. This is because I have a widescreen monitor and when I set Usplash to 1280×1024 the boot logo was stretched. I changed it to 800 to counteract the stretch. If you have a standard 4:3 monitor you should set them both to 1280×1024. Otherwise, try what I did and see if it works for you.

This is the most important part. You have to update Usplash or the configuration change you just made will have no effect. So run the following command:

sudo dpkg-reconfigure usplash

Now reboot and cross your fingers. You might have a working boot splash. If you dont, try changing the mode in grub and the resolution in Usplash to something lower and reboot again. Trial and error is the only way you will find what works best on your system. Good luck!

Leave a Reply

Powered by WP Hashcash