# 1280x800 Resolution on Console Framebuffer using intel 855GM

## eschoeller

I have been reading posts and have gotten mixed answers regarding this question.

I have a dell 700m which uses the Intel 855G/M Chipset video interface, 16:9 formatted display with a native resolution of 1280x800.

My Goals:

Use a framebuffer device and splash image both that run in this native resolution (1280x800)

Use X windows in 1280x800.

I have been able to get the X resolution working in the past using Alan Porier's (sp?) 855resolution patch (available in portage, currently masked by ~x86) without too much hassle.

My current main concern is getting a 1280x800 native framebuffered console session. I can easily get 1024x768, but do not know how to pull off a non standard 1280x800 resolution.

I have read some posts regarding "lfb.exe" and its ability to display vaild vesa modes for a device. I found this program in another post, i will not link to it here, because it's somewhat illegal - but you'll be able to find it! 

After running this app i have no vaild video modes for 1280x800 listed.

C:\Documents and Settings\Administrator>cd C:\

C:\>lfb

Version  : 3.00

OEM Name : Intel(r)852GM/852GME/855GM/855GME Graphics Chip Accelerated VGA BIOS

memory   : 16580608

no VESA Protected Mode Interface

 160h:     0 x    0 (text)

 161h:     0 x    0 (text)

 162h:     0 x    0 (text)

 163h:     0 x    0 (text)

 164h:     0 x    0 (text)

 165h:     0 x    0 (text)

 166h:     0 x    0 (text)

 167h:     0 x    0 (text)

 168h:     0 x    0 (text)

 169h:     0 x    0 (text)

 16ah:     0 x    0 (text)

 16bh:     0 x    0 (text)

 16ch:     0 x    0 (text)

 16dh:     0 x    0 (text)

 16eh:     0 x    0 (text)

 16fh:     0 x    0 (text)

 170h:     0 x    0 (text)

 171h:     0 x    0 (text)

 17ch:     0 x    0 (text)

 17dh:     0 x    0 (text)

 17eh:     0 x    0 (text)

 13ch:     0 x    0 (text)

 14dh:     0 x    0 (text)

 15ch:     0 x    0 (text)

 13ah:     0 x    0 (text)

 14bh:     0 x    0 (text)

 15ah:     0 x    0 (text)

 107h:     0 x    0 (text)

 11ah:     0 x    0 (text)

 11bh:     0 x    0 (text)

 105h:  1024 x  768 x  8           0xd0000000, 20 pages

 117h:  1024 x  768 x 16  0:5:6:5  0xd0000000,  9 pages

 118h:  1024 x  768 x 32  8:8:8:8  0xd0000000,  4 pages

 112h:   640 x  480 x 32  8:8:8:8  0xd0000000, 12 pages

 114h:   800 x  600 x 16  0:5:6:5  0xd0000000, 15 pages

 115h:   800 x  600 x 32  8:8:8:8  0xd0000000,  7 pages

 101h:   640 x  480 x  8           0xd0000000, 49 pages

 103h:   800 x  600 x  8           0xd0000000, 35 pages

 111h:   640 x  480 x 16  0:5:6:5  0xd0000000, 27 pages

This was run while in windows XP, running at 1280x800 .......... so i'm somewhat clueless as to it's functinality. 

My question to anyone - has anyone had luck running a 1280x800 framebuffer resolution on the console using either the dell 700m or related device running the intel 855G/M chipset?

I have tried both the intelfb, and vesa-tng framebuffer devices in kernel 2.6.14.  Both with no luck. I am using a mode= paramter in my grub.conf line, not a vga= line, as i don't know the proper vesa hex mode number for 1280x800-32 for this chipset.

I'm worried that maybe part of alan's 855resolution patch needs to be implemented at a kernel level to allow for this non-standard resoultion to be used. 

Let me know if you have any suggestions!!

----------

## Katphish

Hi,

Have you tried this:

```
video=intelfb:1280x800-32@60
```

This post from 30 April 2005 on the Boulder,CO LUG says it will not work with intelfb, but will work with vesafb (I suspect that might be the regular fb not tng)

