USB video devices, such as -sisusb based devices like USB2VGA2 or -displaylink based devices can be made to work on Ubuntu with some effort. Generally this involves installing a kernel and/or X driver, and constructing an appropriate xorg.conf. The interest is in making Ubuntu "just work" by automatically noticing the device connection, automatically detecting the display and loading the appropriate driver, configuring a screen for it, and extending or mirroring the desktop.

USB graphics hotplugging

Hotplugging of video monitors requires kernel-level event notification. This is a feature recently added to for PCI-based devices, but requires Kernel Mode-Setting (KMS). Something analogous to that would need to be set up for the USB devices. USB hotplugging obviously works on the kernel side, so support for listening to USB hotplug events would need to be added to the xserver.

Barring this, you'd need to do an X server restart as a workaround.

Automatic detection and enabling graphics device

Autodetection in X is done by an algorithm which probes the PCI bus. So the first problem to solve is to make X able to probe the USB bus for video devices, identify those devices with an appropriate video driver, and load the driver. See hw/xfree86/common/xf86AutoConfig.c as an entry point for this logic.

So the first step is to build up a USB-based methodology for detecting and enabling USB-based video devices.

Connecting screens and extending/mirroring desktop

The problem here is that these drivers are developed assuming Xinerama, however most of does not currently support Xinerama, preferring Xrandr instead.

So currently if you want to have the USB device show video in addition to the regular laptop or external monitor, you must use a Xinerama-enabled driver such as -nvidia. Note that -nvidia does not use the standard X autoconfiguration mechanisms, but rather employs its own utility which generates an appropriate xorg.conf file. There are not plans to implement Xserver autodetection of -nvidia in Ubuntu nor upstream or by NVIDIA.

There has been discussion upstream about providing Xinerama-like support on top of Xrandr but code for this functionality is not yet available at time of this writing. As well, the USB drivers (-displaylink, -sisusb) will need to have Xrandr support (and Xrandr+Xinerama support) added to them.

X/Blueprints/UsbVideo (last edited 2010-04-15 01:28:54 by pool-74-107-129-37)