Setting up USB multiseat with DisplayLink on Linux (GDM up to 2.20)
Posted on 16. Nov, 2009 by Bernie Thompson in UT-1
Soon, we’ll be able to plug inexpensive zero-state USB docks/terminals into new Linux systems, and a new graphical login will pop up in a completely plug and play fashion. Many users can then simultaneously share any single Linux PC. This is great for education, libraries, internet cafes, etc — anywhere where you have clusters of client machines with light 3D/video app demands, and want the simplicity and savings of just one server machine with many terminals connected.
[Update August 8, 2010 - Further work on this has moved to the Google Summer of Code 2010 project for USB Multiseat]
Until this is in the distros, we have to assemble a few pieces ourselves to get everything installed for this scenario. Some major components (GDM/ConsoleKit) are changing the way this kind of thing will be done, so for now the instructions here are designed only for distributions with GDM 2.20 or earlier (Ubuntu < 9.10; Fedora < F12; Debian < 5.0; etc). The instructions have been tested most extensively on Ubuntu 9.04.
gdm –version
will show what version you have on your current system. Any tweaks to make things work your specific distro are definitely welcome in the comments.
The first step is hardware. You need a USB hub with a DisplayLink USB device and free USB ports for keyboard and mouse. You can get this in one package in the form of devices like the Plugable Universal Terminal/Docking Station, or buy independent USB devices like the UGA-125 combined with any USB hub. USB Audio and other devices can be made to work also, but these instructions just cover basic display, keyboard, and mouse.
With that, you're ready to start configuring your Linux setup ...
1. DisplayLink framebuffer driver
udlfb is in the staging tree of Linux kernels 2.6.32 and later. We'll install the latest version here. First, make sure you have git installed with "sudo apt-get install git-core", and create a directory which will host all the source code you download with git (e.g. ~/git/).
sudo apt-get install module-assistant sudo module-assistant prepare git clone http://git.plugable.com/webdav/udlfb/ cd udlfb make sudo make install sudo depmod -a
Now, when you plug in a DisplayLink device, you should see a "green screen" as the driver successfully loads and sets the graphics mode to match your monitor.
2. DisplayLink X server
This will get the X server installed, ready for use by later scripts.
sudo apt-get install pkg-config xorg-dev cd ~git git clone http://git.plugable.com/webdav/xf-video-udlfb/ cd xf-video-udlfb ./configure make sudo make install
We now need to create or modify a few scripts and configuration files. You'll need to use sudo to edit files in these system directories. You can cut/paste the text below, or download the files with "git clone http://git.plugable.com/webdav/misc-udlfb/" and copy each to the right location, and fix up ownership and permissions on the files.
3. udev script
Create a file called /lib/udev/rules.d/50-usbseat.rules owned by user root, with the following contents.
# set all DisplayLink devices to configuration 1 # see http://libdlo.freedesktop.org/wiki/DeviceQuirks for more info ATTR{idVendor}=="17e9", ATTR{bConfigurationValue}=="2", RUN="/bin/echo 1 > /sys%p/bConfigurationValue" # aliases for display, kbd, mouse attached to specific hubs KERNEL=="fb*",SUBSYSTEMS=="usb",PROGRAM="/bin/cat /sys/%p/../../../devnum",SYMLINK+="usbseat/%c/display",RUN+="usbseat.sh %c" KERNEL=="mouse*", SUBSYSTEMS=="usb", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceProtocol}=="02", PROGRAM="/bin/cat /sys/%p/../../../../../devnum",SYMLINK+="usbseat/%c/mouse",RUN+="usbseat.sh %c" KERNEL=="event*", SUBSYSTEM=="input", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceProtocol}=="01",PROGRAM="/bin/cat /sys/%p/../../../../../devnum",SYMLINK+="usbseat/%c/keyboard",RUN+="usbseat.sh %c" KERNEL=="control*", SUBSYSTEM=="sound", SUBSYSTEMS=="usb", PROGRAM="/bin/cat /sys/%p/../../../../../devnum", SYMLINK+="usbseat/%c/sound" # Handle when keyboard and mouse are one more hub downstream. Relying on pnp order to have already set up mouse, keyboard on upstream hub if we're daisy-chaining KERNEL=="event*", SUBSYSTEM=="input", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceProtocol}=="01",PROGRAM="/bin/cat /sys/%p/../../../../../../devnum",SYMLINK+="usbseat/%c/keyboard",RUN+="usbseat.sh %c" KERNEL=="mouse*", SUBSYSTEMS=="usb", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceProtocol}=="02", PROGRAM="/bin/cat /sys/%p/../../../../../../devnum",SYMLINK+="usbseat/%c/mouse",RUN+="usbseat.sh %c"
The udev subsystem will run this script automatically each time a USB device is attached.
4. usbseat.sh script
Create a file /lib/udev/usbseat.sh owned by user root with the following contents. Make sure to "sudo chmod a+x" to make the file executable.
#!/bin/bash # takes the "seat number" as parameter $1 # the seat number is the kernel device id of the hub the seat's devices are sitting off of # called once for every usb device that MIGHT be part of a seat, when they arrive or remove if [[ !(-n `/bin/pidof gdm`) ]]; then exit 0 fi seat_running=`/usr/bin/gdmdynamic -l | /bin/sed -n -e "/:$1,/p"` # $ACTION environment variable is set by udev subsystem case "$ACTION" in 'remove') if [[ -n "{$seat_running}" ]]; then /usr/bin/gdmdynamic -v -d $1 fi ;; *) # A device which might be part of a seat has been added # if we already have a running seat for this #, exit if [[ -n "${seat_running}" ]]; then exit 0 fi if [[ -e /dev/usbseat/$1/keyboard && -e /dev/usbseat/$1/mouse && -e /dev/usbseat/$1/display ]]; then # We have a newly complete seat. Start it. TMPFILE=`/bin/mktemp` || exit 1 /bin/sed "s/%ID_SEAT%/$1/g" < /lib/udev/usbseat-xf86.conf.sed > $TMPFILE /usr/bin/gdmdynamic -v -t 2 -s 1 -a "$1=/usr/X11R6/bin/X -br :$1 -audit 0 -nolisten tcp vt07 -config $TMPFILE" /usr/bin/gdmdynamic -v -r $1 fi ;; esac exit 0
5. X config file
Create file /lib/udev/usbseat-xf86.conf.sed with contents
Section "ServerFlags" Option "AutoEnableDevices" "false" Option "AutoAddDevices" "false" Option "DefaultLayout" "seat" Option "DontZoom" "true" Option "DontZap" "true" Option "AllowMouseOpenFail" "yes" EndSection Section "Module" Load "ddc" EndSection Section "Files" ModulePath "/usr/lib/xorg/modules" ModulePath "/usr/local/lib/xorg/modules" EndSection Section "Device" Identifier "dl" driver "displaylink" Option "fbdev" "/dev/usbseat/%ID_SEAT%/display" EndSection Section "InputDevice" Identifier "keyboard" Driver "evdev" Option "CoreKeyboard" Option "Device" "/dev/usbseat/%ID_SEAT%/keyboard" Option "XkbModel" "evdev" Option "XkbLayout" "us" EndSection Section "InputDevice" Identifier "mouse" Driver "mouse" Option "CorePointer" Option "Protocol" "ImPS/2" Option "Device" "/dev/usbseat/%ID_SEAT%/mouse" Option "Buttons" "5" Option "ZAxisMapping" "4 5" EndSection Section "Monitor" Identifier "monitor" EndSection Section "Screen" Identifier "screen" Device "dl" Monitor "monitor" EndSection Section "ServerLayout" Identifier "seat" Screen 0 "screen" 0 0 InputDevice "keyboard" "CoreKeyboard" InputDevice "mouse" "CorePointer" EndSection
6. fbcon workaround
fbcon is a standard Linux kernel module, which aggressively assumes it can open any framebuffer device and take it over for use as a text terminal. Unfortunately, that's not what we want if we're going to be using that framebuffer to run its own X server. So we need to add a file /etc/modprobe.d/fbcon.conf to disable fbcon and leave our framebuffers free for other uses.
blacklist font blacklist tileblit blacklist bitblit blacklist fbcon
This file will not take effect until you run
sudo update-initramfs -u
Now, when you reboot and run "lsmod" you should not see fbcon in the loaded modules. And in /sys/class/graphics you should see fb0, instead of fbcon.
7. xrandr workaround
The DisplayLink X server currently has limited RANDR support, but later versions of GDM assume better. So for the time being, a workaround is required to get GDM applications (including gdmlogin) to display properly within the actual screen area -- otherwise they tend to think the screen has a strange rotation, and display themselves completely off it.
Add these lines into /etc/gdm/Init/Default, right after the definition of gdmwhich()
XRANDR=`gdmwhich xrandr` if [ "x$XRANDR" != "x" ]; then $XRANDR -o 0 fi
8. /etc/rc.local script
Add the following lines to your /etc/rc.local script to check for attached usb terminals that were attached (at boot), and udev found them before GDM was running.
oldIFS=$IFS IFS=/ for seat in /dev/usbseat/*; do set $seat /lib/udev/usbseat.sh $4 done IFS=$oldIFS
9. /etc/init.d/gdm patch
In recent versions of X, the system largely assumes that you'll only run one X server, and it will own all devices. So to support multiseat with multiple X servers easily, we need to have two configurations: normal (using only your primary graphics), and multiseat (where your primary graphics isn't used). We do this by detecting whether you have a USB terminal attached and configured, and if so coming up with a different gdm configuration.
Add these lines to your /etc/init.d/gdm script, just after the section to "Allow cdd to override the config" (around line 35).
# Allow usbseat to override the config if [ -f /etc/gdm/gdm-usbseat.conf ]; then for usbseat in /dev/usbseat/*; do seatid=${usbseat##*/} if [ -e "/dev/usbseat/$seatid/keyboard" -a -e "/dev/usbseat/$seatid/mouse" -a -e "/dev/usbseat/$seatid/display" ]; then CONFIG_FILE="--config=/etc/gdm/gdm-usbseat.conf" fi done fi
10. Create /etc/gdm/gdm-usbseat.conf
This is the alternative gdm.conf that will be used when a USB terminal is present at boot:
[daemon] DynamicXServers=true FlexibleXServers=0 Greeter=/usr/lib/gdm/gdmgreeter [security] [xdmcp] [gui] [greeter] [chooser] [debug] [servers] 0=inactive
Now, when you boot with USB terminal(s) attached, graphical logins will come up on all of those, while your primary display will remain a text console.
See my video from Linux Plumbers 2009 for more thoughts and background on USB multiseat.
Unsolved Problems
Beyond reworking for the new GDM/ConsoleKit versions, and getting all this just "built in" to the distributions, there are at least several major problems yet:
input duplication
[Update Feb 19, 2010 - fixed by removing "-sharevts -novtswitch" from the X start line and substituting a specific vt "vt07". Listing above now has problem resolved]
Input to any of the terminals will be duplicated to your primary console. This has a bunch of very nasty effects, including often duplicating your login to both your session and the console, and possibly causing strange effects like ctrl-c within any terminal will often cause that whole X session to close. This seems to be http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=525736, which at the bottom reports a workaround involving faketty, which unfortunately didn't work for me. You can also see a short discussion of this bug at https://fedorahosted.org/pipermail/multiseat/2009-April/date.html There ought to be a simple solution here -- any comments on that welcome.
mouse scroll wheel doesn't work
[Update Feb 19, 2010 - fixed by changing Protocol from "auto" to "ImPS/2" in the xorg.conf]
This is a problem with some other ways of doing multiseat: https://fedorahosted.org/pipermail/multiseat/2009-February/000004.html Again, probably a small tweak might resolve this.
unplug terminal doesn't tear down (or reconnect)
Currently, when you physically disconnect a terminal, everything remains running. By default, each user can only be logged in once, which means that you must do gdmdynamic -l to find the zombie instance and sudo gdmdynamic -d $seat to kill it. But the behavior users would really like to see is disconnecting the terminal leaves all apps running, but logging in from that terminal (or any other) reconnects and just transparently starts where the user left off.
Comments on other distros (e.g. yum vs. apt-get), better solutions, and other problems are very much appreciated.