AFAIK you do not need any mode= or vga= lines in grub.conf.  I have the desktop chipset version and do not have those lines in my grub.conf but the intelfb boots okay with a fbsplash albeit at 1024x768-32@70   :Very Happy: 

The Gentoo Wiki fbsplash howto can help you "legally"  find the native supported modes

----------

## tomk

Moved from Documentation, Tips & Tricks to Kernel & Hardware, please don't post support questions to DT&T.

----------

## eschoeller

Thanks for your suggestion

I tried video=intelfb:1280x800-32@60, but still ended up with a 1024x768 framebuffer console.

Ive also tried using vesafb:1280x800-32@60 and vesafb-tng:1280x800-32@60 , neither seem to work. I've tried using vga statements, but i cant figure out which hex number to use.

Has anyone using an intel 855 chipset gotten this to work? What is your kernel command line/framebuffer device?

Thanks!!!

----------

## fredgt

I don't have the intel chipset so i can't say if its actualy possible but i had the same problem with my Ati Radeon in my laptop. Non of the universal framebuffer drivers ( vesafb, vesafb-tng) were able to get my a widescreen resolution. The only one that worked for my was the radeonfb driver.

So i would try the intelfb driver. Also take a good look at dmesg , it might give you some good info. Also try enabling the debug messages of the intelfb driver.

----------

## eschoeller

I'm not sure if i need to compile in ONLY the intelfb driver or the intelfb driver and the generic vesa driver as well into the kernel.

Compiling both in results in a framebuffer device at /dev/fb0, however when i only compile in the intelfb driver i don't get a /dev/fb0 device and I end up with 640x480 - vbetest complains that there is no /dev/fb0 so I cant see the valid modes. Maybe I have done something wrong here?

Furthermore when i use the vesa-tng driver and run vbetest i get this output:

```
VBE Version 3.0

Intel(r)852GM/852GME/855GM/855GME Graphics Chip Accelerated VGA BIOS

[261] 1024x768 (256 color palette)

[279] 1024x768 (5:6:5)

[280] 1024x768 (8:8:8)

[274] 640x480 (8:8:8)

[276] 800x600 (5:6:5)

[277] 800x600 (8:8:8)

[257] 640x480 (256 color palette)

[259] 800x600 (256 color palette)

[273] 640x480 (5:6:5)

Type a mode number, or 'q' to quit - VBE Version 3.0

```

Then i Run 855Resolution replacing a video mode for 1280x800, and get this:

```

Intel(r)852GM/852GME/855GM/855GME Graphics Chip Accelerated VGA BIOS

[316] 1280x800 (256 color palette)

[333] 1280x800 (5:6:5)

[348] 1280x800 (8:8:8)

[261] 1024x768 (256 color palette)

[279] 1024x768 (5:6:5)

[280] 1024x768 (8:8:8)

[274] 640x480 (8:8:8)

[276] 800x600 (5:6:5)

[277] 800x600 (8:8:8)

[257] 640x480 (256 color palette)

[259] 800x600 (256 color palette)

[273] 640x480 (5:6:5)

Type a mode number, or 'q' to quit - 

```

I can select 333, and the whole screen fills up with the color display at the correct 1280x800 resolution - so I know it's possible to get to that resolution.

When i've started up using the vesafb-tng driver, and after i've run 855resolution i figured i could manually set the resolution since it's recognized by vbetest now, but that didnt work either :

```

fbset -g 1280 800 1280 800 32

ioctl FBIOPUT_VSCREENINFO: Invalid argument

```

Any help / suggestions would be greatly appreciated.

----------

## beissemj

since when did the intelfb start working?

```
#dmesg

167:intelfb: intelfb_init

168:intelfb: Framebuffer driver for Intel(R) 830M/845G/852GM/855GM/865G/915G chipsets

169:intelfb: Version 0.9.2

170:intelfb: intelfb_setup

171:intelfb: no options

172:intelfb: intelfb_pci_register

174:intelfb: fb aperture: 0xe8000000/0x8000000, MMIO region: 0xe0000000/0x80000

175:intelfb: Cannot reserve FB region.

176:intelfb: cleanup

```

----------

## eschoeller

I get a similar output from dmesg when I'm running a kernel that has both vesafb-tng and intelfb compiled in:

