[Libdlo] DLFB 0.1 (udlfb)

Phil Endecott spam_from_libdlo at chezphil.org
Fri May 22 13:23:51 PDT 2009


Roberto De Ioris wrote:
> Hi all, this is the first (prototype) release of a linux
> framebuffer module for the displaylink devices.

Excellent!  Thanks Roberto!

> The module implements a semi-accelerated fbcon and an ioctl that send
> update commands to the device.
>
> *** FBCON MODE (1400x1050x16bpp)***
>
> put the Makefile and udlfb.c in a directory (you need to have the kernel
> headers installed)
>
> launch make
>
> then (as root)

modprobe fb
modprobe cfbimgblt
modprobe fbcon

> insmod udlfb.ko

The screen is cleared to green.

> you will see some debug stuff in your dmesg

Also you should see an entry in /proc/fb

> now map a console to your new framebuffer device (in the fbset package):
>
> con2fbmap 3 1

Or "con2fbmap 3 0" if your main console is not an fbcon, i.e. if the 
DisplayLink device is entry 0 in /proc/fb.

> ...will map the third console to /dev/fb1
>
> switch to the third console (ctrl-alt-f3) and you will
> see the fbcon.

And it works!  Well, I logged in; I tried running "top" and it drew one 
screen and then started printing lots of "COPY AREA" messages; I had to power-off.

> The only accelerated part is the vertical scolling, more optimizations
> will follow in the next days (this is a stripped down version of a
> bigger work)

It's a great start.

Has anyone thought about how to support multiple consoles 
simultaneously?  My recollection is that the idea of a single console 
is somewhat hard-coded in the kernel.  Ideally I'd like to be able to 
pair displays with USB keyboards (e.g. automatically based on the hub 
topology, if the monitor has a hub in it).  But in the shorter term I'd 
like to have an output-only console that can for example tail -f a log 
file or run top while the main display continues to run X.

> *** MMAP/RW MODE ***

I haven't tried this.

> compile the testctl.c code:
>
> gcc -o testctl testctl.c
>
> launch an application that use framebuffer as its output (via mmap or
> simple read/write)
>
> Example (as root):
>
> mplayer -vo fbdev:/dev/fb1 <filename>
>
> now update the framebuffer:
>
> ./testctl
>
> if you want to redraw bigger (or smaller) area modify the testctl.c code
>
>
> *** TEST ON MIMO DEVICE ***

Works for me!

> The module code is forced on 1400x1050 at 16bit.
>
> MIMO devices supports 800x480
>
> You need to modify the first (configuration) line of the code in this
> way:
>
> // CONFIGURE YOUR DISPLAY HERE
>
> #define FB_W 800
> #define FB_H 480
>
> #define DLO_MODE_DATA DLO_MODE_DATA_800_480_60_24_0
> #define DLO_MODE_ENABLE DLO_MODE_ENABLE_800_480_60_24_0
>
> // END OF CONFIGURATION
>
>
> *** CAUTION ***
>
> this is a proof of concept, it contains leaks, bad code practice and all
> sort of evil things, i hope to release a real version in the next week
> (if the world is still rotating after your tests).

Looking forward to the next versions...

Regards,

Phil.






More information about the Libdlo mailing list