I'm using uvesafb to get a simple framebuffer on a Intel 945GME embedded graphics controller. That works fine.

The PC has a single combined DVI+VGA output connector and both outputs currently show the same graphics.

AFAIK that controller should be able to show different screens on the two outputs (ie. dual monitor setup). How can I configure uvesafb to operate in this mode?

Ideally I'd get a /dev/fb1 along with /dev/fb0, but it would be also okay if the second screen whould just show a different offset within /dev/fb0.

  • Uvesafb works with vesa, and afaik there is nothing in the vesa standard about multiple monitors. If the driver wanted to set it up, it should have to communicate with the video chip on a non-vesa way (i.e. not through the vesa bios calls). But it would be a highly hardware-specific thing, and the driver doesn't know anything from that. – peterh Jul 18 '15 at 13:44

The answer is simple: it is not possible with uvesafb as it was not tailored for that purpose.

Xorg uses XrandR and recent multiple monitor configurations use Kernel Mode Setting (KMS), which recent video drivers are designed to use as well. You might therefore have better chances with KMS and an Intel 945GME. I have not checked however.

  • Well, uvesafb at least has support for Y-panning (ypan) and the generic framebuffer structs seem to know about "screens", so maybe I can set the second screen to a different Y pan position (exactly at the end of the first screen), so that can draw to both screens independently. I'll try to write a test program for that to verify. – Udo G May 26 '15 at 13:01
  • As far as I know ypan is about vertical console scrolling on the same display. It's not intended for multiple displays for a tty. – user86969 May 26 '15 at 16:00
  • This is not for a tty. I'm writing directly to the framebuffer memory. In theory, I could draw the second screen "below" the other (starting after the last pixel offset of the first screen) and set ypan for the second screen only. But apparently you're right, I can't find a way setting ypan for a single screen only - the generic framebuffer interface (not just uvesafb) doesn't seem to have the concept of a "screen" (despite some structs being named "*SCREEN_INFO"). – Udo G May 27 '15 at 16:12
  • That really is too bad but somehow expected as uvesafb is rather old, I think it pre-dates kernel mode settings development. So what about using the latter? – user86969 May 28 '15 at 11:11
  • 1
    Dissecting xrandr though intended for Xorg might be a good start. – user86969 May 28 '15 at 12:30

I don't know much about uvesafb but I usually use xrandr to use dual monitor. In shell you can type:


This will list all output possibilities. In my case, it shows the following:

Screen 0: minimum 320 x 200, current 2732 x 768, maximum 8192 x 8192
eDP1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 256mm x 144mm
1366x768       60.0*+
1360x768       59.8     60.0  
1024x768       60.0  
800x600        60.3     56.2  
640x480        59.9  
VGA1 connected 1366x768+1366+0 (normal left inverted right x axis y axis) 410mm x 230mm
1366x768       59.8*+
1024x768       75.1     75.0     60.0  
832x624        74.6  
800x600        75.0     60.3     56.2  
640x480        75.0     60.0  
720x400        70.1  
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)

Then in order to make dual monitor, simply just type:

xrandr --output VGA1 --right-of eDP1

to produce the same output

xrandr --output VGA1 --same-as eDP1

You can look more options at man xrandr

  • The OP wants to use multiple monitors in a frame buffer console so Xorg is off-topic here. – user86969 May 27 '15 at 8:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.