```

intelfb: intelfb_init

intelfb: Framebuffer driver for Intel(R) 830M/845G/852GM/855GM/865G/915G chipsets

intelfb: Version 0.9.2

intelfb: intelfb_setup

intelfb: options: mode=1024x768-32@60

intelfb: intelfb_pci_register

intelfb: fb aperture: 0xe8000000/0x8000000, MMIO region: 0xe0000000/0x80000

intelfb: Cannot reserve FB region.

intelfb: cleanup

```

However, the output from dmesg changes when ONLY intelfb is compiled in, and not a generic vesa driver:

```

intelfb: intelfb_init

intelfb: Framebuffer driver for Intel(R) 830M/845G/852GM/855GM/865G/915G chipsets

intelfb: Version 0.9.2

intelfb: intelfb_setup

intelfb: options: mode=1024x768-32@60

intelfb: intelfb_pci_register

intelfb: fb aperture: 0xe8000000/0x8000000, MMIO region: 0xe0000000/0x80000

intelfb: 00:02.0: Intel(R) 855GME, aperture size 128MB, stolen memory 16252kB

intelfb: fb: 0xe8000000(+ 0x0)/0xfdf000 (0xef980000)

intelfb: MMIO: 0xe0000000/0x80000 (0xf3980000)

intelfb: ring buffer: 0xeb001000/0x10000 (0xf2981000)

intelfb: HW cursor: 0x0/0x0 (0x0) (offset 0x0) (phys 0x0)

intelfb: options: vram = 4, accel = 1, hwcursor = 0, fixed = 0, noinit = 0

intelfb: options: mode = "1024x768-32@60"

intelfb: Non-CRT device is enabled ( LVDS port ).  Disabling mode switching.

intelfb: Video mode must be programmed at boot time.

intelfb: cleanup

```

Again, this goes back to my previous question - which is the right way to use this driver? with a generic vesa driver as well or just the intel driver on its own? Regardless, using the intelfb driver only i am stuck at 640x480 no matter what mode options i pass to the driver, and it looks like i have the right options....

Anyone have ideas?

----------

## beissemj

 *Quote:*   

> 
> 
> intelfb: options: mode = "1024x768-32@60"
> 
> intelfb: Non-CRT device is enabled ( LVDS port ).  Disabling mode switching.
> ...

 

It was always my understanding that the intelfb didn't work on LCDs.

----------

## eschoeller

Yes, that seems to be true in some cases, see this post:

http://sourceforge.net/mailarchive/forum.php?thread_id=7115312&forum_id=2358

Apparently there is a workaround for this issue - however whenever i try to pass a vga directive (such as vga=0x317) I get "You have passed an undefined mode number" and i'm stuck with 640x480

I have emailed Sylvain Meyer, hopefully he will reply!

I still wonder if it's possible to do what im trying to do with the vesafb-tng driver...

----------

## beissemj

hmmm ya it seems like a patch at the kernel level similar to 855Resolution could be the solution. IF i remember correctly 855 Resolution only controls the video modes for X via xorg.conf so using that wouldn't really solve ur problem b/c you can't pass a valid video mode at grub... 

As far as grub is concerned you shouldn't need a hex code

```

<snip grub.conf>

#video=vesafb:???x???-??@?

#ex: video=vesafb:1024x768-16@60

#

#vga=x

#          640x480  | 800x600  | 1024x768 | 1280x1024| 1152x864 |1600x1200

#        +----------+----------+----------+----------+----------+---------

#  8 bit |   769    |   771    |   773    |   775    |   353    |   800

# 15 bit |   784    |   787    |   790    |   793    |   354    |   801

# 16 bit |   785    |   788    |   791    |   794    |   355    |   802

# 24 bit |   786    |   789    |   792    |   795    |          |   803

```

so the only problem that remains is getting a valid video mode at boot. I'm anxious to see if you hear from Meyer.

----------

## eschoeller

Well, I've made some progress.

You are right, we do need a similar patch to Alain Porier's 855resolution IN the kernel so this mode replacement happens BEFORE the framebuffer driver gets loaded. The 855resolution does NOT however apply only to X, it modifies the bios that the framebuffer driver reads its info from as well (or so i think!). 