To get gdm version on Ubuntu 9.04:
sudo gdm –version
I was wondering what version of Ubuntu 9.04 you were running. Server or Desktop. Can you explain the pros of or cons of each? I am looking to set up a multiseat using Ubuntu and now DisplayLink for a Java Based Gaming Kiosk. I think this solution fits my needs very well!
Thanks!
Hi Paul,
Either can work, as you can always install the packages you’re missing. But presumably with terminals, you’re trying to have many clients off a single machine. I’m running a client version so all the apps and desktop utilities are there right off the bat.
On gaming, I’d watch it — virtual USB graphics is snappy and indistinguishable from a normal graphics controller for web browsing and information apps. But when every pixel on the screen is changing many times per second (as with full screen video or gaming), you’ll hit bandwidth limits on USB.
Best wishes,
Bernie
Hello Bernie,
Out of the listed “Unsolved Problems”, I got he solution for the first two issue. But I am facing the third issue, which is needed for me to make use of this technology.
Any idea/suggestion which may shed some lights in this regard ?
I am using the Ubuntu ( jaunty ) 9.04 and followed this link for setup.
Waiting for your reply.
Thanking You
Hi Satish,
Asolution to the first issue is to replace “-novtswitch -sharevts” options to X in the usbseat.sh file, with assignment to a specific vt. So, for example, just replace with “vt07″ at the same spot on that line.
What solution have you found for the mouse scroll wheels?
On the third, there is no answer currently. Work could be done either at the X or framebuffer level, which in combination with the udev based X configuration that’s coming, could get there. But some development work will be needed.
It’s great that you’ve gotten this running – can you provide any more info about your setup? Links to anything? Thanks!
Bernie
Hi Satish,
Thanks for posting the scrollwheel solution up on the displaylink.org wiki.
Best wishes,
Bernie
Hello Bernie,
Thanks for updating the link.
and only ) unresolved issue.
I am still in search of solution of third ( now first
Now, sometime I got the login screen after reconnect. And If I logged in with the same user, by which I already logged in; I get the new session. Which I do not want.
Is there any way to list the number of running sessions; so user will select the session he wants and after picking up the existing session, he will get the same session from where he left off ?
Thanking You
Satish Wagh
Hi Satish,
GDM doesn’t have any built-in UI for that AFAIK. You can get at the raw information from the command line, though.
sudo gdmdynamic -l
will list some information about active sessions.
Hello Bernie,
As I see, there exist a command named “gdmflexiserver” which *almost* serves the mine purpose.
This command is useful when and only when we have logged in by 2 or more time.
I am just thinking about how do I use this command, in combination with usbseat.sh, ( may be after little bit customization ) to enlist the used session ( except the Host session ) and also to ask to start a new session.
Any thought on the same ???
Thanking You
Satish Wagh
Hi Satish,
Actually, I hadn’t thought about using gdmflexiserver.
That’s used to provide equivalent functionality to Windows’ fast user switching.
Does it work under the assumption that one user session is enabled at a time — or can it switch between multiple sessions, with multiple sessions active at a time — and with a different xorg configuration per session?
My guess is it won’t be able to do everything we need – but would be great if it did!
Thanks,
Bernie
Is there anyway to get this working with using my primary video card and a Plugable USB Dock? I have tried everything that I know how to.
I’m almost 100% this would just work if I had the money to buy another Plugable USB Dock but I don’t. Thank you for this guide and if my only option is buying another dock then I’ll try talking the boss into getting another.
Hi Steven,
Unfortunately, there’s no reliable way right now to get a mix of PCIe and USB displays working in a multiseat configuration. I very much suspect it can be done, but the X configuration issues are difficult enough that I’ve not had a report yet of anyone doing it …
So have you gotten the UD-160-A up and running as a single seat?
Best wishes,
Bernie
I followed this guide and ps aux | grep gdm show’s it’s using the config’s from the guide so yes it would appear it’s working as a single seat.
Some odd things though:
I have seen on occasion it use the regular config and a reboot usually has it run the usbseat config but seems to not always happen when the seat is plugged in. Also, I have seen 3 different login screens. Not that it matters. Just pointing out.
Running Xubuntu 9.04 (was 8.10 but did a do-release-upgrade I believe is the command)
Alright, got my 2nd display link in. Hooked it up. Rebooted and got no change. Was hoping it would just work
Issue is that I see it is creating /dev/usbseat/{1,2,3} I only have 2 display link devices.
usbseat/1 shows: keyboard mouse
usbseat/2 shows: display
usbseat/3 shows: display keyboard mouse
ps aux | grep gdm
I see /usr/sbin/gdm using the gdm-usbseat.conf twice. I see 1 /usr/X11R6/bin/X :3 (assuming X server using the/dev/usbseat/3 since it has all 3) and the gdmgreeter.
Any thoughts as to why the display in usbseat/2 is not in usbseat/1?
I have power, ethernet, and both pluggable display links connected to the PC. 1xMonitor, 1xkeyboard, 1xmouse plugged into each pluggable display link device.
Hi Steven, I suspect in your case the trouble is a mix of old and new USB topologies http://plugable.com/2010/03/06/upgraded-plugable-universal-docking-station/ We’ll get in touch, and get you fixed up.
I’ve updated the 50-usbseat.rules in this post to resolve what I suspect is the trouble. Let us know if it works.
/bow
Thank you! That worked perfectly.
ugh, I’m so excited and not sure how to say thank you enough!
Unknown edid version 0
On some reboot’s I get that error but rebooting once to a few times and it’s seems to fix. Seems random. Pattern so far: Error, Worked, Worked, Error, Error, Worked, and we are rebooting again to see if it still works.
Any thoughts?
Hi Steven – What error do you see intermittently?
Unknown edid version 0
That seems to be the only error that we get.
It seems like it attempts to start the server again and sometimes succeeds as we have a input box for username/password but it’s also the console. When you type it sends to both the console and the input box. Kind of strange.
Hi Steven Can you “sudo cat /var/log/kern.log | grep -i EDID” and see if the kernel mode drivers tell us any clues? The X failsafe path is very weird – best avoided. So let’s see if we can fix the intermittant EDID reading problem.
Accidently replied to the wrong post (it’s at the very bottom, remove or ignore it).
Here is some more info, including your requested one.
http://pastie.org/862048
Not sure how long that is active.
Although I don’t know yet what’s causing the problem, there are some things udlfb can do to be more resilient/reliable with EDID handling. Will look at that angle and see if can work around it. Thanks for the detailed info!
Thank you for all your help. After this I get to bug you about getting our Touch Screen to work.
Hi guys,
i have an ASUS EEEtop 1602 (without an external VGA) so i’ve tried to gt an usb Displaylink working to connect my 2nd Display. I am not so familar with ubuntu, i’am new at the linux scene. I tried to figure out (based on your description) to get this stupid display link adapter working. i’ve installed over 15 times an tried nearly everything. Can you give me some hints how to get this thing working? i don’t need multiple users, only a second display! thanks in advance!
Hi Oliver,
This post and thread is really just about the terminal scenario (multiple users). But in general (as you can see from all the steps above), configuration of this stuff is not easy on Linux – and, worse, it’s very distro dependent.
It’s even worse with using a USB graphics adapter in the extended desktop scenario, because then it’s also dependent on coordinating things with your primary graphics hardware, and there’s many things changing there in Linux (from some big changes in X to Linux’s new kernel graphics support which isn’t fully stable yet) which mean that there is no “one way” that just works — it’s highly convoluted.
You can read an interesting recent post from Linus Torvalds, arguing about some of the current compatibility issues with the new DRM/DRI stuff in the kernel, and how (even for Linus) he never wants to touch an xorg.conf again:
http://marc.info/?l=dri-devel&m=126780713904151&w=2
Unfortunately, that’s exactly what is needed to configure any graphics controller that’s not on the PCIe bus on Linux today, including USB displays.
This will all get better in time, but for now unless there’s a specific set of instructions for a specific scenario on a specific distro (like there is in this post), getting things working is going to require some advanced understanding of Linux and X.
So while other people have gotten it working, and you may be able to, configuring Linux for this is unfortunately not for novice users.
Best wishes,
Bernie
ps aux | grep gdm returns this right as it boots up and gives me ssh access:
/usr/sbin/gdm –config=/etc/gdm/gdm-usbseat.conf
/usr/sbin/gdm –config=/etc/gdm/gdm-usbseat.conf
/usr/X11R6/bin/X :2 -br :2 -audit 0 -nolisten tcp vt07 -config /tmp/tmp.LelwHZieoq -auth /var/lib/gdm/:2.Xauth -nolisten tcp
/usr/sbin/gdm –config=/etc/gdm/gdm-usbseat.conf
/usr/X11R6/bin/X :3 -br :3 -audit 0 -nolisten tcp vt07 -config /tmp/tmp.emEtWqArRr -auth /var/lib/gdm/:3.Xauth -nolisten tcp
I ran the ps aux | grep gdm again a few seconds later and the
/usr/X11R6/bin/X :3 -br :3 -audit 0 -nolisten tcp vt07 -config /tmp/tmp.emEtWqArRr -auth /var/lib/gdm/:3.Xauth -nolisten tcp
was gone. So we get the error for that X crashing but the login from the other X that is still running.
For the record, we determined that EDID reads were failing intermittently on Steven’s setup. We’ve tried some mititgations, but looks like we need to harden X driver to behave better with no EDID.
Hello Bernie,
If we do have multiple DL devices (say 10 device) connected to the system and all of them are in use by different user.
Now, suppose, a user on DL Device #3 unplugged the device, in that case, how the usbseat.sh will come to know which gnome-session to kill ? As there are number of DL devices in use and each of them running separate sessions.
And we want to kill/exit only that session which was in use by the just Unplugged-device.
Any thought on the same ?
Waiting for your positive feedback
Thanks
Satish Wagh
Hi Satish,
In each case, we know the parent hub device number of the DL device that has been removed, and we’ve used that number as a “seat ID”. So it is possible do call gdmdynamic -d on that number to kill the seat.
That said, that was the intention of the scripts originally, but I never got the device removal actions to trigger as expected. So removal is not getting handled today.
Also, if we eventually want to support a “disconnect” where we don’t tear down the session when the device is removed, and rather re-connect the open session when the device comes back — in that case, we’ll not want to tear down explicitly.
But, in any case, teardown isn’t right today. Your thoughts or work here are definitely welcome!
Hello Bernie,
How are you?
Any progress for device-removal operation ?
I am still (re)searching on, the way to save the current session as soon as the device is get dis-connected and greeting the user the same session when he/she logs back.
Looking forward for your positive feedback.
Regards
Satish
[WORDPRESS HASHCASH] The poster sent us ’0 which is not a hashcash value.
Hello Bernie,
Now I am getting very close to the desired project.
But the only problem, I am facing as of now is that, whenever I plug 2+ devices at the same time, then all of these devices share the keyboard and mouse. The mouse and keyboard of the *last* connected device remains in action.
Same things goes to happened when I connect the 2+ device and then boot the machine, Except that the mouse and keyboard of the HOST machine do not come up.
Also, If I plug-in and plug-out the device number of times then either that device do not come up and/or the Host machine and all the rest multi-seat sessions get hanged.
Can you shed some lights in theses issues ?
( P.S. Why the twitter account is not updated http://twitter.com/libdlo ? )
Thanks `n` Regards
Satish
[WORDPRESS HASHCASH] The poster sent us ’0 which is not a hashcash value.
Hi Satish,
No change on device removal behavior. I think it would be interesting to put udlfb in an (optional) mode where it doesn’t tear itself down on device removal if a client has the framebfufer open, rather it keeps a list of DL serial numbers, and reconnects when the same device comes back.
But it would be great to have a GDM-level temporary disconnect operation, rather than this low-level kind. No idea how to do it, though.
On your input device behavior – I’ve not seen anything like that. Suspect you’re using different version of xorg. Make sure to *not* use the sharevts option when starting X. And it make take the new Xorg InputClasses support in later distros to make this all clean for multiseat.
Please post any of your results and progress somewhere. I’m sure people will be interested.
Best wishes,
Bernie
[WORDPRESS HASHCASH] The poster sent us ’0 which is not a hashcash value.
Hi Bernie,
First, Thanks for the great tutorial. very much appreciated
Second, Thanks for following up so closely on the comments. one of the few ever.
I also wanted to ask if there are any news of getting Displaylink working with newer versions of gdm, and how can one help.
Cheers,
Rex
Hi Rex,
Thanks for the kind words. Here’s the latest on multiseat and GDM: http://mail.gnome.org/archives/gdm-list/2010-April/msg00006.html
So the best help in that area would be to take those unapplied patches and help test and provide feedback on them, especially in combination with the instructions above.
I’m hoping there’ll be some news soon on Google Summer of Code, which might provide a good push for this work …
Thanks!
Bernie
Hello Bernie,
I started to migrate the project on RHEL-5.3 (32 bit).
But it seems that RHEL5.3 is not responding the same way Ubuntu does.
The kernel module ( udlfb ) making the kernel panic ( with no message in /var/log/messages ) and the X module ( displaylink_drv.so ) is not getting compiled at all, giving the error of fb_dev structure and missing xf86Modes.h header file.
I would like to know, Bernie, that Is there any tree maintained for RHEL-5.3 or any sort of support is available for the same ?
Thanks
Satish
Hi Satish – I’ve not done any work with RedHat. RHEL 5.3 was released in Jan 2009, predating any of the DisplayLink work. This thread is the best info I have http://lists.freedesktop.org/archives/libdlo/2010-February/000588.html
In terms of expertise, Alexander Todorov (http://otb.bg/) has done the most work with RedHat, although mostly 5.4+
So, sorry, focus is on getting things working on future distros, with no planned effort for older distros.
Hello Bernie,
Thanks for the update.
In that case, I will try to go with the distribution like Fedora 13 and/or RHEL-5.5
I hope, they will work like a charm.
For Ubuntu, I just followed the link, I have not updated the ubuntu’s any of package. So there must be some issues which need to be resolved.
Have you tested by booting the ubuntu ( jaunty ) with multiple USB Display-Link connected and getting all of them an individual screen, mouse, keyboard and sound ?
Also, I am still stuck at the process of maintaining the session of removed-device.
Please share your thought the same issue.
Thanking You
Satish
Hello Bernie,
Is it possible to run the dos-application in fullscreen mode on seat ?
I tried but with no luck.
Have you tried that ?
Please let me know.
Regards,
Satish
Hi Satish,
Because udlfb would be getting no notification of which pixels are changing, defio support in udlfb would have to be enabled (compile switch) to use page fault change detection.
Given that, it would depend on whether the DOS emulator could handle the fact that udlfb only supports a single framebuffer format: 16bpp RGB565. If the DOS emulator was using the standard fbdev interface, and could convert pixels to that format (or the DOS app was using that format natively), there should be nothing preventing it from working.
But I haven’t done this myself, and haven’t seen any reports from others yet.
.
Thanks!
Bernei