So, what i did was compile vesafb-tng as a module. I booted with no video= option and I've got 640x480 - Then once i was at the console I ran the 855resolution patch, and then did a modprobe vesafb-tng, viola, it automatically picked the highest res, which was now 1280x800 instead of 1024x768 because of the patch.

This is good, because I have a full screen framebuffer now, but it's bad because I'm doing it in the user space level whereas I think all this work should be done at the kernel level - so that i can load the framebuffer driver on boot and use fbsplash etc.

All this tells me is that this is absolutely possible, I just need to find a way to integrate this behavior into the kernel.

----------

## beissemj

Now that's encouraging =) I wonder though, if it would be possible to permanently flash the VBIOS (dangerous, but if you have tested the mode in memory, no reason it shouldn't work) so that the proper modes can be selected from the get go. Currently according to this "All changes are made in memory only, and therefore not permanent. So the worst that could happen is the program could corrupt our VBIOS until you reboot."

Grr... why couldn't they have just programmed more video mode timings?

Heh, how hard can it BE to write a patch for a kernel? </sarcasm>

----------

## eschoeller

Apparently someone is able to use just vesafb-tng and select 1280x800@60 in the kernel compile options and it just works.

Check out his post:

https://forums.gentoo.org/viewtopic-p-3002197.html#3002197

I've tried this and it hasn't worked for me.

----------

## ericmn

I'm in the same boat as you eschoeller...slightly different hardware, same issues.  Here are my thoughts:

Hardware:

Ati Radeon Mobility X300 (chipset=M22 0x5460)

1280x800 native WXGA LVDS (Dell Inspiron 6000)

Situation:

1)  X is working at 1280x800 (ati-drivers)

2)  fbset does not list 1280x800 as a possible framebuffer mode

3)  The framebuffer is working at 1024x768-24 (and -16, and 800x600-24 etc...basically all normal settings below 1280x800)

4)  I have done most of my tinkering so far using the vesa and vesa-tng kernel drivers...currently testing radeon drivers

update: using radeonfb kernel driver does produce a working 1280x800 framebuffer, but then starting X crashes the machine.  I had read about this issue at some point, which is why a waited on trying this driver.  Anyone have a solution for the X crash?

Questions:

A)  Does anybody out there actually have a working 1280x800 framebuffer using any hardware?

B)  Does anyone know definitively if vesa-tng supports 1280x800?

C)  Will creating a fb.modes entry for 1280x800 help?  If so, how do I obtain the necessary timings info (pixclock,left,right,upper,lower,hslen,vslen)? Is there are utility I can run under X that shows the timings info for the current mode?

----------

## Katphish

 *eschoeller wrote:*   

> Well, I've made some progress.
> 
> You are right, we do need a similar patch to Alain Porier's 855resolution IN the kernel so this mode replacement happens BEFORE the framebuffer driver gets loaded. The 855resolution does NOT however apply only to X, it modifies the bios that the framebuffer driver reads its info from as well (or so i think!). 
> 
> So, what i did was compile vesafb-tng as a module. I booted with no video= option and I've got 640x480 - Then once i was at the console I ran the 855resolution patch, and then did a modprobe vesafb-tng, viola, it automatically picked the highest res, which was now 1280x800 instead of 1024x768 because of the patch.
> ...

 

If you wanted to get fancy, you could make vesafb-tng a module and stick it in an initrd along with 855resolution and set it up that way.  Once you know it works, you could genrerate an fbslpash initrd and graft your changes onto it.  One thing to keep in mind about fbsplash is you are going to need to make your own themes for your resolution and bit depth.  An fbsplash initrd is a gzip'd cpio archive FYI.

Also, you don't need both frame buffer drivers either.  I do have the intelfb working with fbsplash but at a regular 1024x768 on a CRT on a desktop board.

 *ericmm wrote:*   

> C) Will creating a fb.modes entry for 1280x800 help? If so, how do I obtain the necessary timings info (pixclock,left,right,upper,lower,hslen,vslen)? Is there are utility I can run under X that shows the timings info for the current mode?

 

The easiest way to get that info would be from the Xorg log under /var/log or run xvidtune.

----------

## Gremo

bump-same problem here!   :Sad: 

----------

