<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>Planet Freedesktop &#8211; Plugable</title>
	<atom:link href="https://plugable.com/category/platform/linux/feed/" rel="self" type="application/rss+xml" />
	<link>https://plugable.com</link>
	<description>USB and Thunderbolt 3</description>
	<lastBuildDate>Mon, 27 Jul 2015 17:55:23 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.6</generator>
<site xmlns="com-wordpress:feed-additions:1">42873130</site>	<item>
		<title>One Fedora 17 Box up to 16 USB Multiseat Terminals</title>
		<link>https://plugable.com/2012/09/02/one-fedora-17-box-up-to-16-usb-multiseat-terminals/</link>
					<comments>https://plugable.com/2012/09/02/one-fedora-17-box-up-to-16-usb-multiseat-terminals/#comments</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Mon, 03 Sep 2012 02:32:56 +0000</pubDate>
				<category><![CDATA[DC-125]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[UD-160-M]]></category>
		<category><![CDATA[Using]]></category>
		<category><![CDATA[amazon:asin=B004PXPPNA]]></category>
		<category><![CDATA[amazon:asin=B0081LVOTQ]]></category>
		<category><![CDATA[ud-160-m]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=5060</guid>

					<description><![CDATA[Fedora 17, as shipped, supports only 7 or 8 plug-and-play USB terminals per machine. The cause is the kernel evdev driver&#8217;s limit of 32 input devices. You can see how your 32 evdev slots are currently getting used on a system with the command for i in {0..31..1}; do udevadm info -a -n /dev/input/event$i &#124; [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Fedora 17, as shipped, supports only 7 or 8 plug-and-play USB terminals per machine. The cause is the kernel evdev driver&#8217;s limit of 32 input devices.</p>
<p>You can see how your 32 evdev slots are currently getting used on a system with the command</p>
<pre>
for i in {0..31..1}; do udevadm info -a -n /dev/input/event$i | grep name; done
</pre>
<p>On the Fedora 17 multiseat box I&#8217;m using now to write this post, I have 3 USB terminals sharing one box &#8212; while I&#8217;ve spent the afternoon figuring this stuff out on one of the USB terminals, at the same time the kids have been watching endless youtube videos with their headsets on the other two. On this box, the command above shows:</p>
<pre>
    ATTRS{name}=="Power Button"
    ATTRS{name}=="Power Button"
    ATTRS{name}=="Plantronics Plantronics .Audio 655 DSP"
    ATTRS{name}=="Dell Dell USB Keyboard"
    ATTRS{name}=="USB Optical Mouse"
    ATTRS{name}=="USB Optical Mouse"
    ATTRS{name}=="Dell Dell USB Keyboard"
    ATTRS{name}=="GASIA USB KB V11"
    ATTRS{name}=="GASIA USB KB V11"
    ATTRS{name}=="SIGMACHIP Usb Mouse"
    ATTRS{name}=="C-Media Electronics Inc. USB Multimedia Audio Device"
    ATTRS{name}=="CM109 USB driver"
    ATTRS{name}=="HDA Intel PCH HDMI/DP,pcm=3"
    ATTRS{name}=="HDA Intel PCH Line"
    ATTRS{name}=="HDA Intel PCH Rear Mic"
    ATTRS{name}=="HDA Intel PCH Front Mic"
    ATTRS{name}=="HDA Intel PCH Front Headphone"
    ATTRS{name}=="HDA Intel PCH Line Out"
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
</pre>
<p>This shows I only have 14 evdev slots left (the &#8220;device node not found&#8221; ones are available slots). So I know I could only connect 7 terminals total to this machine (a USB terminal&#8217;s unused audio buttons + keyboard + mouse takes up 3, I could only get 14 / 3 = 4 more than the three I have).</p>
<p>We can lift the limit of USB terminals from 7 to 16 by disabling often unused input devices: hardware volume controls and system (power) buttons. The following udev rules script does that with 3 rules.  </p>
<p>Note that this will mean you&#8217;ll have to power off / sleep from the UI, your mainboard audio will be disabled, and special keyboard multimedia keys will be disabled.  Feel free to comment out the appropriate lines in the udev rules if you want to keep those.</p>
<p>To apply these optimizations, create a system file (as sudo) called /usr/lib/udev/rules.d/72-seat.rules<br />
with the following contents and reboot.</p>
<pre>
#
# Bernie Thompson bernie@plugable.com
#
# These udev rules help alleviate the Linux kernel limit of 32 evdev devices.
# This file should be deleted once the kernel's 32 device limit is lifted.
#
# Background: Every input device on the system, including several for 
# power buttons, PCI audio, USB audio, keyboard multimedia keys, etc. 
# all count towards the 32 limit.  Many systems reserve at least 8 for
# these uses. So as shipped with Fedora 17, only 7 or so USB terminals 
# (like the Plugable DC-125 or Plugable UD-160-M) will work.
#
# Run this at a command line to see how your 32 event slots are being used:
#
# for i in {0..31..1}; do udevadm info -a -n /dev/input/event$i | grep name; done
#
# If you have any event slots free, you'll see a "device node not found" message for each
#
# USB terminals consume an extra event device with the USB HID device
# associated with the audio interface for volume control. The udev rule below
# frees it up. This will enable around 12 USB terminals per server.
#
SUBSYSTEMS=="usb", SUBSYSTEM=="input", ENV{ID_SEAT}!="seat0", ENV{ID_USB_INTERFACE_NUM}!="00", RUN="/bin/sh -c 'echo $id > /sys/$devpath/../../../driver/unbind'"

#
# Free up any input devices associated with audio on the PCI bus.
# *IMPORTANT* This will disable your PC's mainboard PCI audio
# (because we can only unbind the whole PCI device)
# This will enable 13 or so USB terminals per server
# Comment out the line with a "#" if you'd like PCI audio to work
#
SUBSYSTEM=="pci", ATTR{class}=="0x040300", RUN="/bin/sh -c 'echo $kernel > /sys/$devpath/driver/unbind'"

# 
# Free up any ACPI (system power) buttons. 
# *IMPORTANT* This will disable all built-in buttons on your PC (e.g. power)
# You will need to shut down, etc. from the Linux UI with administrative rights.
# This has the side-effect of making your PC slightly more secure against student tampering.
# Comment out the line with a "#" if you'd like these to work
# This will enable an extra USB terminal or so per server
# If you have no other event devices, other than the USB terminals, should get to 16 terminals.
#
SUBSYSTEM=="acpi", DRIVER=="button", RUN="/bin/sh -c 'echo $kernel > /sys/$devpath/driver/unbind'"
</pre>
<p>After creating that udev rule and rebooting, things look much more favorable in terms of evdev slots.  Only the &#8220;real&#8221; USB keyboards and mice are left to consume slots:</p>
<pre>
    ATTRS{name}=="SIGMACHIP Usb Mouse"
device node not found
device node not found
    ATTRS{name}=="Dell Dell USB Keyboard"
    ATTRS{name}=="USB Optical Mouse"
    ATTRS{name}=="USB Optical Mouse"
    ATTRS{name}=="Dell Dell USB Keyboard"
    ATTRS{name}=="GASIA USB KB V11"
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
device node not found
</pre>
<p>There are now enough free slots for 16 USB terminals (or, more specifically, their keyboards and mice).</p>
<p>Hopefully this is just a temporary workaround, until someone tackles the task of lifting the kernel&#8217;s limit of 32 evdev devices. That&#8217;s a very constraining limit for a whole host of reasons.</p>
<p>Note that one of the remaining bugs in Fedora 17 is that random USB terminals often come up to a green screen, requiring an unplug/replug to get a login.  These scripts may increase the frequency of that if you have a lot of terminals, as the system bounces against the 32 device limit, then returns below it as the udev rules execute.</p>
<p>Hopefully in future versions of Fedora / systemd, those race conditions will be closed.</p>
<p>Hope you enjoy turning your one Fedora 17 PC into many. Please comment if you have any problems applying, we&#8217;ll try to help.  See also our post on some <a href="https://plugable.com/2012/08/19/switching-to-gnome-fallback-mode/">huge Fedora 17 performance optimizations for USB multiseat</a> which greatly improve the default experience. </p>
<p>And if you&#8217;re running more than 8 terminals with Fedora 17, please post a comment &#8211; we&#8217;d love to hear about it!<br />
<div class="blogWidget" id="UD-160-M"> <div class="title">
    <a title="Click to learn more about the UD-160-M" href="/products/ud-160-m">
      Plugable UD-160-M USB 2.0 Thin Client Full HD
    </a>
  </div>
  <div class="imageContainer">
    <img class="product" src="https://d37zrt9wnah8io.cloudfront.net/images/ud-160-m/main_256.jpg" onclick="location.href='http://www.plugable.com/products/ud-160-m';" title="UD-160-M">
  </div>
  <h2 class="price"></h2>
  <div class="flagContainer">
    
  </div>
  <button class="postbutton" id="buynow" onclick="gotoproduct_productspage(this)">
    Select Market
  </button> </div>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2012/09/02/one-fedora-17-box-up-to-16-usb-multiseat-terminals/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5060</post-id>	</item>
		<item>
		<title>Dconf configuration: GNOME 3 Fallback Mode</title>
		<link>https://plugable.com/2012/08/19/switching-to-gnome-fallback-mode/</link>
					<comments>https://plugable.com/2012/08/19/switching-to-gnome-fallback-mode/#comments</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Mon, 20 Aug 2012 01:04:39 +0000</pubDate>
				<category><![CDATA[DC-125]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[UD-160-M]]></category>
		<category><![CDATA[Using]]></category>
		<category><![CDATA[amazon:asin=B004PXPPNA]]></category>
		<category><![CDATA[amazon:asin=B0081LVOTQ]]></category>
		<category><![CDATA[ud-160-m]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=4983</guid>

					<description><![CDATA[The Linux GNOME 3 UI assumes you have a beefy 3D GPU and capable driver, which can cause problems when that isn&#8217;t the case. Individual GNOME 3 users can fix this by setting their desktop experience to GNOME 3 &#8220;fallback mode&#8221; which can avoid the 3D compute burden. Fallback mode is an essential setting for [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>The Linux GNOME 3 UI assumes you have a beefy 3D GPU and capable driver, which can cause problems when that isn&#8217;t the case.</p>
<p>Individual GNOME 3 users can fix this by <a target="_blank" href="https://plugable.com/2012/06/11/fedora-17s-secret-turbo-boost-button/">setting their desktop experience to GNOME 3 &#8220;fallback mode&#8221;</a> which can avoid the 3D compute burden. Fallback mode is an essential setting for older PCs, VMs, USB graphics, remote desktop, etc.  It also provides the (arguably) more familiar GNOME 2 like experience (Applications / Places menus, desktop icons, etc.)</p>
<p>It&#8217;s possible to configure fallback mode for all users, plus the login screens, centrally by changing some dconf settings.  Here&#8217;s how:</p>
<p>First, if you don&#8217;t already have a &#8220;user&#8221; profile, then we create one &#8212; specifying a new settings database we&#8217;ll call &#8220;fallback&#8221;. Create a file /etc/dconf/profile/user (as su / sudo) which contains these two lines:</p>
<pre>
user
fallback
</pre>
<p>Then we&#8217;ll create the settings directories for that new database</p>
<pre>
sudo mkdir /etc/dconf/db/fallback.d
sudo mkdir /etc/dconf/db/fallback.d/locks
</pre>
<p>Create a settings file to also use fallback once users are logged in. Create a file called /etc/dconf/db/fallback.d/60-user-fallback with:</p>
<pre>
[org/gnome/desktop/session]
session-name='gnome-fallback'

[org/gnome/desktop/background]
show-desktop-icons = true

# This one is useful more for automatic USB multiseat
[org/gnome/desktop/lockdown]
disable-user-switching = true
</pre>
<p>And, finally, create a settings file to have login screens themselves use fallback mode. Create a file /etc/dconf/db/gdm.d/60-login-fallback with:</p>
<pre>
[org/gnome/desktop/session]
session-name='gdm-fallback'
</pre>
<p>dconf is a <a href="http://en.wikipedia.org/wiki/Dconf" target="_blank">binary settings database</a> (very un-unix like), so for any of these changes to take effect, you must run</p>
<pre>
sudo dconf update
</pre>
<p>Which will update the binary blobs which are then queried by GNOME to apply these settings. See the <a target="_blank" href="https://live.gnome.org/dconf/SystemAdministrators">dconf admin guide</a> for more.</p>
<p>And that should do it.  You should see the fallback look and feel (more like GNOME 2). And if you&#8217;re running in a VM, with USB multiseat, or anywhere you don&#8217;t access to a beefy 3D processor &#8212; you should see a big drop in CPU usage.</p>
<p>Again, these directions have only been tested on Fedora 17. Please feel free to comment on changes (if any) to apply them for other distros.</p>
<div class="blogWidget" id="UD-160-M"> <div class="title">
    <a title="Click to learn more about the UD-160-M" href="/products/ud-160-m">
      Plugable UD-160-M USB 2.0 Thin Client Full HD
    </a>
  </div>
  <div class="imageContainer">
    <img class="product" src="https://d37zrt9wnah8io.cloudfront.net/images/ud-160-m/main_256.jpg" onclick="location.href='http://www.plugable.com/products/ud-160-m';" title="UD-160-M">
  </div>
  <h2 class="price"></h2>
  <div class="flagContainer">
    
  </div>
  <button class="postbutton" id="buynow" onclick="gotoproduct_productspage(this)">
    Select Market
  </button> </div>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2012/08/19/switching-to-gnome-fallback-mode/feed/</wfw:commentRss>
			<slash:comments>11</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4983</post-id>	</item>
		<item>
		<title>New Distros and Linux Automatic USB Multiseat Support</title>
		<link>https://plugable.com/2012/08/15/new-distros-and-linux-automatic-usb-multiseat-support/</link>
					<comments>https://plugable.com/2012/08/15/new-distros-and-linux-automatic-usb-multiseat-support/#comments</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Wed, 15 Aug 2012 19:13:27 +0000</pubDate>
				<category><![CDATA[DC-125]]></category>
		<category><![CDATA[Installing]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[UD-160-M]]></category>
		<category><![CDATA[amazon:asin=B004PXPPNA]]></category>
		<category><![CDATA[amazon:asin=B0081LVOTQ]]></category>
		<category><![CDATA[dc-125]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=4976</guid>

					<description><![CDATA[OpenSUSE and ArchLinux appear to be making good progress on integrating the latest version of systemd, which is a central element of Linux&#8217;s new Automatic USB multiseat support &#8212; letting you turn one machine into many with plug and play USB terminals. Since this is all open source, we expect the porting process will happen [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>OpenSUSE and <a href="http://www.h-online.com/open/news/item/Arch-Linux-proposes-switch-to-systemd-1667815.html" target="_blank">ArchLinux</a> appear to be making good progress on integrating the latest version of systemd, which is a central element of Linux&#8217;s new Automatic USB multiseat support &#8212; letting you turn one machine into many with plug and play USB terminals.</p>
<p>Since this is all open source, we expect the porting process will happen in time. </p>
<p>For now, the best bet is the distro under which support was first developed &#8212; <a href="http://fedoraproject.org/" target="_blank">Fedora 17</a> and later.  On Fedora, any supported USB terminal (like those on the right), will automatically pop up a fresh login when plugged in, no software install or licenses needed.</p>
<div class="blogWidget" id="DC-125"> <div class="title">
    <a title="Click to learn more about the DC-125" href="/products/dc-125">
      Plugable DC-125 USB 2.0 Thin Client
    </a>
  </div>
  <div class="imageContainer">
    <img class="product" src="https://d37zrt9wnah8io.cloudfront.net/images/dc-125/main_256.jpg" onclick="location.href='http://www.plugable.com/products/dc-125';" title="DC-125">
  </div>
  <h2 class="price"></h2>
  <div class="flagContainer">
    <img class="flag" type="productsPage" onclick="flagclick_productspage(this);" sku="dc-125" market="nl" asin="B004PXPPNA" tag="" ref_="" clicked="f" price="55.58" title="Amazon.nl" src="https://d37zrt9wnah8io.cloudfront.net/images/flags/nl_flag.png">
  </div>
  <button class="postbutton" id="buynow" onclick="gotoproduct_productspage(this)">
    Select Market
  </button> </div>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2012/08/15/new-distros-and-linux-automatic-usb-multiseat-support/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4976</post-id>	</item>
		<item>
		<title>DisplayLink USB Devices on Linux Kernel 3.4.0</title>
		<link>https://plugable.com/2012/06/21/displaylink-usb-devices-on-linux-kernel-3-4-0/</link>
					<comments>https://plugable.com/2012/06/21/displaylink-usb-devices-on-linux-kernel-3-4-0/#comments</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Thu, 21 Jun 2012 17:51:16 +0000</pubDate>
				<category><![CDATA[DC-125]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[UD-160-M]]></category>
		<category><![CDATA[amazon:asin=B004PXPPNA]]></category>
		<category><![CDATA[amazon:asin=B0081LVOTQ]]></category>
		<category><![CDATA[dc-125]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=4430</guid>

					<description><![CDATA[Linux kernel 3.4.0 is the first to include a new driver for DisplayLink-based USB 2.0 devices, called &#8220;udl&#8221;. udl is a port of the udlfb driver to Linux&#8217;s DRM architecture. David Airlie is doing this work, and the potential is very exciting. Eventually, this architecture will lead to a host of advantages, including GPU-accelerated 3D [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Linux kernel 3.4.0 is the first to include a new driver for DisplayLink-based USB 2.0 devices, called &#8220;udl&#8221;.  udl is a port of the udlfb driver to Linux&#8217;s DRM architecture. David Airlie is doing this work, and the potential is very exciting. Eventually, this architecture will lead to a host of advantages, including GPU-accelerated 3D rendering to USB graphics adapters. </p>
<p>Both the new &#8220;udl&#8221;, and older &#8220;udlfb&#8221; framebuffer driver that we maintain are present in 3.4.0.  Unfortunately, the new udl DRM driver is still maturing, and can cause kernel panics.  With USB graphics devices present, you can determine which driver (&#8220;udlfb&#8221; or &#8220;udl&#8221;) is getting loaded with lsmod:</p>
<pre>
lsmod | grep "udl"
</pre>
<p>This change has a particular impact with Fedora 17 &#8212; the first open source distro to have automatic USB multiseat support &#8212; which shipped with Linux kernel 3.3.</p>
<p>Post-ship, Fedora 17 now offers a software update to kernel 3.4.0, which unfortunately causes problems: udl may be loaded for DisplayLink-based devices, and kernel panics are common and terminals often won&#8217;t come up. To the user, it appears to break multiseat.</p>
<p>So to fix the issues you&#8217;ll see with 3.4.0, we recommend disabling udl for the time being.  The stable udlfb driver is still present in the kernel, and will get matched against your hardware automatically once udl is no longer loaded. The easiest way to do this is to run the following commands and reboot:</p>
<pre>
echo "blacklist udl" | sudo tee --append /etc/modprobe.d/udlfb.conf
sudo depmod -a
sudo dracut -f /boot/initramfs-$(uname -r).img $(uname -r)
</pre>
<p>One the server reboots, udlfb should match all USB graphics devices and be fully stable. Please let us know if you have any trouble.  And in coming Linux kernel versions, udl will continue to improve and at some point udlfb will be able to be retired in favor of it. </p>
<div class="blogWidget" id="DC-125"> <div class="title">
    <a title="Click to learn more about the DC-125" href="/products/dc-125">
      Plugable DC-125 USB 2.0 Thin Client
    </a>
  </div>
  <div class="imageContainer">
    <img class="product" src="https://d37zrt9wnah8io.cloudfront.net/images/dc-125/main_256.jpg" onclick="location.href='http://www.plugable.com/products/dc-125';" title="DC-125">
  </div>
  <h2 class="price"></h2>
  <div class="flagContainer">
    <img class="flag" type="productsPage" onclick="flagclick_productspage(this);" sku="dc-125" market="nl" asin="B004PXPPNA" tag="" ref_="" clicked="f" price="55.58" title="Amazon.nl" src="https://d37zrt9wnah8io.cloudfront.net/images/flags/nl_flag.png">
  </div>
  <button class="postbutton" id="buynow" onclick="gotoproduct_productspage(this)">
    Select Market
  </button> </div>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2012/06/21/displaylink-usb-devices-on-linux-kernel-3-4-0/feed/</wfw:commentRss>
			<slash:comments>20</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4430</post-id>	</item>
		<item>
		<title>Fedora 17&#8217;s Secret Turbo Boost Button</title>
		<link>https://plugable.com/2012/06/11/fedora-17s-secret-turbo-boost-button/</link>
					<comments>https://plugable.com/2012/06/11/fedora-17s-secret-turbo-boost-button/#comments</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Mon, 11 Jun 2012 23:38:24 +0000</pubDate>
				<category><![CDATA[DC-125]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[UD-160-M]]></category>
		<category><![CDATA[amazon:asin=B004PXPPNA]]></category>
		<category><![CDATA[amazon:asin=B0081LVOTQ]]></category>
		<category><![CDATA[dc-125]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=4358</guid>

					<description><![CDATA[Fedora 17&#8217;s out-of-the-box plug and play USB multiseat is awesome for sharing one system with many users &#8212; but there&#8217;s a way to dramatically boost performance and scalability, by changing the Fedora defaults. Background Fedora 17 continues to default to GNOME 3, which assumes the presence of powerful 3D hardware. If that&#8217;s not the case [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Fedora 17&#8217;s out-of-the-box plug and play USB multiseat is awesome for sharing one system with many users &#8212; but there&#8217;s a way to dramatically boost performance and scalability, by changing the Fedora defaults.</p>
<p><strong>Background</strong></p>
<p>Fedora 17 continues to default to GNOME 3, which assumes the presence of powerful 3D hardware.</p>
<p>If that&#8217;s not the case (e.g. in a VM, or with Fedora 17&#8217;s new automatic USB multiseat functionality), then Fedora 17 defaults to llvmpipe based software 3D, which is software to make full use of your CPU to do all the work there.  </p>
<p>That&#8217;s great on a fast CPU with multiple cores (Core i3 class and up), but it brings lesser processors to their knees.  Users can unnecessarily perceive Linux as slow and unusable.  On a USB multiseat system, where you don&#8217;t have a 3D GPU and so are using llvmpipe, the load can be unacceptable even for a single user on a Core 2 class system.  But by going to GNOME 3 &#8220;fall back mode&#8221; (which depends less on 3D composting for eye candy), having 5-6 users even on a dual core Atom system is no problem. It&#8217;s a dramatic performance difference.</p>
<p>You can tell if Fedora 17 is running llvmpipe by opening &#8220;System Settings&#8221;, and then &#8220;Details&#8221;</p>
<p><a href="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2012/06/Fedora-17-System-Settings-Details.png"><img src="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2012/06/Fedora-17-System-Settings-Details.png" alt="" title="Fedora-17-System-Settings-Details" width="540" class="aligncenter size-full wp-image-4361" srcset="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2012/06/Fedora-17-System-Settings-Details.png 682w, https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2012/06/Fedora-17-System-Settings-Details-300x62.png 300w" sizes="(max-width: 682px) 100vw, 682px" /></a></p>
<p>Then click on the &#8220;Graphics&#8221; tab.  If it shows a driver of Gallium on llvmpipe, and &#8220;Standard&#8221; experience, then you&#8217;re in this mode where you&#8217;ll see high CPU usage at all times (even when no graphics appear to be changing!) because of GNOME 3&#8217;s 3D effects.</p>
<p><a href="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2012/06/Fedora-17-System-Settings-Details-Graphics-Standard.png"><img src="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2012/06/Fedora-17-System-Settings-Details-Graphics-Standard.png" alt="" title="Fedora-17-System-Settings-Details-Graphics-Standard" width="540" class="aligncenter size-full wp-image-4362" srcset="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2012/06/Fedora-17-System-Settings-Details-Graphics-Standard.png 677w, https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2012/06/Fedora-17-System-Settings-Details-Graphics-Standard-300x241.png 300w" sizes="(max-width: 677px) 100vw, 677px" /></a></p>
<p><strong>How to boost performance</strong></p>
<p>But by hitting the &#8220;Forced Fallback Mode&#8221; switch to on, you can drop the GNOME 3 UI, enormously reduce your CPU load, and get a user experience that&#8217;s closer to what people are used to (more GNOME 2 like &#8212; has a task bar, potential for desktop icons, etc.).  Maybe they should have renamed the setting &#8230;</p>
<p><a href="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2012/06/Fedora-17-System-Settings-Details-Graphics-Fallback-On-Turbo.png"><img src="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2012/06/Fedora-17-System-Settings-Details-Graphics-Fallback-On-Turbo.png" alt="" title="Fedora 17-System-Settings-Details-Graphics-Fallback-On-Turbo" width="540" class="aligncenter size-full wp-image-4363" srcset="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2012/06/Fedora-17-System-Settings-Details-Graphics-Fallback-On-Turbo.png 677w, https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2012/06/Fedora-17-System-Settings-Details-Graphics-Fallback-On-Turbo-300x243.png 300w" sizes="(max-width: 677px) 100vw, 677px" /></a></p>
<p>On a Fedora 17 system with a bunch of USB thin clients attached, you can gain a ton of performance by making this change. But you&#8217;ll likely want to make this change in dconf configuration (so it also applies to the login screens).  For that, read the follow-up post on <a href="https://plugable.com/2012/08/19/switching-to-gnome-fallback-mode/">configuring all users for GNOME 3 fallback</a>.</p>
<div class="blogWidget" id="DC-125"> <div class="title">
    <a title="Click to learn more about the DC-125" href="/products/dc-125">
      Plugable DC-125 USB 2.0 Thin Client
    </a>
  </div>
  <div class="imageContainer">
    <img class="product" src="https://d37zrt9wnah8io.cloudfront.net/images/dc-125/main_256.jpg" onclick="location.href='http://www.plugable.com/products/dc-125';" title="DC-125">
  </div>
  <h2 class="price"></h2>
  <div class="flagContainer">
    <img class="flag" type="productsPage" onclick="flagclick_productspage(this);" sku="dc-125" market="nl" asin="B004PXPPNA" tag="" ref_="" clicked="f" price="55.58" title="Amazon.nl" src="https://d37zrt9wnah8io.cloudfront.net/images/flags/nl_flag.png">
  </div>
  <button class="postbutton" id="buynow" onclick="gotoproduct_productspage(this)">
    Select Market
  </button> </div>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2012/06/11/fedora-17s-secret-turbo-boost-button/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4358</post-id>	</item>
		<item>
		<title>Howto: DisplayLink USB Single Monitor on Linux</title>
		<link>https://plugable.com/2011/12/23/usb-graphics-and-linux/</link>
					<comments>https://plugable.com/2011/12/23/usb-graphics-and-linux/#comments</comments>
		
		<dc:creator><![CDATA[Jerome Myers]]></dc:creator>
		<pubDate>Sat, 24 Dec 2011 00:23:27 +0000</pubDate>
				<category><![CDATA[DC-125]]></category>
		<category><![CDATA[Display]]></category>
		<category><![CDATA[Installing]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[udlfb]]></category>
		<category><![CDATA[UGA-165]]></category>
		<category><![CDATA[USB-VGA-165]]></category>
		<category><![CDATA[USB2-HDMI-165]]></category>
		<category><![CDATA[Using]]></category>
		<category><![CDATA[amazon:asin=B0038P1TP4]]></category>
		<category><![CDATA[amazon:asin=B004AIJE9G]]></category>
		<category><![CDATA[amazon:asin=B004PXPPNA]]></category>
		<category><![CDATA[dc-125]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=3540</guid>

					<description><![CDATA[Unfortunately, Linux doesn&#8217;t support multiple graphics adapters the way Windows does, which means you can&#8217;t just plug in USB graphics adapters and expect them to extend your desktop (the good news is there is progress on this support). What is possible, however, is running a single DisplayLink adapter, or several with a Xinerama or multiseat [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Unfortunately, Linux doesn&#8217;t support multiple graphics adapters the way Windows does, which means you can&#8217;t just plug in USB graphics adapters and expect them to extend your desktop (the good news is <a href="http://www.phoronix.com/scan.php?page=news_item&#038;px=MTAzMjM" target="_blank">there is progress</a> on this support).</p>
<p>What is possible, however, is running a single DisplayLink adapter, or several with a Xinerama or multiseat configuration &#8212; just as long as you don&#8217;t expect to use your main GPU at the same time.</p>
<p>The single-display case is relatively easy to set up, and we&#8217;ll cover that here.</p>
<p>First, make sure you&#8217;re running kernel version 2.6.35 or later (Ubuntu 10.10 or later).  For older kernel versions, you&#8217;ll need to update udlfb and run a modified fbdev X server (not covered in this post).  On these kernel versions, when you plug in your DisplayLink-based USB graphics device, you should get a green screen. This means that at the driver built into the Linux kernel is happy, healthy, and talking to the device.</p>
<p>Second, if you are running Unity Desktop in Ubuntu 11.04 or later, you&#8217;ll need to switch back to Classic Mode so you&#8217;re running straight X.  Here&#8217;s how on Ubuntu: </p>
<p>Click on the power button in the upper right corner (mine looks like a light switch) and choose the last option, System Settings.  Search for Login Screen, Double-click to display, Choose Unlock and enter your password, Select Ubuntu Classic as default session.  </p>
<p>Third, if you&#8217;re running kernel versions between 2.6.35 to 3.1, enable the fb_defio option of udlfb. To do this, create or edit a file like<br />
/etc/modprobe.d/50-displaylink.conf</p>
<p>and add the single line</p>
<pre lang="bash">
options udlfb fb_defio=1
</pre>
<p>And reboot (or run &#8220;sudo depmod -a&#8221; and unplug/replug your adapter). This will turn on defio (page fault change detection) support. This option is already enabled by default in kernels 3.2+.</p>
<p>Lastly, create an X config file called 60-plugable.conf (or similar) with the following contents and place it in /usr/share/X11/xorg.conf.d (on recent distros; on older distros, make this your xorg.conf):</p>
<pre lang="xorg_conf">

Section "Device" 
  Identifier "uga" 
  driver "fbdev" 
  Option "fbdev" "/dev/fb0" 
  Option "ShadowFB" "off"
EndSection 

Section "Monitor" 
  Identifier "monitor" 
EndSection 

Section "Screen" 
  Identifier "screen" 
  Device "uga" 
  Monitor "monitor" 
EndSection 

Section "ServerLayout" 
  Identifier "default" 
  Screen 0 "screen" 0 0 
EndSection

</pre>
<p>Note: if your main GPU creates a /dev/fb0 even when the USB display is not attached, then your USB display is probably getting assigned to /dev/fb1. In that case, change /dev/fb0 in the &#8220;Device&#8221; section above to /dev/fb1</p>
<p>Now, on reboot, you should (hopefully!) see your login come up on your DisplayLink USB attached display!</p>
<p>This kind of simple setup is useful for:</p>
<ul>
<li>Testing or playing with your USB graphics adatper on Linux.</li>
<li>Embedded systems with USB but no GPU.</li>
<li>As a backup method when the main GPU or its driver isn&#8217;t available or working.</li>
<li>Systems where a USB graphics adapter enables higher modes (up to 2048&#215;1152) than the main GPU screen.</li>
</ul>
<p>Please comment if you have any trouble with this single display case.  See our <a href="https://plugable.com/category/project/udlfb/">past posts</a> for additional information about the DisplayLink Linux kernel driver and some more involved setups.</p>
<p>The instructed here work on all <a href="https://plugable.com/products#USB 2.0 Graphics Adapters">Plugable USB 2.0 graphics adapters</a> and <a href="https://plugable.com/products#USB 2.0 Multiseat Thin Clients">Plugable USB 2.0 docking stations and thin clients</a> (and should also generally work on all DisplayLink based products).</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2011/12/23/usb-graphics-and-linux/feed/</wfw:commentRss>
			<slash:comments>29</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3540</post-id>	</item>
		<item>
		<title>Plugable&#8217;s New 10-Port USB 2.0 Hub</title>
		<link>https://plugable.com/2010/11/01/10-port-usb-20-hub/</link>
					<comments>https://plugable.com/2010/11/01/10-port-usb-20-hub/#comments</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Tue, 02 Nov 2010 05:06:57 +0000</pubDate>
				<category><![CDATA[Evaluating]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[USB2-HUB10S]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[amazon:asin=B00483WRZ6]]></category>
		<category><![CDATA[usb2-hub10s]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=1544</guid>

					<description><![CDATA[A lot of USB hubs end up looking like a porcupine on your desk &#8211; wires going in all directions. So we&#8217;re excited to launch a hub with a lots of expandability (10 ports), but with a simple and clean design. Full USB 2.0/1.1 performance and compatibility. No compromises. Works on all platforms with no [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>A lot of USB hubs end up looking like a porcupine on your desk &#8211; wires going in all directions.</p>
<p>So we&#8217;re excited to launch a hub with a lots of expandability (10 ports), but with a simple and clean design.</p>
<ul>
<li>Full USB 2.0/1.1 performance and compatibility.  No compromises.  Works on all platforms with no drivers (i.e. it&#8217;s a standard USB 2.0 hub)</li>
<li>Cascaded Terminus Technology chipsets &#8211; the best designed, lowest power, most reliable USB 2.0 hub controller out there right now</li>
<li>The 10 ports (plus upstream port to PC and AC power) are all on just two sides of the hub, minimizing cable clutter</li>
<li>Two of the ports swivel to a vertical position &#8211; so if you want a flash drive or antenna to stick up, that works.  If you want everything to lay flat so you can stack on the hub, no problem</li>
<li>A blue LED bar down the center of the device signals power.  2.5A AC adapter included</li>
</ul>
<p>The customer feedback from this hub design has been surprising us &#8211; you wouldn&#8217;t think in 2010 that a USB 2.0 hub could get people excited.  But buyers have written with disproportionately positive feedback like &#8220;Easy to use and a really helpful device&#8221; and &#8220;Exactly what I was looking for&#8221;.  </p>
<p>With many laptops only having 2 or 3 USB ports, the easy expandability of a hub like this is a nice win.</p>
<p><strong>Check out more pics and details on the Amazon product page</strong></p>
[amtap amazon:asin=B00483WRZ6]
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/11/01/10-port-usb-20-hub/feed/</wfw:commentRss>
			<slash:comments>68</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1544</post-id>	</item>
		<item>
		<title>Howto: ASIX 88178 USB Ethernet Adapter on Ubuntu 10.10 Linux</title>
		<link>https://plugable.com/2010/10/18/howto-asix-88178-usb-ethernet-adapter-on-ubuntu-10-10-linux/</link>
					<comments>https://plugable.com/2010/10/18/howto-asix-88178-usb-ethernet-adapter-on-ubuntu-10-10-linux/#comments</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Mon, 18 Oct 2010 19:09:37 +0000</pubDate>
				<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[USB2-E1000]]></category>
		<category><![CDATA[Using]]></category>
		<category><![CDATA[amazon:asin=B003VSTDFG]]></category>
		<category><![CDATA[usb2-e1000]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=1500</guid>

					<description><![CDATA[[update Dec 2011: Linux kernel 3.2 rc3 and later &#8220;just work&#8221; (with config USB_NET_AX8817X), so the following steps are not needed.] Support for these devices has been in the Linux kernel since kernel 2.6.21 (file /drivers/net/usb/asix.c). However, prior to version 3.2, this driver fails to find an IP address, and comes up &#8220;disconnected&#8221; To get [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>[update Dec 2011: Linux kernel 3.2 rc3 and later &#8220;just work&#8221; (with config USB_NET_AX8817X), so the following steps are not needed.]</strong></p>
<p>Support for these devices has been in the Linux kernel since kernel 2.6.21 (file /drivers/net/usb/asix.c).  However, prior to version 3.2, this driver fails to find an IP address, and comes up &#8220;disconnected&#8221;</p>
<p>To get the adapter working, we need to download, compile, and install the <a href="http://www.asix.com.tw/download.php?sub=searchresult&#038;PItemID=84&#038;download=driver">latest driver available from ASIX for the AX88X family</a>. This driver is compatible with kernels 2.6.14+</p>
<p><strong>Steps</strong></p>
<p>Assumes you have another net connection on this machine. Download the driver on another machine and copy over if not.</p>
<pre lang="bash">
mkdir asix
cd asix
wget http://www.asix.com.tw/FrootAttach/driver/AX88772B_772A_760_772_178_LINUX2.6.35_Driver_v3.5.0_Source.tar.bz2
tar xvjf *
sudo apt-get install module-assistant
sudo module-assistant prepare
sudo modprobe -r asix
make
sudo make install
sudo modprobe asix
</pre>
<p>Your USB network interface should now come up automatically.  </p>
<p>These instructions have been written for our <a href="https://plugable.com/products/usb2-e1000/">Plugable USB2-E1000 USB Gigabit Ethernet adapter</a>, but should apply to any ASIX adapter with an ASIX AX88178 USB Ethernet controller and Realtek RTL8211CL PHY, which reports ASIX&#8217;s USB IDs VID_0B95 &#038; PID_1780.</p>
<p>The steps should work identically on older Ubuntu kernel versions. It was also tested on Ubuntu 9.04, kernel 2.6.28.10. Comment here if you have any trouble, and we&#8217;ll try to figure it out.</p>
<p><strong>Common errors</strong></p>
<p>Before this update of the driver, the common errors you&#8217;ll see typically show up as a timeout trying to get an IP address from DHCP.  You&#8217;ll see messages like</p>
<p>&#8220;no ipv6 routers present&#8221; in dmesg and /var/log/kern.log</p>
<p>And in /var/log/syslog:<br />
&#8220;DHCP transaction took too long (>45s), stopping it&#8221;<br />
&#8220;Marking connection &#8216;Auto eth1&#8217; invalid&#8221;</p>
<p>Again, this update of the &#8216;asix&#8217; kernel module should resolve these errors.  For the future, hopefully the in-kernel ASIX driver will get patches to catch it up with the driver source available directly from ASIX.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/10/18/howto-asix-88178-usb-ethernet-adapter-on-ubuntu-10-10-linux/feed/</wfw:commentRss>
			<slash:comments>33</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1500</post-id>	</item>
		<item>
		<title>Plugable Open Source Hardware Samples Program</title>
		<link>https://plugable.com/2010/09/16/plugable-open-source-hardware-samples-program/</link>
					<comments>https://plugable.com/2010/09/16/plugable-open-source-hardware-samples-program/#comments</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Thu, 16 Sep 2010 20:22:03 +0000</pubDate>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[udlfb]]></category>
		<category><![CDATA[amazon:asin=B003UDCPEI]]></category>
		<category><![CDATA[amazon:asin=B003UI62AG]]></category>
		<category><![CDATA[amazon:asin=B003VSTDFG]]></category>
		<category><![CDATA[amazon:asin=B00425S1H8]]></category>
		<category><![CDATA[amazon:asin=B004AIJE9G]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=1422</guid>

					<description><![CDATA[From time to time Plugable has extra test hardware around our labs. Rather than have it gather dust, we&#8217;d like to send it out to the open source community to help foster driver development. We know how much work open source driver development is &#8212; getting hardware should be the easiest part of it. So [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>From time to time Plugable has extra test hardware around our labs. Rather than have it gather dust, we&#8217;d like to send it out to the open source community to help foster driver development.  </p>
<p>We know how much work open source driver development is &#8212; getting hardware should be the easiest part of it.  So today we&#8217;re announcing a new program to better get test devices out to developers who can use them.</p>
<p>If you&#8217;re a developer with a history submitting patches for Linux or other platforms, please <a href="https://plugable.com/projects/plugable-open-source-hardware-samples-program/">submit your request for Plugable sample hardware here</a>.  Because we&#8217;ll have only a trickle of each type over device over time, an important part of this is having some idea of what prior driver development contributions you&#8217;ve made.  We&#8217;ll try to focus on matching hardware to the developers most likely to be able to contribute improvements in that area.</p>
<p>Plugable&#8217;s products cover a fairly wide range of USB and other devices. See <a href="https://plugable.com/shop/">https://plugable.com/shop/</a> for our products that will be available from time to time under this program. </p>
<p>We&#8217;ve long been doing this kind of thing with the commercial vendors. Having worked on Windows and at Microsoft, we try to drop off samples to get them using, testing, and developing against our hardware. We&#8217;d do the same for Apple or others.  This is our attempt to get these same benefits going with the wider open source community.</p>
<p>We hope this will seed some good things over time.  And we welcome any feedback or suggestions on this program anytime.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/09/16/plugable-open-source-hardware-samples-program/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1422</post-id>	</item>
		<item>
		<title>DisplayLink Linux kernel driver (udlfb) updates slated for 2.6.37</title>
		<link>https://plugable.com/2010/08/18/displaylink-linux-kernel-driver-udlfb-updates-slated-for-2-6-37/</link>
					<comments>https://plugable.com/2010/08/18/displaylink-linux-kernel-driver-udlfb-updates-slated-for-2-6-37/#respond</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Thu, 19 Aug 2010 05:28:20 +0000</pubDate>
				<category><![CDATA[Display]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[UD-160-M]]></category>
		<category><![CDATA[udlfb]]></category>
		<category><![CDATA[UGA-125]]></category>
		<category><![CDATA[UGA-2K-A]]></category>
		<category><![CDATA[amazon:asin=B002PONXAI]]></category>
		<category><![CDATA[amazon:asin=B0038P1TP4]]></category>
		<category><![CDATA[amazon:asin=B004AIJE9G]]></category>
		<category><![CDATA[ud-160-m]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=1271</guid>

					<description><![CDATA[The latest set of patches for udlfb, the Linux kernel framebuffer driver for DisplayLink chips, has been submitted and looks on track for kernel 2.6.37. This will catch the kernel up to everything on http://git.plugable.com/ Linux is a big and constantly shifting platform. With our USB graphics products (and generally for DisplayLink based products, since [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>The latest set of patches for udlfb, the Linux kernel framebuffer driver for DisplayLink chips, has been submitted and looks on track for kernel 2.6.37.  This will catch the kernel up to everything on <a href="http://git.plugable.com/">http://git.plugable.com/</a></p>
<p>Linux is a big and constantly shifting platform. With our USB graphics products (and generally for DisplayLink based products, since we try to make them work for all devices), it&#8217;s easy to output a few pixels, but configuring a USB display as an X terminal, or certainly for an extended desktop, is still a process on Linux that requires manual xorg.conf editing and is for very advanced users only.  But we try to contribute what we can at Plugable, and that has meant focusing on making the kernel driver that actually talks to the hardware and everything else builds on, as solid as possible.</p>
<p>The contributed patches start with <a href="http://driverdev.linuxdriverproject.org/pipermail/devel/2010-August/008147.html">this post to the linux driver project list</a>.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8211;<br />
To: devel-request@linuxdriverproject.org<br />
[PATCH 0/11] staging: udlfb: patches from udlfb development branch (Bernie Thompson)</p>
<p>This patch series contains all current fixes and features from<br />
the udlfb development branch.</p>
<p>udlfb is a framebuffer driver for DisplayLink USB 2.0 era chips.</p>
<p>Diffstat of this 11 part patch series:</p>
<p> udlfb.c |  989 +++++++++++++++++++++++++++++++++++++++++&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
 udlfb.h |   41 +-<br />
 2 files changed, 664 insertions(+), 366 deletions(-)</p>
<p>Major changes:</p>
<p>* Added summary documentation for users of udlfb<br />
* Added logic to query DisplayLink chip for max area mode,<br />
so low-end chips on high-end monitors no longer get black screen<br />
* Added support for DPMS. X servers now control monitor<br />
power with existing standard interface<br />
* Added back in support for char interface (e.g. cat file > /dev/fb0)<br />
* Systems without EDID or with failing EDID can now supply fixed<br />
EDID to sysfs interface, also avoiding black screen<br />
* Fixed big-endian (PowerPC) rendering<br />
* Fixed teardown race conditions that could result in shutdown hang<br />
* Added fb_defio and fb console module options (default off)<br />
* Fixed udlfb&#8217;s fb_defio client code so no longer incorrectly shares<br />
state across udlfb device instances &#8211; fixes hangs and errant rendering<br />
* Removed IFDEFs for building against older kernels &#8211; those will<br />
be retained in the udlfb development branches at git.plugable.com</p>
<p>Todo:</p>
<p>There have been no additional reported bugs in the last few months,<br />
although there are several wishlist features.  Udlfb may be ready<br />
to move out of staging at this point.</p>
<p>Patches are against Linus&#8217; latest 2.6 tree.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/08/18/displaylink-linux-kernel-driver-udlfb-updates-slated-for-2-6-37/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1271</post-id>	</item>
		<item>
		<title>Google Nexus One Phone and Plugable’s Universal Dock</title>
		<link>https://plugable.com/2010/06/27/google-nexus-one-phone-and-plugables-universal-dock/</link>
					<comments>https://plugable.com/2010/06/27/google-nexus-one-phone-and-plugables-universal-dock/#comments</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Mon, 28 Jun 2010 04:42:22 +0000</pubDate>
				<category><![CDATA[Laptop Dock]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[UD-160-A]]></category>
		<category><![CDATA[udlfb]]></category>
		<category><![CDATA[Using]]></category>
		<category><![CDATA[]]></category>
		<category><![CDATA[amazon:asin=B002PONXAI]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=1118</guid>

					<description><![CDATA[Sven Killig has posted a few more bits of his cool Google Nexus One USB host mode work, this time running with the Plugable Universal Docking Station. This setup uses the udlfb DisplayLink Linux driver work from here (git.plugable.com) and a bunch of other components Sven has developed or pulled together, to turn the phone [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Sven Killig has posted a few more bits of his cool Google Nexus One USB host mode work, this time running with the Plugable Universal Docking Station</a>.</p>
<div id="attachment_1119" style="width: 310px" class="wp-caption aligncenter"><a href="http://sven.killig.de/android/N1/2.2/usb_host/"><img aria-describedby="caption-attachment-1119" loading="lazy" src="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2010/06/Sven-UD-160-A-Nexus-One-300x165.jpg" alt="Plugable UD-160-A driving big display and more for Nexus One" title="Sven-UD-160-A-Nexus-One" width="300" height="165" class="size-medium wp-image-1119" srcset="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2010/06/Sven-UD-160-A-Nexus-One-300x165.jpg 300w, https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2010/06/Sven-UD-160-A-Nexus-One-1024x566.jpg 1024w, https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2010/06/Sven-UD-160-A-Nexus-One.jpg 1280w" sizes="(max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-1119" class="wp-caption-text">Plugable UD-160-A driving 1920x1080 display and more, all from a humble Nexus One phone</p></div>
<p>This setup uses the udlfb DisplayLink Linux driver work from here (git.plugable.com) and a bunch of other components Sven has developed or pulled together, to turn the phone into a full computer with display, keyboard, audio and more.  His video of this has gone viral (over 85,000 views).  You can <a href="http://sven.killig.de/android/N1/2.2/usb_host/">see the video and full instructions at Sven&#8217;s site</a>.  Very cool.</p>
<p>The photo above is of the <a href="https://plugable.com/products/ud-160-a/">Plugable UD-160-A Universal Docking Station</a>, in use at Sven&#8217;s desk (the dock is laying on its side to better fit in the photo &#8211; Sven has removed the weighted bottom stand).  </p>
<p>The Plugable dock is perfect for this kind of application with the Nexus One phone &#8212; it includes all the USB devices in one place, all with open source drivers. The dock has its own 2.5A AC power (see the USB dual-power Y cable plugged into the front USB A and back USB B ports), along with driving the 1920&#215;1080 monitor (the big DVI cable in the back), and providing ethernet (above the DVI) and audio (in the front &#8211; he doesn&#8217;t have them plugged in in the pic).</p>
<p>So this all is great for geeks, but when will this work out of the box? Several comments on Sven&#8217;s work are messages like &#8220;Google! Integrate this into Android now!&#8221;  </p>
<p>With Google offices near here, and with related USB terminal work on the same Plugable dock being funded as a Google Summer of Code project, it would be great to demo this and get things moving&#8230; Whatcha say, Google!?</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/06/27/google-nexus-one-phone-and-plugables-universal-dock/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1118</post-id>	</item>
		<item>
		<title>The Nexus One Phone-Top</title>
		<link>https://plugable.com/2010/06/09/the-nexus-one-phone-top/</link>
					<comments>https://plugable.com/2010/06/09/the-nexus-one-phone-top/#respond</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Wed, 09 Jun 2010 18:09:13 +0000</pubDate>
				<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[udlfb]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=959</guid>

					<description><![CDATA[Sven Killig has a sense of where computing is headed: Powerful computers are everywhere, including in your pocket. And he has the skills to push things ahead, to show us glimpses of what&#8217;s coming. Last year, he demoed turning your router into a full-fledged computer. This year, it&#8217;s the Google Nexus One phone as a [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Sven Killig has a sense of where computing is headed:  Powerful computers are everywhere, including in your pocket. And he has the skills to push things ahead, to show us glimpses of what&#8217;s coming.</p>
<p>Last year, he demoed turning <a href="http://sven.killig.de/openwrt/slugterm_dl.html">your router into a full-fledged computer</a>.</p>
<p>This year, it&#8217;s the <a href="http://sven.killig.de/android/N1/2.2/usb_host/">Google Nexus One phone as a full computer</a> &#8212; with attached external keyboard, mouse, display, and more.</p>
<p>The Nexus One demo is using the <a href="https://plugable.com/category/project/udlfb/">udlfb</a> Linux kernel module to talk with the DisplayLink device, and it will work with any DisplayLink device, including Plugable&#8217;s.  </p>
<p>Note the version of udlfb in the 2.6.34 staging tree unfortunately didn&#8217;t work for Sven. So he&#8217;s now using the latest udlfb from <a href="http://git.plugable.com/">http://git.plugable.com/</a>, which will likely get merged in for kernel 2.6.36.</p>
<p>Also, he used a dual headed cable to get enough power.  A powered hub or a docking station/terminal like the <a href="https://plugable.com/products/UD-160-A">UD-160-A</a> won&#8217;t need that &#8212; it supplies its own power from AC &#8211; all the hardware needed is in the one package.</p>
<p>It&#8217;s exciting to have all this open source work come together in interesting demos like this.</p>
<p>There was a question recently why udlfb doesn&#8217;t use the same compression technique as the Windows drivers.  Among other reasons, one is that the RL compression used by udlfb scales down to devices like the ones Sven has been working on &#8212; it&#8217;s as light as possible on CPU load, while getting decent compression.  </p>
<p>Stepping back, it&#8217;s clear Apple (and now Microsoft) are making a mistake by limiting the hardware ecosystem around their devices.  Android and the other Linux variants have an opportunity here &#8212; and considering the Apple juggernaut, they definitely need every advantage.</p>
<p>Sven&#8217;s demos show how powerful these scenarios can be.  The hardware is ready. Devices like Plugable&#8217;s are designed with these scenarios in mind. Now we need to get the software refined and included in standard distributions, so normal consumers can take advantage of all the possibilities and benefits here.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/06/09/the-nexus-one-phone-top/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">959</post-id>	</item>
		<item>
		<title>Endurance Technology Contributions</title>
		<link>https://plugable.com/2010/05/28/endurance-technology-contributions/</link>
					<comments>https://plugable.com/2010/05/28/endurance-technology-contributions/#respond</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Fri, 28 May 2010 20:27:58 +0000</pubDate>
				<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[udlfb]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=947</guid>

					<description><![CDATA[Endurance Technology, a software consulting company in the UK who has done previous work on DisplayLink devices, has contributed back a branch of work done on the Fall 2009-era DisplayLink kernel framebuffer (udlfb) and X driver (xf86-video-displaylink). The goal of their project was to get an embedded platform working on Centos 5.3. You can read [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="http://endurancetech.co.uk/">Endurance Technology</a>, a software consulting company in the UK who has done previous work on DisplayLink devices, has contributed back a branch of work done on the Fall 2009-era DisplayLink kernel framebuffer (udlfb) and X driver (xf86-video-displaylink).</p>
<p>The goal of their project was to get an embedded platform working on Centos 5.3.  You can read more in their <a href="http://git.plugable.com/gitphp/index.php?p=udlfb&#038;a=blob&#038;h=db1baa3bc25b6ca3a8eba7134ca24e8600319c59&#038;hb=6494b586c38ab4dc7a7e22c5e38aa10deeea0b1a&#038;f=Endurance-Centos-ReleaseNote.txt">release note</a> for the work.</p>
<p>To make the contributions easier to diff, they&#8217;ve been checked into a git branch from a (best guess) of the code Endurance started from. </p>
<p>The changes are available <a href="http://git.plugable.com/gitphp/index.php?p=udlfb&#038;a=commitdiff&#038;h=6494b586c38ab4dc7a7e22c5e38aa10deeea0b1a">here for the kernel driver</a> and <a href="http://git.plugable.com/gitphp/index.php?p=xf-video-udlfb&#038;a=commitdiff&#038;h=727ef3545a092b04333aaf499c9762f600d2bc2d">here for the X server</a>.</p>
<p>To actually build it, you may need their <a href="https://plugable.com/public/3rdparty/endurance-linux-centos-fbdev-x.tar.bz2">full package</a>.</p>
<p>It&#8217;s unclear what of these changes might get picked up, as things have moved on since.  One of the main features of this code is providing a default EDID blob in udlfb.  The plan for udlfb at this point is to allow the edid sysfs interface of udlfb to be written to, to allow (and give responsibility) to a user-mode entity to supply a default edid, if one isn&#8217;t available from hardware.  </p>
<p>Thanks again to Endurance for being diligent about contributing changes back.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/05/28/endurance-technology-contributions/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">947</post-id>	</item>
		<item>
		<title>Google Summer of Code Work Kicks Off</title>
		<link>https://plugable.com/2010/05/24/google-summer-of-code-work-kicks-off/</link>
					<comments>https://plugable.com/2010/05/24/google-summer-of-code-work-kicks-off/#respond</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Mon, 24 May 2010 23:28:43 +0000</pubDate>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[udlfb]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=934</guid>

					<description><![CDATA[Today is the kickoff of coding work for Google SoC 2010 projects. We&#8217;re very excited about the Google funded project to refine USB multiseat on Linux, with the winning proposal from Lucas Nascimento Ferreira at the Federal University of Parana in Brazil. In addition to providing mentoring, Plugable is also providing donated hardware for this [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Today is the kickoff of coding work for Google SoC 2010 projects.</p>
<p>We&#8217;re very excited about the Google funded project to refine USB multiseat on Linux, with the winning proposal from Lucas Nascimento Ferreira at the Federal University of Parana in Brazil.</p>
<p>In addition to providing mentoring, Plugable is also providing donated hardware for this project. Two <a href="/products/ud-160-a/" target="_blank">Plugable Universal Docking stations</a> with recent enhancements for use as a terminal, were just picked up by Lucas in Brazil today.  By next month, we expect to have updated versions of the <a href="https://plugable.com/products/dc-125" target="_blank">DC-125</a> for terminal use to send down.</p>
<p>For those interested in learning more and potentially following Lucas&#8217; work:</p>
<ul>
<li><a href="http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/timeline" target="_blank">Google&#8217;s SoC 2010 Timeline</a></li>
<li><a href="http://www.inf.ufpr.br/lnf07/gsoc.txt" target="_blank">Lucas&#8217; winning USB Multiseat Proposal</a></li>
</ul>
<p>And we&#8217;ll post periodic status updates here.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/05/24/google-summer-of-code-work-kicks-off/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">934</post-id>	</item>
		<item>
		<title>Windows, Mac, Linux, and Information Overload</title>
		<link>https://plugable.com/2010/05/24/windows-mac-linux-and-information-overload/</link>
					<comments>https://plugable.com/2010/05/24/windows-mac-linux-and-information-overload/#respond</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Mon, 24 May 2010 21:41:27 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Windows]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=927</guid>

					<description><![CDATA[Our philosophy is to support all three of Windows, Mac, and Linux for all of Plugable&#8217;s hardware products, to the greatest degree possible. And when there are limits (as there often are) we try to tell you about them up front. We do this because we know you use a mix of machines, or may [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Our philosophy is to support all three of Windows, Mac, and Linux for all of Plugable&#8217;s hardware products, to the greatest degree possible. And when there are limits (as there often are) we try to tell you about them up front.</p>
<p>We do this because we know you use a mix of machines, or may be thinking about switching one way or another.  And when you invest in a collection of USB devices, you want them to be useful beyond your current computer.  That&#8217;s what we expect, too.</p>
<p>All this activity can get a little noisy, though.  A little too much information.</p>
<p>That&#8217;ll be especially true for some exciting but technically involved work that&#8217;s happening over the next few months on Linux with the Google Summer of Code project for USB multiseat, which makes use of some of our Plugable hardware.</p>
<p>So if you&#8217;re interested in just one platform or another, here is a way to get just the news that you care about, and get rid of the rest of the noise:</p>
<ul>
<li><a href="http://feeds.feedburner.com/PlugableWindows" rel="alternate" type="application/rss+xml"><img src="https://www.feedburner.com/fb/images/pub/feed-icon16x16.png" alt="" style="vertical-align:middle;border:0"/></a>&nbsp;<a href="http://feeds.feedburner.com/PlugableWindows" rel="alternate" type="application/rss+xml">Subscribe &#8211; Windows News From Plugable</a></li>
<li><a href="http://feeds.feedburner.com/PlugableMac" rel="alternate" type="application/rss+xml"><img src="https://www.feedburner.com/fb/images/pub/feed-icon16x16.png" alt="" style="vertical-align:middle;border:0"/></a>&nbsp;<a href="http://feeds.feedburner.com/PlugableMac" rel="alternate" type="application/rss+xml">Subscribe &#8211; Mac News From Plugable</a></li>
<li><a href="http://feeds.feedburner.com/PlugableLinux" rel="alternate" type="application/rss+xml"><img src="https://www.feedburner.com/fb/images/pub/feed-icon16x16.png" alt="" style="vertical-align:middle;border:0"/></a>&nbsp;<a href="http://feeds.feedburner.com/PlugableLinux" rel="alternate" type="application/rss+xml">Subscribe &#8211; Linux News From Plugable</a></li>
</ul>
<p>And for those wanting an even more customized view &#8212; just append /feed to the tail end of any category view on the site, to get an even more specific feed, if you&#8217;re interested.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/05/24/windows-mac-linux-and-information-overload/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">927</post-id>	</item>
		<item>
		<title>Linux Support For Higher-Res Monitors on Lower-Res DisplayLink Devices</title>
		<link>https://plugable.com/2010/05/21/linux-support-for-higher-res-monitors-on-lower-res-displaylink-devices/</link>
					<comments>https://plugable.com/2010/05/21/linux-support-for-higher-res-monitors-on-lower-res-displaylink-devices/#comments</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Fri, 21 May 2010 16:40:19 +0000</pubDate>
				<category><![CDATA[Display]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[udlfb]]></category>
		<category><![CDATA[UGA-125]]></category>
		<category><![CDATA[UGA-2K-A]]></category>
		<category><![CDATA[uga-2k-a]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=914</guid>

					<description><![CDATA[On Windows and Mac, if you plug in a monitor with a higher resolution than your adapter supports, the driver will automatically fall back to the best common mode between the two. Linux hasn&#8217;t had that support &#8212; it would try to set the highest mode the monitor is capable of, often resulting in a [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>On Windows and Mac, if you plug in a monitor with a higher resolution than your adapter supports, the driver will automatically fall back to the best common mode between the two.</p>
<p>Linux hasn&#8217;t had that support &#8212; it would try to set the highest mode the monitor is capable of, often resulting in a black screen.  Especially common for the DL-125 chip, with its mode limits of 1440&#215;900/1280&#215;1024.</p>
<p>That&#8217;s a shame because the DL-125 chip is a smart choice in many cases &#8211; by limiting itself to those lower modes, it stays more consistently within the limits of the USB 2.0 bus, resulting in more consistent performance.</p>
<p>So coinciding with the launch of Plugable&#8217;s DisplayLink DL-125 based products (<a href="/products/uga-125">UGA-125</a>, changes have been implemented to bring Linux roughly up to the level of Windows and Mac in this area for DisplayLink devices.  This also helps devices like the <a href="/products/ud-160-a">UD-160-A</a> when running on monitors greater than its limit of 1920&#215;1080.</p>
<p>The kernel framebuffer driver udlfb <a href="http://git.plugable.com/gitphp/index.php?p=udlfb&#038;a=commitdiff&#038;h=1bbba9e8123453ce1677fc247abc356c7040892c">has been enhanced to read the resolution limit from the firmware descriptors of the device, and adhere to it</a>.</p>
<p>On the X server side, we needed a driver which would limit itself to the resulting reduced mode list.  Unfortunately, the existing displaylink X server reads EDID directly, and assumes the adapter can do whatever the monitor can do. </p>
<p>We&#8217;ve been wanting to get rid of the need for a displaylink-specific X server, and the standard xf86-video-fbdev driver runs with the best existing mode, rather than trying to set a higher one in EDID.  So this was a good trigger for converting over.</p>
<p>So <a href="http://git.plugable.com/gitphp/index.php?p=xf86-video-fbdev&#038;a=commitdiff&#038;h=388fd2b6a20eb396ccface5b2cf2ec907ec96ba4">xf86-video-fbdev has been enhanced with X Damage protocol support</a>, ported from Roberto&#8217;s displaylink driver.  This is still a little in-flux from an interface perspective, but from a functional perspective it&#8217;s done and fully performant.  </p>
<p>So it&#8217;s now possible to run with a modified generic fbdev driver, which talks to udlfb, with full performance and without needing defio (although there&#8217;s also some good news in the defio space, which will be posted about later).</p>
<p>You can grab the latest udlfb kernel module with a &#8220;git clone http://git.plugable.com/webdav/udlfb&#8221;. Compile with &#8220;make &#038;&#038; sudo make install &#038;&#038; sudo depmod -a&#8221;</p>
<p>And you can grab the latest modified xf86-video-fbdev with a &#8220;git clone http://git.plugable.com/webdav/xf86-video-fbdev&#8221;.  Compile with &#8220;./autogen.sh &#038;&#038; make &#038;&#038; sudo make install&#8221;</p>
<p>You&#8217;ll need a very recent xorg-macros version (1.4), which in package &#8220;sudo apt-get install xutils-dev&#8221;</p>
<p>To use the new X server, you must turn on the new &#8220;ReportDamage&#8221; option to fbdev. Modify your <a href="https://plugable.com/2009/11/16/setting-up-usb-multiseat-with-displaylink-on-linux-gdm-up-to-2-20/">existing xorg conf </a>like this:</p>
<pre lang="bash">
Section "Device"
  Identifier "dl"
  Driver "fbdev"
  Option "ReportDamage" "true"
  Option "fbdev" "/dev/fb0"
EndSection
</pre>
<p>And you should be all set to go.   This new X server should work with the existing udlfb in the staging tree of kernel 2.6.31+ for now, as it&#8217;s re-using the same original ioctl.  But may require modeset changes that are only in 2.6.34+.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/05/21/linux-support-for-higher-res-monitors-on-lower-res-displaylink-devices/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">914</post-id>	</item>
		<item>
		<title>Google Summer of Code – USB Multiseat</title>
		<link>https://plugable.com/2010/04/06/google-summer-of-code-usb-multiseat/</link>
					<comments>https://plugable.com/2010/04/06/google-summer-of-code-usb-multiseat/#respond</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Wed, 07 Apr 2010 00:17:11 +0000</pubDate>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[UD-160-M]]></category>
		<category><![CDATA[udlfb]]></category>
		<category><![CDATA[amazon:asin=B002PONXAI]]></category>
		<category><![CDATA[ud-160-m]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=788</guid>

					<description><![CDATA[Plugable is offering mentoring and donated hardware for USB graphics projects that are funded as part of Google Summer of Code 2010. Plugable is working through X.Org as a sponsoring organization. The main focus is USB multiseat, and the details are on the xorg wiki for SoC 2010 With all the pieces that are just [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Plugable is offering mentoring and donated hardware for USB graphics projects that are funded as part of Google Summer of Code 2010.  Plugable is working through X.Org as a sponsoring organization.</p>
<p>The main focus is USB multiseat, and the details are on the <a href="http://www.x.org/wiki/SummerOfCodeIdeas">xorg wiki for SoC 2010</a></p>
<p>With all the pieces that are just coming together now, there is a potential here to do a project with huge impact, without a massive amount of engineering.  There is already a very solid proposal coming from a student in Brazil who has previously been involved with the MDM multiseat project.  </p>
<p>Google&#8217;s deadline for applications <a href="http://socghop.appspot.com/document/show/program/google/gsoc2009/timeline">is now just a few days away: April 9th</a>.</p>
<p>If there&#8217;s interest from other parties, we&#8217;ll get everyone talking &#8211; or there are other related proposals that we might be able to get in at the last minute. Foremost among those is conversion of the DisplayLink USB driver udlfb and matching X server from a fbdev driver to the KMS model. </p>
<p>Here&#8217;s the basics of the USB multiseat opportunity:</p>
<blockquote><p>USB Multiseat Refinement</p>
<p>Linux Multiseat setups have potential to significantly reduce the cost of computing, but can be hard to configure. Some progress has been made on USB multiseat, where all components of the &#8220;terminal&#8217; (display, keyboard, mouse, and more) are on USB, so configuration can be fully plug and play &#8211; you can just assume that all devices on the same USB hub constitute a terminal.</p>
<p>Some early prototypes of this are working (see https://plugable.com/2009/11/16/setting-up-usb-multiseat-with-displaylink-on-linux-gdm-up-to-2-20/). The underlying kernel drivers and X servers are largely in place.</p>
<p>But recent changes to the X Server, ConsoleKit, and other components open the possibility for a cleaner implementation.</p>
<p>This SoC project would constitute the refinement/creation of configuration scripts to enable a standard Linux or *nix computer to automatically launch additional seats when a USB terminal is plugged in</p>
<p>* udev rules to detect hubs/devices which should be collectively treated as terminals<br />
* udev attributes to label the set of devices with a common seat id<br />
* udev triggers for on-demand generation of the appropriate Xorg config files, to allow seats to coexist with the primary display/devices.<br />
* ConsoleKit scripts to launch independent GDM/X sessions for each USB terminal seat<br />
* InputClass rules to cause the primary X session to ignore multiseat-assigned devices, and the appropriate seat to use them<br />
* udev rules and X init scripts to grant access to audio, storage, and other devices to the person logged into the matching seat </p>
<p>The one-sentence goal of this project: To make USB multiseat fully plug and play for the end-user, and ready for any distro to safely and cleanly drop in at any time.</p></blockquote>
<p>Know any aspiring software engineering students that might be interested?  Check <a href="http://code.google.com/soc/">SoC info from Google</a> and the <a href="http://wiki.x.org/wiki/GSoCApplication">SoC guidelines from xorg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/04/06/google-summer-of-code-usb-multiseat/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">788</post-id>	</item>
		<item>
		<title>xorg-server 1.8.0 released</title>
		<link>https://plugable.com/2010/04/02/xorg-server-1-8-0-released/</link>
					<comments>https://plugable.com/2010/04/02/xorg-server-1-8-0-released/#respond</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Fri, 02 Apr 2010 18:14:11 +0000</pubDate>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[udlfb]]></category>
		<category><![CDATA[UGA-2K-A]]></category>
		<category><![CDATA[uga-2k-a]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=770</guid>

					<description><![CDATA[xorg-server 1.8.0 has been released. There will still be some bugs and issues to resolve &#8212; but this release has most of the features, specifically related to input handling and udev-based dynamic configuration, of a more solid USB multiseat solution. In short: udev rules, which already can detect a grouping of USB devices that constitute [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="http://lists.freedesktop.org/archives/xorg/2010-April/049784.html">xorg-server 1.8.0 has been released</a>.  </p>
<p>There will still be some bugs and issues to resolve &#8212; but this release has most of the features, specifically related to input handling and udev-based dynamic configuration, of a more solid <a href="https://plugable.com/2009/11/16/setting-up-usb-multiseat-with-displaylink-on-linux-gdm-up-to-2-20/">USB multiseat</a> solution.</p>
<p>In short:</p>
<ul>
<li> udev rules, which already can detect a grouping of USB devices that constitute a terminal, can now tell X to ignore or use particular devices more easily through udev attributes and more dynamic/independent xorg.conf.d scripts.</li>
<li> udev is now the default configuration mechanism (the torch has been passed from the less flexible hal)</li>
</ul>
<p>So the challenges to explore are now more in the area of ConsoleKit integration and whether we can use these new capabilities support not just pure-USB multiseat setups, but also a mix of seats with PCIe attached graphics, and with fully USB seats.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/04/02/xorg-server-1-8-0-released/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">770</post-id>	</item>
		<item>
		<title>X.Org Server 1.8 Release Candidate 2</title>
		<link>https://plugable.com/2010/03/22/x-org-server-1-8-release-candidate-2/</link>
					<comments>https://plugable.com/2010/03/22/x-org-server-1-8-release-candidate-2/#respond</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Mon, 22 Mar 2010 15:21:37 +0000</pubDate>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[UGA-2K-A]]></category>
		<category><![CDATA[uga-2k-a]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=735</guid>

					<description><![CDATA[X.Org has announced RC2 of the 1.8 server release for Linux and other *nix operating systems. 1.8 contains several new features and configuration capabilities that will form the foundation of future USB multiseat work. In effect, USB multiseat has been waiting for this work to stabilize and get into the distros (of which Fedora 13 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>X.Org has announced RC2 of the 1.8 server release for Linux and other *nix operating systems.  1.8 contains several new features and configuration capabilities that will form the foundation of future USB multiseat work.  In effect, USB multiseat has been waiting for this work to stabilize and get into the distros (of which Fedora 13 will be one of the first).</p>
<p>You can read more about the <a href="http://who-t.blogspot.com/2010/01/new-configuration-world-order.html">new 1.8 configuration features</a> which multiseat will use at Peter Hutterer&#8217;s blog.</p>
<p>And read more about the RC itself at <a href="http://www.phoronix.com/scan.php?page=news_item&#038;px=ODA4OQ">Phoronix</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/03/22/x-org-server-1-8-release-candidate-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">735</post-id>	</item>
		<item>
		<title>Picking the right filesystem across Win, Mac, and Linux</title>
		<link>https://plugable.com/2010/03/16/picking-the-right-filesystem-across-win-mac-and-linux/</link>
					<comments>https://plugable.com/2010/03/16/picking-the-right-filesystem-across-win-mac-and-linux/#respond</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Wed, 17 Mar 2010 01:28:36 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[SATADOCK-USB2-C1]]></category>
		<category><![CDATA[Using]]></category>
		<category><![CDATA[Windows]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=714</guid>

					<description><![CDATA[Tuxera, a company that provides both open source and commercial filesystem drivers, announced the millionth download of NTFS for Mac today &#8212; that&#8217;s a large number, with many or most downloads being the free NTFS-3G solution. We use NTFS-3G on Mac OS 10.4 here, in combination with the Plugable USB 2.0 SATA All-in-one Storage Dock [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.tuxera.com/">Tuxera</a>, a company that provides both open source and commercial filesystem drivers, announced the millionth download of NTFS for Mac today &#8212; that&#8217;s a large number, with many or most downloads being the free <a href="http://macntfs-3g.blogspot.com/">NTFS-3G solution</a>.  </p>
<p>We use NTFS-3G on Mac OS 10.4 here, in combination with the Plugable USB 2.0 SATA All-in-one Storage Dock and large TB+ SATA drives. Along with built-in NTFS support on Windows XP and up, and all recent Linux distros, this lets us easily swap a single USB cable between Windows, Mac, and Linux and have all three be able to read and write the drive(s).  </p>
<p>Overall, this is a good solution for developers who have to span multiple platforms, for people who use boot camp to switch between Mac and Windows, or for increasingly common multi-platform offices that are using external storage docks for backup.</p>
<p>And it&#8217;s nice having a both an open source and a (better performing) commercially supported option.</p>
<p>It used to be that the venerable FAT32 filesystem was best way to format a drive to make sure you could easily read and write it from Windows, Mac, and Linux.  But FAT32 has some limits that are especially problematic for today&#8217;s large drives 1 TB and up:</p>
<ul>
<li>Hard limit of 4GB on any individual file (think home movies of 30 mins or more)</li>
<li>FAT32 needs large cluster size for large disks &#8211; which means wasted disk space in the case of many small files</li>
<li>Partition size limits that can get as small as 32GB, and certainly hit at 2TB</li>
</ul>
<p>There are various ways to read and write filesystems native to one OS on another.  But there are also lots of pitfalls.  All things considered, NTFS is the best compromise today.</p>
<p>For more background:</p>
<ul>
<li><a href="http://support.microsoft.com/kb/314463">Windows FAT32 filesystem limits</a></li>
<li><a href="http://technet.microsoft.com/en-us/library/cc778410%28WS.10%29.aspx">Windows NTFS filesystem limits</a></li>
<li><a href="http://support.apple.com/kb/HT2422">Mac HFS+ filesystem limits</a></li>
<li><a href="http://en.wikipedia.org/wiki/Ext4">Linux Ext filesystem limits</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/03/16/picking-the-right-filesystem-across-win-mac-and-linux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">714</post-id>	</item>
		<item>
		<title>Update on DisplayLink Linux support (udlfb in 2.6.34)</title>
		<link>https://plugable.com/2010/03/14/update-on-displaylink-udlfb-in-2-6-34/</link>
					<comments>https://plugable.com/2010/03/14/update-on-displaylink-udlfb-in-2-6-34/#comments</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Sun, 14 Mar 2010 23:03:50 +0000</pubDate>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[udlfb]]></category>
		<category><![CDATA[UGA-2K-A]]></category>
		<category><![CDATA[amazon:asin=B002PONXAI]]></category>
		<category><![CDATA[amazon:asin=B0038P1TP4]]></category>
		<category><![CDATA[amazon:asin=B004AIJE9G]]></category>
		<category><![CDATA[uga-165]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=689</guid>

					<description><![CDATA[[Update Jan 2011: Udlfb was promoted from the staging tree to the main kernel (in drivers/video/udlfb.c) in 2.6.38. See documentation in the kernel tree at Documentation/fb/udlfb.txt] A 10-part udlfb patch series with several enhancements were recently accepted into the Linux kernel staging tree of 2.6.34. Greg&#8217;s maintainer patch series passing them on starts here. This [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>[Update Jan 2011: Udlfb was promoted from the staging tree to the main kernel (in drivers/video/udlfb.c) in 2.6.38.  See documentation in the kernel tree at <a target="_blank" href="http://git.kernel.org/?p=linux/kernel/git/next/linux-next-history.git;a=blob;f=Documentation/fb/udlfb.txt;hb=HEAD">Documentation/fb/udlfb.txt</a>]</strong></p>
<p>A <a target="_blank" href="http://marc.info/?l=linux-fbdev&#038;m=126624512024319&#038;w=2">10-part udlfb patch series</a> with several enhancements were recently accepted into the Linux kernel staging tree of 2.6.34.  Greg&#8217;s maintainer patch series passing them on <a target="_blank" href="http://driverdev.linuxdriverproject.org/pipermail/devel/2010-March/004293.html">starts here</a>. </p>
<p>This catches the official kernel staging tree with everything on <a target="_blank" href="http://git.plugable.com">git.plugable.com</a> up to Feb, 2010.  </p>
<p><strong>Background</strong></p>
<p>udlfb provides Linux framebuffer (fbdev) support plus a private &#8220;damage&#8221; notification ioctl used by the Roberto DeIoris&#8217; &#8220;displaylink&#8221; X server. Udlfb automatically detects and supports all current DisplayLink USB graphics chips &#8211; 120,160,115,125,165,195.  It supports 16bpp, with modes up to the maximum supported by the DisplayLink chips. Plugging any DisplayLink device into a Linux PC with this support should result in a &#8220;green screen&#8221; which means udlfb has loaded, set the monitor default mode, and drawn to the device successfully.</p>
<p>What udlfb does *not* do on its own is make configuring X easy &#8211; X sits on udlfb, but getting X running still involves editing configuration files like xorg.conf in different ways depending on what you&#8217;re trying to do, what distro version you have, and what primary GPU you have.</p>
<p><strong>Features in Linux kernel 2.6.34 so far</strong></p>
<ul>
<li>Improved performance (about 20% average improvement over a variety of “benchmarks” like x11perf, gtkperf, glxgears).  Video playback, flash games, etc. are all improved</li>
<li>Asynchronous urb dispatch and no mutexes held for extended periods during render</li>
<li>Slightly lower CPU consumption, fewer non-localized memory accesses, slightly higher average compression</li>
<li>Better handling of switching from X to fbcon VTs and back</li>
<li>Driver unloads more cleanly from either bottom-up (USB removal) or top-down (shutdown). Problem reports welcome.</li>
<li>More standard EDID parsing and mode handling, using fbdev&#8217;s built in mode libraries (but creates a new dependency on them being enabled in kernel)
<li>Performance metrics reported through sysfs (read /sys/class/graphics/fbX/*metrics* &#8211; but will move to debugfs)</li>
<li>EDID reported through sysfs (read /sys/class/graphics/graphics/fbX/edid)</li>
<li>Can compile as module with or without defio or sys_ dependencies</li>
<li>Lots of cleanup – tested on 64-bit, closer to endian clean, checkpatch.pl clean</li>
<li>Support for standard fbdev clients (via defio) &#8211; unfortunately buggy yet (see todos)</li>
</ul>
<p>Depending on timing, some additional todo items might make it, we&#8217;ll see.</p>
<p><strong>Versioning</strong></p>
<p>At one point, we wanted udlfb to have its own project cycles and release versioning to help clarify things here while udlfb evolved in the early days.  Got pushback on doing this from the kernel maintainers. So versioning of udlfb is purely by kernel version &#8211; &#8220;this bug is in udlfb in kernel 2.6.34rc1&#8221; or whatever.  There&#8217;ll also be a newer changes that haven&#8217;t been submitted to the kernel (e.g. at <a href="http://git.plugable.com/">http://git.plugable.com/</a>).  And it&#8217;s probably best to just version that per commit/checkin. &#8220;This bug shows up in commit 234b4e22&#8230;&#8221;.  This is nice in a way &#8211; just check the stuff in somewhere let the world know what you&#8217;re doing &#8211; the only &#8220;release process&#8221; you need to coordinate with is getting the patches into the kernel itself.  Or feel free also to send patches here, we&#8217;ll try to help them through the process.</p>
<p><strong>Todo</strong></p>
<ul>
<li>Add code to read pixel resolution limits from the device&#8217;s USB descriptors, and adhere to them.  Avoids blank screen when monitors caps exceeds that of the adapter</li>
<li>Add pseudo-32bpp mode to help the case of using Xinerama to extend desktop across PCIe/USB adapters. Not planning true 24/32-bpp mode yet because of complexity and perf tradeoffs</li>
<li>Disable defio by default, unfortunately, because of several bugs without obvious solutions
<ul>
<li>rendering problems with pages (lines) that no longer get updated &#8211; writes to those are no longer triggering deferred processing</li>
<li>When running 2 USB adapters, dirty pages for one instance seem to affect the other, and vice versa (udlfb has no common state, so appears to be in defio or mmu handling)</li>
<li>cases where we hit a kernel oops in the deferred io handler when it tries to touch the pages it&#8217;s been asked to handle.</li>
</ul>
<li>Move perf metrics from sysfs to debugfs and add ABI doc for what remains, <a href="http://marc.info/?l=linux-fbdev&#038;m=126653985829880&#038;w=2">per GregKH</a></li>
<li>Fix <a href="http://marc.info/?l=linux-fbdev&#038;m=126650956714168&#038;w=2">two ignored return values</a> that Greg&#8217;s build environment caught</li>
<li>Get a safe method from DisplayLink to detect future chips that might not be compatible with current ones, and bail out of probe</li>
</ul>
<p>There&#8217;s lot of other stuff that could be done &#8211; and any patches are very welcome.  One big open question is whether fbdev has legs, or whether this effort should be converted over to KMS/DRM/DRI.  </p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/03/14/update-on-displaylink-udlfb-in-2-6-34/feed/</wfw:commentRss>
			<slash:comments>26</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">689</post-id>	</item>
		<item>
		<title>Upgraded Plugable Universal Docking Station</title>
		<link>https://plugable.com/2010/03/06/upgraded-plugable-universal-docking-station/</link>
					<comments>https://plugable.com/2010/03/06/upgraded-plugable-universal-docking-station/#respond</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Sat, 06 Mar 2010 19:29:47 +0000</pubDate>
				<category><![CDATA[Installing]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=604</guid>

					<description><![CDATA[The Plugable Universal Docking Station is getting some minor but nice upgrades to the latest chips for each function. All new units shipped from March 1, 2010 forward have these new features: Upgraded the DisplayLink DL-160 to the newer DL-165 Previous maximum resolution was 1680&#215;1050, now 1920&#215;1080 Moved from two 4-port NEC USB hubs internally [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>The Plugable Universal Docking Station is getting some minor but nice upgrades to the latest chips for each function. All new units shipped from March 1, 2010 forward have these new features:</p>
<ul>
<li>Upgraded the DisplayLink DL-160 to the newer DL-165
<ul>
<li><strong>Previous maximum resolution was 1680&#215;1050, now 1920&#215;1080</strong></li>
</ul>
</li>
<li>Moved from two 4-port NEC USB hubs internally to a single FE 2.1 7 port USB hub
<ul>
<li><strong>When using as a terminal, previously could daisy-chain 2 docks, now up to 4. All devices attached to the dock show on the same hub</strong></li>
</ul>
</li>
<li>Upgraded ASIX AX88772 ethernet chip to newer AX88772A
<ul>
<li><strong>Auto-MDX support (automatically detects straight or cross-over cabling)</strong></li>
</ul>
</li>
</ul>
<p>We&#8217;ve also shrunk the paper package size for less waste, and a have smaller connector for the (otherwise same) AC adapter.  </p>
<p>The size and look of the docking station itself hasn&#8217;t changed, and all the same adapters, cables, and other hardware are included.</p>
<p>To the laptop docking station user on Windows or Mac, the changes won&#8217;t be immediately obvious, as the same drivers support both versions of hardware.</p>
<p>On Linux, both old and new chips have the same in-kernel support.  In the terminal case, the USB configuration is now simpler (all devices are off the same USB hub), and that means a change in the udev rules for devices plugged into usb ports (keyboard and mouse are one hub less deep).  Look for a future post on that.</p>
<p>So, with the new version, here&#8217;s the Windows Update experience you&#8217;ll see &#8212; without using any driver disks first, just plugging into a fresh Windows 7 machine with its own network connection up, letting it find and download drivers automatically.</p>
<p><img loading="lazy" src="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2010/03/installing-pnp-finished.png" alt="" title="installing-pnp-finished" width="536" height="275" class="alignnone size-full wp-image-605" srcset="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2010/03/installing-pnp-finished.png 536w, https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2010/03/installing-pnp-finished-300x153.png 300w" sizes="(max-width: 536px) 100vw, 536px" /><br />
<em>Win7 first connect experience. Mouse and composite keyboard also attached</em></p>
<p>If you need to distinguish the versions from the outside (e.g. so you can make sure to give a newer one to someone who wants 1920&#215;1080 resolution), the model number on the bottom of the older units all start with 0920J1.</p>
<p>Enjoy the upgrades on the new UD-160-A docking stations, and as always make use of our public problem reporting and support at <a href="http://getsatisfaction.com/plugable" target="_blank">http://getsatisfaction.com/plugable</a> any time.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/03/06/upgraded-plugable-universal-docking-station/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">604</post-id>	</item>
		<item>
		<title>Emacs macro to ease the pain of checkpatchitis</title>
		<link>https://plugable.com/2010/02/19/emacs-macro-to-ease-the-pain-of-checkpatchitis/</link>
					<comments>https://plugable.com/2010/02/19/emacs-macro-to-ease-the-pain-of-checkpatchitis/#respond</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Sat, 20 Feb 2010 05:40:18 +0000</pubDate>
				<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[udlfb]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=437</guid>

					<description><![CDATA[In order to submit patches to the Linux kernel &#8212; as I&#8217;ve been doing lately to help improve Linux&#8217;s DisplayLink driver udlfb &#8212; the changed code has to pass a script called checkpatch.pl, which flags violations of the Linux kernel style guidelines. Style wars (e.g. &#8220;tabs vs. spaces&#8221;) are a never-ending source of tension on [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>In order to submit patches to the Linux kernel &#8212; as I&#8217;ve been doing lately to help improve Linux&#8217;s DisplayLink driver udlfb &#8212; the changed code has to pass a script called checkpatch.pl, which flags violations of the Linux kernel style guidelines.</p>
<p>Style wars (e.g. &#8220;tabs vs. spaces&#8221;) are a never-ending source of tension on projects, so I actually appreciate automation like checkpatch.pl to just lay down the law, and be done with it.</p>
<p>But .. having to sift through endless warnings when you run checkpatch.pl late in the development process is frustrating.  And there&#8217;s no way most occasional kernel patchers will remember all the rules (especially if you strongly disagree with some of them &#8212; which I do). It&#8217;s much better if your editor can just warn you when you step off the golden path of enlightenment.  I use emacs, so I looked around for solutions, but they were only incomplete, or not real-time (e.g. checkpatch.pl has an &#8211;emacs option to run in the compile window of emacs).</p>
<p>So here&#8217;s something a little less incomplete that I&#8217;ve added to my .emacs file to catch the majority of checkpatch.pl errors in real-time (by highlighting the offending code in red). Works only on recent emacs versions.  Hopefully it&#8217;ll be useful to others pounding away on their patches.</p>
<pre lang="lisp">
;; *** BEGIN highlight checkpatch.pl warnings and errors ***
(add-hook 'c-mode-common-hook
    (lambda ()
      ;; this sets defaults to match many checkpatch.pl guidelines
      (c-set-style "linux")))
;; but doesn't warn us about violations these regexp catch common ones
(custom-set-faces
    '(my-warning-face ((((class color)) (:background "red"))) t))
(add-hook 'font-lock-mode-hook
    (function
        (lambda ()
            (setq font-lock-keywords
                (append font-lock-keywords
		    '(("^.\\{81\\}" (0 'my-warning-face t)))
                    '(("\\/\\/.*" (0 'my-warning-face t)))
                    '((";[_A-Za-z0-9]+" (0 'my-warning-face t)))
                    '((",[_A-Za-z0-9]+" (0 'my-warning-face t)))
                    '(("return[[:blank:]]*(.+);" (0 'my-warning-face t)))
                    '(("([_A-Za-z0-9]+[\\*]+)" (0 'my-warning-face t)))
                    '(("[[:blank:]]+\\)"(0 'my-warning-face t)))
		    '(("^[[:blank:]]+{[[:blank:]]*$" (0 'my-warning-face t)))
		    '(("[_A-Za-z0-9]+\\*[[:blank:]]" (0 'my-warning-face t)))
		)))))
;; exercise to reader - move regexps into c hook
;; *** END highlight checkpatch.pl warnings and errors ***
</pre>
<p>Any enhancements or corrections are welcome.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/02/19/emacs-macro-to-ease-the-pain-of-checkpatchitis/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">437</post-id>	</item>
		<item>
		<title>Preparing more udlfb patches for linux-next</title>
		<link>https://plugable.com/2010/02/12/preparing-more-udlfb-patches-for-linux-next/</link>
					<comments>https://plugable.com/2010/02/12/preparing-more-udlfb-patches-for-linux-next/#respond</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Fri, 12 Feb 2010 22:46:15 +0000</pubDate>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[udlfb]]></category>
		<category><![CDATA[UGA-2K-A]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=392</guid>

					<description><![CDATA[There are limits on how much a small device company can and should do in contributing to open source driver support. But with a historical connection to DisplayLink and more products coming with the technology included, contributing what we can to the generic DisplayLink driver on Linux makes some sense. Also note this driver is [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>There are limits on how much a small device company can and should do in contributing to open source driver support.  But with a historical connection to DisplayLink and more products coming with the technology included, contributing what we can to the generic DisplayLink driver on Linux makes some sense. </p>
<p>Also note this driver is just a foundation on which other stuff (like X) sits, so it doesn&#8217;t mean Linux is easy for real end users yet.  But it&#8217;s getting closer.</p>
<p>Here&#8217;s the announce that went to the list today:</p>
<p><em>The next patch series for udlfb is &#8220;nearly ready&#8221; for submission, hopefully will be coming in the next few days.</p>
<p>Testing and any problem reports would be helpful.  The code that will be submitted is at <a href="http://git.plugable.com/gitphp/index.php?p=udlfb&#038;a=summary">http://git.plugable.com/gitphp/index.php?p=udlfb&#038;a=summary</a></p>
<p>There are many dozens of checkins in git as inter-related problems have been explored and the code incrementally improved.  Before submitting, I&#8217;ll be reconstituting them into a smaller number of more analyzable email patches: make everything checkpatch.pl clean, reorganize things to match final layout, then per-feature patches. We&#8217;ll see how that goes.</p>
<p>Major features:</p>
<p>* Support for standard fbdev clients (via defio)<br />
* Improved performance (about 20% average improvement over a variety of &#8220;benchmarks&#8221; like x11perf, gtkperf, glxgears)<br />
* Asynchronous urb dispatch and no mutexes held for extended periods during render<br />
* Slightly lower CPU consumption, less touching memory, slightly higher average compression<br />
* Better handling of switching from X to fbcon VTs and back<br />
* Driver should unload cleanly from either bottom-up (USB removal) or top-down (shutdown).  Problem reports welcome.<br />
* Performance metrics reported through sysfs (read /sys/class/graphics/fbX/*metrics*)<br />
* EDID reported through sysfs (read /sys/class/graphics/graphics/fbX/edid)<br />
* Can compile as module with or without defio or sys_ dependencies<br />
* Lots of cleanup &#8211; tested on 64-bit, closer to endian clean, checkpatch.pl clean</p>
<p>What it does not have:</p>
<p>* The defio rendering problems (e.g. with xf86-video-fbdev X server) are still unsolved<br />
* Still 16bpp only.  Pseudo-truecolor 32->16 is on the wishlist.<br />
* No DL 1&#215;5 SKU detection yet (you&#8217;ll get a blank screen if your monitor&#8217;s res exceeds the adapter)</em></p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/02/12/preparing-more-udlfb-patches-for-linux-next/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">392</post-id>	</item>
		<item>
		<title>Linux kernel framebuffer rendering APIs</title>
		<link>https://plugable.com/2010/01/30/linux-kernel-framebuffer-rendering-apis/</link>
					<comments>https://plugable.com/2010/01/30/linux-kernel-framebuffer-rendering-apis/#respond</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Sun, 31 Jan 2010 00:56:49 +0000</pubDate>
				<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[udlfb]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=378</guid>

					<description><![CDATA[The Linux framebuffer interface has at least four different sets of APIs for rendering to the screen. Here they are mapped against the some important fbdev client &#8220;applications&#8221;. Description Linux console fbdev X server mplayer, fbi, some others fb_write and fb_read passes a buffer to copy to/from user no no no image_blit, fillrect, copyarea blit [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>The Linux framebuffer interface has at least four different sets of APIs for rendering to the screen.  Here they are mapped against the some important fbdev client &#8220;applications&#8221;.</p>
<table>
<tr>
<th></th>
<th>Description</th>
<th>Linux console</th>
<th>fbdev X server</th>
<th>mplayer, fbi, some others</p>
<th></tr>
<tr>
<td>fb_write and fb_read</td>
<td>passes a buffer to copy to/from user</td>
<td>no</td>
<td>no</td>
<td>no</td>
</tr>
<tr>
<td>image_blit, fillrect, copyarea</td>
<td>blit passes buffer to copy</td>
<td>yes</td>
<td>no</td>
<td>no</td>
</tr>
<tr>
<td>mmap</td>
<td>assuming writes go directly to device</td>
<td>no</td>
<td>yes</td>
<td>yes</td>
</tr>
<tr>
<td>mmap</td>
<td>with extra ioctl to report damage</td>
<td>no</td>
<td>no</td>
<td>no</td>
</tr>
</table>
<p>A &#8220;no&#8221; in the above table means the client application will fail if that&#8217;s the only API option supported by the kernel framebuffer driver.</p>
<p>udlfb supports all four, with some limitations (e.g. defio is required to support mmap without damage reports).</p>
<p>The custom displaylink X server is the only client today which supports the last option, which is the most performant option on indirect displays (like USB displays) &#8211; and hopefully will become a standard interface as it&#8217;s useful in many cases.</p>
<p>Unfortunately for the DisplayLink udlfb framebuffer, each API has different constraints it places on the driver.  Those constraints aren&#8217;t easily met all at once for a driver rendering to USB.  AFAICT, it looks like the driver actually needs to figure out what kind of client it&#8217;s dealing with, and assume that client will stick to that sub-set of the API.  That seems to be a safe assumption for the major fbdev apps today, but betting on something like this is always ugly.</p>
<p>Any misconceptions?</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/01/30/linux-kernel-framebuffer-rendering-apis/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">378</post-id>	</item>
		<item>
		<title>9 USB displays illuminate energy security</title>
		<link>https://plugable.com/2010/01/26/9-usb-displays-illuminate-energy-security/</link>
					<comments>https://plugable.com/2010/01/26/9-usb-displays-illuminate-energy-security/#comments</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Tue, 26 Jan 2010 22:30:00 +0000</pubDate>
				<category><![CDATA[Display]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[udlfb]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=367</guid>

					<description><![CDATA[Here&#8217;s a great application for USB displays. Hal Glenn from 2G Engineering has created an information display (on energy security and alternative methods of energy generation) with 9 USB touch screens, all running off a single Mac Mini running Ubuntu 9.10. And all using the available open source DisplayLink drivers and scripts and info at [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Here&#8217;s a great application for USB displays.  </p>
<p>Hal Glenn from <a target="_blank" href="http://www.2g-eng.com">2G Engineering</a> has created an information display (on energy security and alternative methods of energy generation) with 9 USB touch screens, all running off a single Mac Mini running Ubuntu 9.10. And all using the available open source <a target="_blank" href="https://plugable.com/category/product/platform/linux/">DisplayLink drivers and scripts</a> and info at displaylink.org.</p>
<p><object width="425" height="344"><param name="movie" value="https://www.youtube.com/v/JN4q8gkteYc&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param></object></p>
<p>Doing this without USB displays would</p>
<ul>
<li>Require a big desktop box to support several PCIe graphics cards</li>
<li>Would have <strong>triple the cords</strong> &#8211; Hal&#8217;s setup runs a single USB cable to each display.  With VGA, you&#8217;d still need the USB cable (for touch function), but then would also need VGA and power to each!</li>
<li>Would consume <a target="_blank" href="http://blog.displaylink.com/dlblog/2008/04/twice-productivity-half-power.html">much more power</a> &#8211; which would be kind of embarrassing for an energy security display, wouldn&#8217;t it?</li>
</ul>
<p>Hal&#8217;s setup builds on and extends some of the USB terminal scripts demoed during this talk at <a target="_blank" href="http://video.linuxfoundation.org/video/1590">Linux Plumbers Conference 2009</a>. </p>
<p>There are several reasons why this demo is easiest on Linux, one of which is by default, DisplayLink devices are limited to 6 displays on Windows and Mac.  The Linux drivers have no limit, so you can connect as many displays as you like &#8212; keeping in mind you&#8217;re sharing a 480Mbs bus (that itself has a 127 device limit).   But it is enough for the apps Hal is running on those nine 800&#215;480 touchscreens. </p>
<p>It will be interesting to see how many screens people get up to for various applications.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/01/26/9-usb-displays-illuminate-energy-security/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">367</post-id>	</item>
		<item>
		<title>Linux USB multiseat audio support</title>
		<link>https://plugable.com/2010/01/20/linux-usb-multiseat-audio-support/</link>
					<comments>https://plugable.com/2010/01/20/linux-usb-multiseat-audio-support/#comments</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Thu, 21 Jan 2010 06:09:48 +0000</pubDate>
				<category><![CDATA[Installing]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[udlfb]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=353</guid>

					<description><![CDATA[Here&#8217;s how to add audio support on top of the previous instructions for getting USB multiseat running on Linux, with a Plugable UD-160-A type device. Add the following line to the bottom of the /lib/udev/rules.d/50-usbseat.rules file created per the previous instructions. KERNEL=="control*", SUBSYSTEM=="sound", SUBSYSTEMS=="usb", PROGRAM="/bin/cat /sys/%p/../../../../../devnum", SYMLINK+="usbseat/%c/sound" Then create a new /etc/X11/Xsession.d/50usbseat file which will [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Here&#8217;s how to add audio support on top of the previous instructions for <a href="https://plugable.com/2009/11/16/setting-up-usb-multiseat-with-displaylink-on-linux-gdm-up-to-2-20/">getting USB multiseat running</a> on Linux, with a Plugable UD-160-A type device.</p>
<p>Add the following line to the bottom of the /lib/udev/rules.d/50-usbseat.rules file created per the previous instructions.</p>
<pre lang="bash">
KERNEL=="control*", SUBSYSTEM=="sound", SUBSYSTEMS=="usb", PROGRAM="/bin/cat /sys/%p/../../../../../devnum", SYMLINK+="usbseat/%c/sound"
</pre>
<p>Then create a new /etc/X11/Xsession.d/50usbseat file which will be run at Xsession create time, with the following contents</p>
<pre lang="bash">
oldIFS=$IFS
IFS=:
set $DISPLAY
IFS=.
set $2
SEAT_ID=$1
LN=`ls -al /dev/usbseat/$SEAT_ID/sound`
IFS=C
set $LN
CARD_ID=$2
export ALSA_CARD=$2
export ALSA_PCM_CARD=$2
IFS=$oldIFS
</pre>
<p>Each of the users who might need access to the USB devices needs to be added to the &#8216;audio&#8217; group.  On Ubuntu 9.04, this can be done with these commands to backup and then modify the groups (replace MY_USERNAME, of course) &#8230;</p>
<pre lang="bash">
sudo cp /etc/group /etc/group_backup
sudo chmod a-wx /etc/group_backup
sudo adduser MY_USERNAME audio
</pre>
<p>See <a href="https://help.ubuntu.com/community/SoundTroubleshooting">Ubuntu Sound TroubleShooting</a> for details on that step.</p>
<p>Now, as you connect UD-160-A terminals, a new X instance and GDM login will pop up as before, but also each of them will have /dev/usbseat/%SEAT_ID%/sound linking to their sound device, and the ALSA_CARD environment variable for all processes off of that X session, set to the matching sound card ID.  For apps which support ALSA/Pulse (like most browsers, flash, etc.), audio will now come out the correct terminal &#8212; all in a completely plug-and-play fashion.</p>
<p>If you&#8217;re wondering what the strange IFS stuff is in the above script, it&#8217;s bash&#8217;s built-in Internal Field Separator variable, which is an easy way to split strings without having to launch a separate sed or awk process.</p>
<p>Note, as before, these instructions are specific to and tested on an older version of Ubuntu: 9.04, and may need to be ported to other distros until the distros themselves integrate these scripts.</p>
<p>Thanks to Alexander Todorov&#8217;s <a href="http://code.google.com/p/alexx/source/browse/multi-seat#multi-seat/sumu">earlier work on multiseat sound support</a>, which demonstrated how to match the USB audio devices in udev, and which ALSA_ environment variables to set.  Alexander reported some problems reliably matching the audio devices, but with these scripts (with limited testing so far), things are working as expected.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/01/20/linux-usb-multiseat-audio-support/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">353</post-id>	</item>
		<item>
		<title>DisplayLink Linux Rotation</title>
		<link>https://plugable.com/2010/01/02/displaylink-linux-rotation/</link>
					<comments>https://plugable.com/2010/01/02/displaylink-linux-rotation/#comments</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Sat, 02 Jan 2010 16:42:41 +0000</pubDate>
				<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Portrait Display]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[udlfb]]></category>
		<category><![CDATA[UGA-2K-A]]></category>
		<category><![CDATA[amazon:asin=B0038P1TP4]]></category>
		<category><![CDATA[uga-2k-a]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=346</guid>

					<description><![CDATA[[updated 8/14/2011 with latest udlfb info] The xorg generic fbdev driver (xf86-video-fbdev) supports rotation with a custom option (note it disables DGA and xrandr when it rotated mode). DisplayLink devices can use this driver two ways: With the udlfb fb_defio option enabled to detect framebuffer writes based on page faults With the fbdev xorg server [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>[updated 8/14/2011 with latest udlfb info]</strong></p>
<p>The xorg generic fbdev driver (xf86-video-fbdev) supports rotation with a custom option (note it disables DGA and xrandr when it rotated mode). DisplayLink devices can use this driver two ways: </p>
<ul>
<li>With the udlfb <a href="http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/fb/udlfb.txt">fb_defio option enabled</a> to detect framebuffer writes based on page faults</li>
<li>With the fbdev xorg server patched to report damage (writes to the framebuffer). Instructions for compiling and adding the ReportDamage option to xorg.conf are <a href="https://plugable.com/2010/05/21/linux-support-for-higher-res-monitors-on-lower-res-displaylink-devices/">at the end of this post.</a> </li>
</ul>
<p>To enable rotation, in the xorg.conf &#8220;Device&#8221; section, add a Rotate option, setting it to CW, CCW, or UD.</p>
<pre lang="xorg">
Section "Device"
  Identifier "dl"
  Driver "fbdev"
  Option "rotate" "CCW"
  Option "ReportDamage" "true"
  Option "fbdev" "/dev/fb1"
EndSection
</pre>
<p><a href="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2010/01/IMG_9937.jpg"><img loading="lazy" src="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2010/01/IMG_9937-200x300.jpg" alt="" title="IMG_9937" width="200" height="300" class="aligncenter size-medium wp-image-348" srcset="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2010/01/IMG_9937-200x300.jpg 200w, https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2010/01/IMG_9937-682x1024.jpg 682w" sizes="(max-width: 200px) 100vw, 200px" /></a></p>
<p>One downside is rendering is significantly slower, as the extra work of rotation is done at the X level and the page-fault behavior of defio means even small updates refresh much of the screen.  Here&#8217;s some numbers that can be compared to earlier posts (in non-rotate mode):</p>
<pre lang="bash">
bernie@bernie-aspireone:~/git/misc-udlfb$ ./udlfb-perf.sh fb0 gtkperf -a
Xlib:  extension "RANDR" missing on display ":3.0".
GtkPerf 0.40 - Starting testing: Fri Jan  1 09:47:20 2010

GtkEntry - time:  0.00
GtkComboBox - time:  3.73
GtkComboBoxEntry - time:  2.08
GtkSpinButton - time:  0.49
GtkProgressBar - time:  0.69
GtkToggleButton - time:  0.47
GtkCheckButton - time:  0.44
GtkRadioButton - time:  0.79
GtkTextView - Add text - time:  2.30
GtkTextView - Scroll - time:  1.24
GtkDrawingArea - Lines - time:  4.14
GtkDrawingArea - Circles - time:  4.56
GtkDrawingArea - Text - time:  4.11
GtkDrawingArea - Pixbufs - time:  0.90
 ---
Total time: 25.96

Quitting..

model name      : Intel(R) Atom(TM) CPU N270   @ 1.60GHz
model name      : Intel(R) Atom(TM) CPU N270   @ 1.60GHz
cpu MHz         : 800.000
cpu MHz         : 800.000
MemTotal:        2052144 kB
Framebuffer Mode: 1920,1080

Rendered bytes:  1238913024 (total pixels * Bpp)
Identical bytes: 1070725304 (skipped via shadow buffer check)
sent bytes:      125732225 (compressed usb data, including overhead)
K CPU cycles:    7478653 (transpired, may include context switches)

% pixels found to be unchanged: 86.00 %
Compression of changed pixels : 25.00 %
Total CPU cycles spent per input pixel: 6
Total CPU cycles spent per output pixel: 59
USB Mbps: 35.52 (theoretical USB 2.0 peak 480)
</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/01/02/displaylink-linux-rotation/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">346</post-id>	</item>
		<item>
		<title>Linux USB quirks on 2.6.32</title>
		<link>https://plugable.com/2010/01/02/linux-usb-quirks-on-2-6-32/</link>
					<comments>https://plugable.com/2010/01/02/linux-usb-quirks-on-2-6-32/#respond</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Sat, 02 Jan 2010 15:08:02 +0000</pubDate>
				<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=343</guid>

					<description><![CDATA[Doing development on udlfb on Linux 2.6.32, crossed paths with these two quirks. The usb_skeleton.c sample driver appears to run afoul of this problem, resulting in a warn_on during bulk transfer completion, if done the way the sample recommends. Because completion routines can be called with irqs disabled, usb_buffer_free on dma-ready buffers can&#8217;t be called [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Doing development on udlfb on Linux 2.6.32, crossed paths with these two quirks.</p>
<p>The <a href="http://lxr.free-electrons.com/source/drivers/usb/usb-skeleton.c#L390">usb_skeleton.c</a> sample driver appears to run afoul of <a href="http://groups.google.com/group/linux.kernel/browse_thread/thread/749d6cda356a3070/b3275b4231bc5db5?q=WARN_ON+dma_free_coherent#b3275b4231bc5db5">this problem</a>, resulting in a warn_on during bulk transfer completion, if done the way the sample recommends.  Because completion routines can be called with irqs disabled, usb_buffer_free on dma-ready buffers can&#8217;t be called from them &#8212; which pushed the udlfb implementation to diverge from the skeleton model and pre-allocate a small set of urbs, and free only on driver disconnect.</p>
<p>Calls to usb_bulk_msg (simple synchronous bulk out) appeared to be silently failing for largish transfers (generally 16-32K).  Nasty to track down, since no errors are returned. Caused removal all use of usb_bulk_msg from udlfb, except for transactions that are known to be small.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2010/01/02/linux-usb-quirks-on-2-6-32/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">343</post-id>	</item>
		<item>
		<title>fbi &#8211; linux framebuffer imageviewer</title>
		<link>https://plugable.com/2009/12/24/fbi-linux-framebuffer-imageviewer/</link>
					<comments>https://plugable.com/2009/12/24/fbi-linux-framebuffer-imageviewer/#comments</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Fri, 25 Dec 2009 04:35:47 +0000</pubDate>
				<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=328</guid>

					<description><![CDATA[I was embarrassed to discover that the ever-popular dlfb &#8220;green screen&#8221; is broken in subtle ways by the new defio support. So for now with this new driver, DL devices may up with what appears to be gibberish. I didn&#8217;t notice, because my test config launches X on the DisplayLink device immediately. In the absence [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I was embarrassed to discover that the ever-popular dlfb &#8220;green screen&#8221; is broken in subtle ways by the <a href="https://plugable.com/2009/12/21/take-your-pick-standard-or-custom-displaylink-x-drivers-both-work-now/">new defio support</a>. So for now with this new driver, DL devices may up with what appears to be gibberish.  I didn&#8217;t notice, because my test config launches X on the DisplayLink device immediately.</p>
<p>In the absence of a working X setup, and until the draw-during-probe issue is resolved, another great way to confirm your DL devices are working properly is with the fbi (&#8220;linux framebuffer imageviewer&#8221;) utility.</p>
<pre lang="bash">
sudo apt-get install fbi
</pre>
<p>Run the above to install fbi (on Ubuntu/Debian).</p>
<pre lang="bash">
fbi -d /dev/fb0 -a *.jpg
</pre>
<p>And this to show a full-screen slideshow with fbi &#8212;  replacing &#8220;/dev/fb0&#8221; with one of your DisplayLink devices. You can &#8220;ls /sys/class/graphics/&#8221; to see all your framebuffer devices, and look within those directories for details on them. Of course, run the fbi utility from a directory with some jpgs (or other images) to display.  pg-up/pg-down to move between photos.</p>
<p>You must run the fbi program from a console (fbi limitation).  So hit Ctrl-Alt-F1 or something first, login from that text console, and run from there. </p>
<p>This wouldn&#8217;t work with older versions of udlfb or displaylink-mod (without defio support), and it makes a nice new test case.  Now, short instructions for getting mplayer working for fbdev video would be welcome &#8230;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2009/12/24/fbi-linux-framebuffer-imageviewer/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">328</post-id>	</item>
		<item>
		<title>Take your pick: standard or custom displaylink X drivers both work now</title>
		<link>https://plugable.com/2009/12/21/take-your-pick-standard-or-custom-displaylink-x-drivers-both-work-now/</link>
					<comments>https://plugable.com/2009/12/21/take-your-pick-standard-or-custom-displaylink-x-drivers-both-work-now/#comments</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Mon, 21 Dec 2009 23:21:52 +0000</pubDate>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=321</guid>

					<description><![CDATA[[update May 3, 2012: Support for using fb_defio and the standard, generic X fbdev driver is enabled by default, working, and stable with kernel 3.3 (at least). You&#8217;ll get lower CPU consumption and latency with DAMAGE notifications, but on many systems (especially higher end), fbdev is great. And because not everything supports DAMAGE, generic fbdev [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><em>[update May 3, 2012: Support for using fb_defio and the standard, generic X fbdev driver is enabled by default, working, and stable with kernel 3.3 (at least). You&#8217;ll get lower CPU consumption and latency with DAMAGE notifications, but on many systems (especially higher end), fbdev is great. And because not everything supports DAMAGE, generic fbdev is more reliable.]</em></p>
<p><em>[update April 6, 2010: support for fbdev had been merged into the main udlfb codeline, including for 2.6.34, but has since been removed because of kernel faults that stand unsolved.  If/when these problems can be found and fixed, fbdev support can get back into the mainline. Until then, the branch mentioned below is an ok way to try and test]</em></p>
<p>You can now get a version of udlfb with improved performance and support for any fbdev client.</p>
<p>Of the three DisplayLink Linux framebuffer driver lines, udlfb and displaylink-mod (written by Roberto DeIoris) have had the best performance by a significant margin. They&#8217;ve relied on Roberto&#8217;s custom X server, with some custom IOCTLs, to make use of precise X damage information.  All the directions on the http://displaylink.org/ wiki have pointed to these drivers so far.</p>
<p>Unfortunately, these drivers won&#8217;t work with standard frambuffer clients that use a mmap&#8217;d framebuffer, because they&#8217;ll simply never refresh any area of the screen without damage notification.  So drivers like the existing xf86-video-fbdev won&#8217;t work.  </p>
<p>By contrast, Jaya Kumar&#8217;s defio-based DisplayLink codeline does work with xf86-video-fbdev or any standard fbdev client, but hasn&#8217;t been competitive performance-wise.</p>
<p>So the goal has been to merge the best aspects of both codelines &#8212; and get them merged into the kernel.  That work isn&#8217;t completely done, but it&#8217;s at a working milesone.  We now have a single kernel framebuffer driver that can support either roberto&#8217;s custom X driver (&#8220;displaylink&#8221;), or the standard fbdev X driver (&#8220;fbdev&#8221;), just by switching the &#8220;driver&#8221; line in the &#8220;server&#8221; section of xorg.conf.  This makes for easier performance testing and workaround testing for X server specific problems.</p>
<p>And where previously, the fbdev driver was much slower than the displaylink custom (90% slower on some tests), it&#8217;s now within a few percentage points of difference &#8211; often not enough to notice.</p>
<p>There&#8217;s lots of room to optimize further yet, but this opens the possibility of not needing a custom X server at all for displaylink hardware, which would simplify the linux distribution rollout strategy.</p>
<p>You can grab this code at:</p>
<pre lang="bash">
git clone http://git.plugable.com/webdav/udlfb
git checkout origin/defio
</pre>
<p>Then &#8220;make; sudo make install; sudo depmod -a&#8221; as usual.  If you&#8217;re switching from displaylink-mod, get rid of that from the kernel modules directory first, or both udlfb and it may try to load.</p>
<p>Please post experience reports here or on the libdlo list.  As patches have been developed for udlfb, there&#8217;s not been enough validation from the user community that the patches work and are valuable &#8212; and that would help the Linux kernel maintainers make their decisions about whether to accept patches.</p>
<p>Perf data is imperfect, but here&#8217;s a benchmark run of this code running the custom displaylink X server (making use of damage information)</p>
<pre lang="bash">
bernie@bernie-aspireone:~/git/misc-udlfb$ ./udlfb-perf.sh fb0 gtkperf -a
GtkPerf 0.40 - Starting testing: Mon Dec 21 14:24:13 2009

GtkEntry - time:  0.00
GtkComboBox - time:  3.00
GtkComboBoxEntry - time:  1.89
GtkSpinButton - time:  0.42
GtkProgressBar - time:  0.60
GtkToggleButton - time:  0.44
GtkCheckButton - time:  0.42
GtkRadioButton - time:  0.75
GtkTextView - Add text - time:  2.09
GtkTextView - Scroll - time:  0.83
GtkDrawingArea - Lines - time:  1.66
GtkDrawingArea - Circles - time:  3.09
GtkDrawingArea - Text - time:  2.89
GtkDrawingArea - Pixbufs - time:  0.27
 ---
Total time: 18.37

Quitting..

model name      : Intel(R) Atom(TM) CPU N270   @ 1.60GHz
model name      : Intel(R) Atom(TM) CPU N270   @ 1.60GHz
cpu MHz         : 1600.000
cpu MHz         : 1333.000
MemTotal:        2052144 kB
Framebuffer Mode: 1920,1080

Rendered bytes:  155896744 (total pixels * Bpp)
Identical bytes: 96231480 (skipped via shadow buffer check)
sent bytes:      29614624 (compressed usb data, including overhead)
K CPU cycles:    1251295 (transpired, may include context switches)

% pixels found to be unchanged: 61.00 %
Compression of changed pixels : 50.00 %
Total CPU cycles spent per input pixel: 8
Total CPU cycles spent per output pixel: 42
USB Mbps: 11.29 (theoretical USB 2.0 peak 480)
</pre>
<p>And here&#8217;s a benchmark run of the same, just switched to run the standard fbdev X server (making use of only page faults)</p>
<pre lang="bash">
bernie@bernie-aspireone:~/git/misc-udlfb$ ./udlfb-perf.sh fb0 gtkperf -a
GtkPerf 0.40 - Starting testing: Mon Dec 21 12:45:20 2009

GtkEntry - time:  0.00
GtkComboBox - time:  3.16
GtkComboBoxEntry - time:  1.80
GtkSpinButton - time:  0.41
GtkProgressBar - time:  0.60
GtkToggleButton - time:  0.44
GtkCheckButton - time:  0.41
GtkRadioButton - time:  0.76
GtkTextView - Add text - time:  2.03
GtkTextView - Scroll - time:  0.82
GtkDrawingArea - Lines - time:  1.87
GtkDrawingArea - Circles - time:  3.36
GtkDrawingArea - Text - time:  2.84
GtkDrawingArea - Pixbufs - time:  0.22
 ---
Total time: 18.73

Quitting..

model name      : Intel(R) Atom(TM) CPU N270   @ 1.60GHz
model name      : Intel(R) Atom(TM) CPU N270   @ 1.60GHz
cpu MHz         : 1333.000
cpu MHz         : 1600.000
MemTotal:        2052144 kB
Framebuffer Mode: 1920,1080

Rendered bytes:  288165888 (total pixels * Bpp)
Identical bytes: 227263860 (skipped via shadow buffer check)
sent bytes:      39281496 (compressed usb data, including overhead)
K CPU cycles:    1685041 (transpired, may include context switches)

% pixels found to be unchanged: 78.00 %
Compression of changed pixels : 35.00 %
Total CPU cycles spent per input pixel: 5
Total CPU cycles spent per output pixel: 42
USB Mbps: 14.98 (theoretical USB 2.0 peak 480)
</pre>
<p>The &#8220;Compression of changed pixels&#8221; is lower on fbdev, because the unchanged pixel detection is less accurate for the page fault method (for now, but that will get fixed ..), and so there&#8217;s a lot of re-rendering of desktop pixels &#8212; and my desktop background is a complex, gradient heavy image that doesn&#8217;t compress well.</p>
<p>The main performance gains vs. the original defio implementation are:</p>
<ul>
<li>Added RLE compression on the defio path</li>
<li>Added shadow/backbuffer to scan for unchanged pixels on the defio path</li>
<li>Moved to asynchronous urb dispatch for defio and damage codepaths (4 pre-alloc&#8217;d 64K urbs). This also has a significant performance benefit for the custom/damage path</li>
<li>Changed defio path to no longer send an urb per line, but rather fill every urb completely, across lines and dirty pages. Big gain for defio.</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2009/12/21/take-your-pick-standard-or-custom-displaylink-x-drivers-both-work-now/feed/</wfw:commentRss>
			<slash:comments>13</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">321</post-id>	</item>
		<item>
		<title>DisplayLink Linux performance metrics</title>
		<link>https://plugable.com/2009/12/03/displaylink-linux-performance-metrics/</link>
					<comments>https://plugable.com/2009/12/03/displaylink-linux-performance-metrics/#respond</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Fri, 04 Dec 2009 00:19:09 +0000</pubDate>
				<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[udlfb]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=302</guid>

					<description><![CDATA[For a USB virtual graphics solution, performance is critical. For the Linux drivers for DisplayLink devices, there are several patches and alternative implementations that are tough to evaluate, compare (and merge) without hard data. It would be great to know what compression ratio we&#8217;re getting, how much data is being sent over USB, etc. So, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>For a USB virtual graphics solution, performance is critical.  For the Linux drivers for DisplayLink devices, there are several patches and alternative implementations that are tough to evaluate, compare (and merge) without hard data.  It would be great to know what compression ratio we&#8217;re getting, how much data is being sent over USB, etc.</p>
<p>So, to enable people to generate that better data, a few lightweight and very low-level benchmarks have been added to udlfb in <a href="http://git.plugable.com/gitphp/index.php?p=udlfb&#038;a=shortlog&#038;h=refs/heads/sysfs-metrics">this patch</a>, which can be grabbed with:</p>
<pre lang="bash">
git clone http://git.plugable.com/webdav/udlfb
git checkout origin/sysfs-metrics
</pre>
<p>What has been added is a set of metrics which are exposed through sysfs.  After building branch of the driver with &#8220;sudo make install; sudo depmod -a&#8221; and a reboot, you&#8217;ll find these new files on your system:</p>
<pre lang="bash">
ls /sys/class/graphics/fb0/metrics_*
/sys/class/graphics/fb0/metrics_apis_used
/sys/class/graphics/fb0/metrics_bytes_identical
/sys/class/graphics/fb0/metrics_bytes_rendered
/sys/class/graphics/fb0/metrics_bytes_sent
/sys/class/graphics/fb0/metrics_cpu_kcycles_used
/sys/class/graphics/fb0/metrics_reset
</pre>
<p>If you read any of these files, a request will go down to the udlfb driver, and it will return back the matching metric.  One file is write-only: metrics_reset. Writing anything to it will set all the others back to zero. </p>
<p>Sysfs is a really nice mechanism &#8212; we can now create some more elaborate test scenarios easily from user mode, and get fairly precise data back from kernel mode.</p>
<p>If you have a working setup of X on top of udlfb (I use <a href="https://plugable.com/2009/11/16/setting-up-usb-multiseat-with-displaylink-on-linux-gdm-up-to-2-20/">this method</a>) &#8212; or anything that renders to the framebuffer device &#8212; you can now get some much better data about what&#8217;s happening in udlfb.</p>
<p>As an example, a script called udlfb-perf.sh has been created to run tests and pretty print a simple report.  Here&#8217;s the output from a test run on my Acer Aspire laptop running Ubuntu 9.04, using gtkperf as scenario to benchmark.</p>
<pre lang="bash">
./udlfb-perf.sh fb0 gtkperf -a
GtkPerf 0.40 - Starting testing: Thu Dec  3 15:16:12 2009

GtkEntry - time:  0.00
GtkComboBox - time:  3.17
GtkComboBoxEntry - time:  1.93
GtkSpinButton - time:  0.40
GtkProgressBar - time:  0.60
GtkToggleButton - time:  0.45
GtkCheckButton - time:  0.41
GtkRadioButton - time:  0.74
GtkTextView - Add text - time:  1.99
GtkTextView - Scroll - time:  0.86
GtkDrawingArea - Lines - time:  1.89
GtkDrawingArea - Circles - time:  3.13
GtkDrawingArea - Text - time:  3.05
GtkDrawingArea - Pixbufs - time:  0.56
 --- 
Total time: 19.18

Quitting..

model name	: Intel(R) Atom(TM) CPU N270   @ 1.60GHz
model name	: Intel(R) Atom(TM) CPU N270   @ 1.60GHz
cpu MHz		: 800.000
cpu MHz		: 800.000
MemTotal:        2052144 kB
Framebuffer Mode: 1920,1080

Rendered bytes:  187064790 (total pixels * Bpp)
Identical bytes: 112816894 (skipped via shadow buffer check)
sent bytes:      35556944 (compressed usb data, including overhead)
K CPU cycles:    4316313 (transpired, may include context switches)

% pixels found to be unchanged: 60.00 %
Compression of changed pixels : 52.00 %
CPU cycles spent per pixel: 23
USB Mbps: 13.56 (theoretical USB 2.0 peak 480)
</pre>
<p>To run this, you&#8217;ll need the udlfb-perf.sh script (shown below, and also <a href="http://git.plugable.com/gitphp/index.php?p=misc-udlfb&#038;a=tree">in git here</a>)</p>
<p>And you&#8217;ll need gtkperf:</p>
<pre lang="bash">
sudo apt-get install gtkperf
</pre>
<p>Run udlfb-perf on your DisplayLink display, passing it the appropriate framebuffer device (e.g. ./udlfb-perf.sh fb0 gtkperf -a)</p>
<pre lang="bash">
#!/bin/bash
# (C) 2009 Bernie Thompson https://plugable.com/
# License http://www.opensource.org/licenses/mit-license.html

if [ $# -eq 0 ]
then
    echo
    echo "Usage: $0 fbX [test to benchmark] [test parameters ....]"
    echo "[fbX] must be device visible in /sys/class/graphics directory"
    echo "and should be the DisplayLink device X is currently using"
    echo
    echo "Example: ./udlfb-perf.sh fb0 gtkperf -a"
    echo
    exit 1
fi

dev=$1
prog=$2
shift 2

echo 1 > /sys/class/graphics/$dev/metrics_reset

start=$(date +%s)
$prog $@
end=$(date +%s)

rendered=`cat /sys/class/graphics/$dev/metrics_bytes_rendered`
sent=`cat /sys/class/graphics/$dev/metrics_bytes_sent`
identical=`cat /sys/class/graphics/$dev/metrics_bytes_identical`
cycles=`cat /sys/class/graphics/$dev/metrics_cpu_kcycles_used`
mode=`cat /sys/class/graphics/$dev/virtual_size`

bus_compress=`/usr/bin/bc <<EOF
scale=2; (($rendered - $identical - $sent) / ($rendered - $identical)) * 100
EOF`
unchanged_pct=`/usr/bin/bc <<EOF
scale=2; (($identical) / $rendered) * 100
EOF`
mbps=`/usr/bin/bc <<EOF
scale=2; ($sent) / ($end - $start) * 8 / 1048576
EOF`
cycles_per_pix=`/usr/bin/bc <<EOF
scale=0; $cycles * 1000 / $rendered
EOF`

echo
/bin/grep "model name" /proc/cpuinfo
/bin/grep "MHz" /proc/cpuinfo
/bin/grep "MemTotal" /proc/meminfo
echo "Framebuffer Mode: $mode"
echo
echo "Rendered bytes:  $rendered (total pixels * Bpp)"
echo "Identical bytes: $identical (skipped via shadow buffer check)"
echo "sent bytes:      $sent (compressed usb data, including overhead)"
echo "K CPU cycles:    $cycles (transpired, may include context switches)"
echo
echo "% pixels found to be unchanged: $unchanged_pct %"
echo "Compression of changed pixels : $bus_compress %"
echo "CPU cycles spent per pixel: $cycles_per_pix"
echo "USB Mbps: $mbps (theoretical USB 2.0 peak 480)"
echo
</pre>
<p>It'd be interesting to see results from other systems and/or some suggested benchmarks other than gtkperf (especially a repeatable video playback test).  Please feel free to comment with any of that.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2009/12/03/displaylink-linux-performance-metrics/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">302</post-id>	</item>
		<item>
		<title>Setting up USB multiseat with DisplayLink on Linux (GDM up to 2.20)</title>
		<link>https://plugable.com/2009/11/16/setting-up-usb-multiseat-with-displaylink-on-linux-gdm-up-to-2-20/</link>
					<comments>https://plugable.com/2009/11/16/setting-up-usb-multiseat-with-displaylink-on-linux-gdm-up-to-2-20/#comments</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Tue, 17 Nov 2009 00:55:17 +0000</pubDate>
				<category><![CDATA[Installing]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[UD-160-M]]></category>
		<category><![CDATA[amazon:asin=B004PXPPNA]]></category>
		<category><![CDATA[amazon:asin=B0081LVOTQ]]></category>
		<category><![CDATA[ud-160-m]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=268</guid>

					<description><![CDATA[Soon, we&#8217;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 &#8212; anywhere where you have clusters of [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2009/10/2009-09-22-195134-fourseats.JPG"><img loading="lazy" src="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2009/10/2009-09-22-195134-fourseats-150x150.jpg" alt="Four $99 UD-160-A Terminals off a single $299 netbook" title="Four $99 UD-160-A Terminals off a single $299 netbook" width="150" height="150" class="alignright size-thumbnail wp-image-153" /></a>Soon, we&#8217;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 &#8212; 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.</p>
[Update August 8, 2010 &#8211; Further work on this has moved to the Google Summer of Code 2010 project for USB Multiseat]
<p>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. 

<pre>gdm &#8211;version</pre>
<p> will show what version you have on your current system. Any tweaks to make things work with your specific distro are definitely welcome in the comments.</p>
<p>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 <a href="/products/dc-125/" target="_blank">Plugable DC-125</a>, or buy independent USB devices like the <a href="/products/uga-125/" target="_blank">UGA-125</a> 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.</p>
<p>With that, you&#8217;re ready to start configuring your Linux setup  &#8230;</p>
<h3>1. DisplayLink framebuffer driver</h3>
<p>udlfb is in the staging tree of Linux kernels 2.6.32 and later.  We&#8217;ll install the latest version here.  First, make sure you have git installed with &#8220;sudo apt-get install git-core&#8221;, and create a directory which will host all the source code you download with git (e.g. ~/git/).  </p>
<pre lang="bash">
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
</pre>
<p>Now, when you plug in a DisplayLink device, you should see a &#8220;green screen&#8221; as the driver successfully loads and sets the graphics mode to match your monitor.  </p>
<h3>2. DisplayLink X server</h3>
<p>This will get the X server installed, ready for use by later scripts.</p>
<pre lang="bash">
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
</pre>
<p>We now need to create or modify a few scripts and configuration files.  You&#8217;ll need to use sudo to edit files in these system directories.  You can cut/paste the text below, or download the files with &#8220;git clone http://git.plugable.com/webdav/misc-udlfb/&#8221; and copy each to the right location, and fix up ownership and permissions on the files.</p>
<h3>3. udev script</h3>
<p>Create a file called /lib/udev/rules.d/50-usbseat.rules owned by user root, with the following contents.  </p>
<pre lang="bash">
# 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"
</pre>
<p>The udev subsystem will run this script automatically each time a USB device is attached. </p>
<h3>4. usbseat.sh script</h3>
<p>Create a file /lib/udev/usbseat.sh owned by user root with the following contents. Make sure to &#8220;sudo chmod a+x&#8221; to make the file executable.</p>
<pre lang="bash">
#!/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
</pre>
<h3>5. X config file</h3>
<p>Create file /lib/udev/usbseat-xf86.conf.sed with contents</p>
<pre lang="xorg_conf">

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

</pre>
<h3>6. fbcon workaround</h3>
[update: this step is no longer needed with the latest udlfb from git or in kernels 2.6.37+]
<p>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&#8217;s not what we want if we&#8217;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.</p>
<pre lang="xorg_conf">
blacklist font
blacklist tileblit
blacklist bitblit
blacklist fbcon
</pre>
<p>This file will not take effect until you run</p>
<pre lang="bash">
sudo update-initramfs -u
</pre>
<p>Now, when you reboot and run &#8220;lsmod&#8221; you should not see fbcon in the loaded modules.  And in /sys/class/graphics you should see fb0, instead of fbcon.</p>
<h3>7. xrandr workaround</h3>
[update: this workaround is not needed when running xf86-video-fbdev or with recent displaylink X servers with <a href="http://git.plugable.com/gitphp/index.php?p=xf-video-udlfb&#038;a=commit&#038;h=54d15f63548a44c69fc3fe80191147b42061a67a">this patch</a>]
<p>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 &#8212; otherwise they tend to think the screen has a strange rotation, and display themselves completely off it.</p>
<p>Add these lines into /etc/gdm/Init/Default, right after the definition of gdmwhich()</p>
<pre lang="bash">
XRANDR=`gdmwhich xrandr`
if [ "x$XRANDR" != "x" ]; then
  $XRANDR -o 0
fi
</pre>
<h3>8. /etc/rc.local script</h3>
<p>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.</p>
<pre lang="bash">
oldIFS=$IFS
IFS=/
for seat in /dev/usbseat/*; do
	set $seat
	/lib/udev/usbseat.sh $4
done
IFS=$oldIFS
</pre>
<h3>9. /etc/init.d/gdm patch</h3>
<p>In recent versions of X, the system largely assumes that you&#8217;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&#8217;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.</p>
<p>Add these lines to your /etc/init.d/gdm script, just after the section to &#8220;Allow cdd to override the config&#8221; (around line 35).</p>
<pre lang="bash">
# 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
</pre>
<h3>10. Create /etc/gdm/gdm-usbseat.conf</h3>
<p>This is the alternative gdm.conf that will be used when a USB terminal is present at boot:</p>
<pre lang="xorg_conf">
[daemon]
DynamicXServers=true
FlexibleXServers=0
Greeter=/usr/lib/gdm/gdmgreeter

[security]

[xdmcp]

[gui]

[greeter]

[chooser]

[debug]

[servers]
0=inactive
</pre>
<p>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.</p>
<p><a href="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2009/10/2009-09-22-200342-Edubuntu.JPG"><img loading="lazy" src="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2009/10/2009-09-22-200342-Edubuntu-300x200.jpg" alt="usb multiseat with Edubuntu" title="usb multiseat with Edubuntu" width="300" height="200" class="aligncenter size-medium wp-image-162" srcset="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2009/10/2009-09-22-200342-Edubuntu-300x200.jpg 300w, https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2009/10/2009-09-22-200342-Edubuntu-1024x682.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>See my video from <a href="https://s3.amazonaws.com/plugable/doc/LPC2009-USB-Multiseat-Talk-Bernie-Thompson.flv">Linux Plumbers 2009</a> for more thoughts and background on USB multiseat.</p>
<h3>Unsolved Problems</h3>
<p>Beyond reworking for the new GDM/ConsoleKit versions, and getting all this just &#8220;built in&#8221; to the distributions, there are at least several major problems yet:</p>
<p><strong>input duplication</strong></p>
<p><em>[Update Feb 19, 2010 &#8211; fixed by removing &#8220;-sharevts -novtswitch&#8221; from the X start line and substituting a specific vt &#8220;vt07&#8221;.  Listing above now has problem resolved]</em></p>
<p>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&#8217;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 &#8212; any comments on that welcome.</p>
<p><strong>mouse scroll wheel doesn&#8217;t work</strong></p>
<p><em>[Update Feb 19, 2010 &#8211; fixed by changing Protocol from &#8220;auto&#8221; to &#8220;ImPS/2&#8221; in the xorg.conf]</em></p>
<p>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.</p>
<p><strong>unplug terminal doesn&#8217;t tear down (or reconnect)</strong><br />
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.</p>
<p>Comments on other distros (e.g. yum vs. apt-get), better solutions, and other problems are very much appreciated.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2009/11/16/setting-up-usb-multiseat-with-displaylink-on-linux-gdm-up-to-2-20/feed/</wfw:commentRss>
			<slash:comments>58</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">268</post-id>	</item>
		<item>
		<title>udlfb 0.4.0</title>
		<link>https://plugable.com/2009/11/11/udlfb-0-4-0/</link>
					<comments>https://plugable.com/2009/11/11/udlfb-0-4-0/#comments</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Wed, 11 Nov 2009 19:54:20 +0000</pubDate>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[udlfb]]></category>
		<category><![CDATA[UGA-125]]></category>
		<category><![CDATA[UGA-165]]></category>
		<category><![CDATA[UGA-2K-A]]></category>
		<category><![CDATA[USB-VGA-165]]></category>
		<category><![CDATA[amazon:asin=B0038P1TP4]]></category>
		<category><![CDATA[amazon:asin=B004AIJE9G]]></category>
		<category><![CDATA[uga-165]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=250</guid>

					<description><![CDATA[[Update Dec 29, 2011: udlfb was promoted from the staging to the mainline kernel tree in 2.6.38. And in kernel 3.3 pagefault detection and console are enabled by default. See all our udlfb posts for the latest news.] [Update March 14, 2010: udlfb versions have moved to being released with the Linux kernel. Update on [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>[Update Dec 29, 2011: udlfb was promoted from the staging to the mainline kernel tree in 2.6.38. And in kernel 3.3 pagefault detection and console are enabled by default. See <a href="https://plugable.com/category/projects/udlfb/">all our udlfb posts</a> for the latest news.]</strong></p>
<p><strong>[Update March 14, 2010: udlfb versions have moved to being released with the Linux kernel. <a href="https://plugable.com/2010/03/14/update-on-displaylink-udlfb-in-2-6-34/">Update on udlfb support in Linux kernel 2.6.34</a>]</strong></p>
[Update Feb 6, 2010: additional features and fixes post-0.4 are available at the <a href="http://git.plugable.com/gitphp/index.php?p=udlfb&#038;a=summary">plugable git page</a>.  Background is in <a href="https://plugable.com/category/product/platform/linux/">later posts</a>. One major udlfb patch with these changes has made it into linux-next (slated for 2.6.34), and additional patches will be coming as they&#8217;re ready.]
<p>This is a new release of the DisplayLink kernel framebuffer driver, udlfb.</p>
<p>udlfb was accepted into the Linux kernel staging tree of 2.6 a few months ago.  It needs some work to add key features and get it moving from the staging tree, into mainline.  Roberto De Iorio, the author of udlfb and displaylink-mod, is focusing on X server work, and is happy with this work happening in parallel to move udlfb forward.</p>
<p>This first release intentionally adds no fundamentally new features.  It only gets udlfb up to sync with the displaylink-mod branch (up to Roberto&#8217;s last 0.3 release in July 2009) that has been in use the past few months.   With this update, displaylink-mod users should be able to switch to this version of udlfb transparently.  </p>
<p>Bug reports are very welcome, especially regressions or problems that would stand in the way of moving this driver forward out of staging (comments here are fine for bug reports).</p>
<p><strong>New in 0.4.0 (since 0.2.3 currently in the Linux kernel staging tree)</strong></p>
<ul>
<li>Add dynamic modeset support (from displaylink-mod 0.3 and libdlo)</li>
<ul>
<li>udlfb uses EDID to find the monitor&#8217;s preferred mode</li>
<li>udlfb no longer has fixed mode tables &#8211; it&#8217;s able to set any mode (within the capabilities of the chip) dynamically, from the standard VESA timing characteristics of the mode</li>
</ul>
<li>Fix teardown synchronization issues (from displaylink-mod 0.3)</li>
<li>Other minor changes related to probe/modeset (from displaylink-mod 0.3)</li>
<li>Functionally identical to displaylink-mod 0.3</li>
<li>Retains basic layout of udlfb to make diffs more transparent and understandable</li>
</ul>
<p><strong>Download</strong></p>
<p>See the git project summary page at <a href="http://git.plugable.com/gitphp/index.php?p=udlfb&#038;a=summary">http://git.plugable.com/gitphp/index.php?p=udlfb&#038;a=summary</a> for information.</p>
<p><strong>Switching from displaylink-mod to udlfb. </strong></p>
<p>Both these drivers match against all displaylink devices.  So you don&#8217;t want both loading on your system.  To clear out displaylink-mod:</p>
<pre>
sudo rmmod displaylink
sudo rm /lib/modules/`uname -r`/extra/displaylink.ko
sudo depmod -a
</pre>
<p>Then download, compile, install udlfb 0.4</p>
<pre>
./configure
make
sudo make install
sudo depmod -a
</pre>
<p><strong>Todo</strong></p>
<ul>
<li>Merge in enhancements from Jaya Kumar&#8217;s displaylinkfb branch (defio support)</li>
<li>Merge in enhancements from Bernie&#8217;s displaylink-mod branch (performance)</li>
<li>Clear up remaining endian issues, to make sure it works on ARM and others</li>
<li>Add performance metrics, and sysfs attributes to read/reset them</li>
<li>Make allocation/use of backbuffer a runtime option, with param and sysfs switch</li>
<li>Figure out what KMS (Kernel Mode Setting) means to framebuffer drivers</li>
<li>Move from single URB with synchronous dispatch to ring of USB URBs, with asynchronous dispatch</li>
<li>Enhance probe() to better handle chip type detection</li>
<li>Enahance mode selection to better handle limits of DisplayLink chip</li>
<li>Add simulated hardware cursor support, to prioritize mouse movement</li>
</ul>
<p>Any feedback or ideas on these todos are very welcome.  And, as always, patches are very welcome and will be incorporated as quickly as possible.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2009/11/11/udlfb-0-4-0/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">250</post-id>	</item>
		<item>
		<title>DisplayLink kernel framebuffer performance</title>
		<link>https://plugable.com/2009/11/02/displaylink-kernel-framebuffer-performance/</link>
					<comments>https://plugable.com/2009/11/02/displaylink-kernel-framebuffer-performance/#comments</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Mon, 02 Nov 2009 23:46:02 +0000</pubDate>
				<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=230</guid>

					<description><![CDATA[There are three codelines of Linux DisplayLink kernel frambuffer drivers currently in use: udlfb (Roberto De Ioris), which is in the Linux kernel staging tree of 2.6.31 and later, and is enabled by default in some recent distros (Ubuntu 9.10). Capable of working with all DisplayLink devices. displaylink-mod (Roberto De Ioris), which adds dynamic mode [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>There are three codelines of Linux DisplayLink kernel frambuffer drivers currently in use:</p>
<ul>
<li>udlfb (Roberto De Ioris), which is in the Linux kernel staging tree of 2.6.31 and later, and is enabled by default in some recent distros (Ubuntu 9.10). Capable of working with all DisplayLink devices.</li>
<li>displaylink-mod (Roberto De Ioris), which adds dynamic mode support and a few other minor changes</li>
<li>displaylinkfb (Jaya Kumar), which tries out some innovative approaches (defio page-fault change detection), uses existing fbdev x servers without modification, but is much slower (80% slower on example test) than udlfb and displaylink-mod, which both use X damage information and RL/RAW compression</li>
<li>udl (Marcus Glocker) for FreeBSD (not Linux) text/graphics console driver interface, which makes use of damage and ports Huffman-style compression from Florian Echtler&#8217;s libtubecable library. This support is currently ahead of what&#8217;s on Linux.</li>
</ul>
<p>You can get more information about these drivers at <a href="http://libdlo.freedesktop.org/wiki/HowTo">http://libdlo.freedesktop.org/wiki/HowTo</a></p>
<p>In general, most of the demos and videos posted here use displaylink-mod. Some performance improvement patches are available at <a href="http://git.plugable.com/">http://git.plugable.com/</a>, but they are a relatively small improvement.  </p>
<p>So any conclusions of of the performance work so far?</p>
<ul>
<li> Graphics benchmarks on Linux are in rough shape.  Most practical approach so far has been simplistically using a combination of glxgears and a few select tests from x11perf.  Good video playback tests needed.</li>
<li> Jaya&#8217;s displaylinkfb driver tries some interesting concepts, but the lack of damage information from X means it runs much slower (up to 80% slower) than the alternatives for now.</li>
<li>The original RL compression in udlfb by Henrik Bjerregaard Pedersen is surprisingly effective, even though it only uses one of RLE or RAW for each 255 pixel segment. It&#8217;s relatively CPU-efficient with simple inner loops, and decently USB-efficient in practice.</li>
<li>The alternating RL/RAW algorithm in the master branch at <a href="http://git.plugable.com/">http://git.plugable.com/</a> does slightly better, but it varies per test and is not dramatic.</li>
<li>The shadow/back buffer that udlfb and displaylink-mod keep do provide a significant gain on maybe one out of every 4 tests or so, but X&#8217;s damage information is quite accurate &#8212; so saving that allocation and the ongoing reads/writes to that extra memory by forgoing the back buffer is definitely viable and should at least be a module option.  The &#8216;noback&#8217; branch at http://git.plugable.com/ has this removed (despite what one comment checkin says), for anyone who wants to try it. </li>
</ul>
<p>Perhaps the best and quickest path forward to getting support more widely distributed is</p>
<ul>
<li>Bringing udlfb up to snuff, since there are just a few functional changes in the displaylink-mod branch, and udlfb already is going through the staging->mainline confidence building process</li>
<li>For the matching X server, it would be great to have kernel driver that works with both the standard <a href="http://cgit.freedesktop.org/xorg/driver/xf86-video-fbdev/ ">http://cgit.freedesktop.org/xorg/driver/xf86-video-fbdev/ </a> at some level of performance, or with the custom displaylink xserver at some (better) level of performance.  Then move things (like damage support, which is key to performance) from the displaylink server to the fbdev server in a standardized way over time.</li>
<li>Then there&#8217;s a bunch of other more involved work to come on configuration and coexistence with multiple graphics controllers.  Rough plans are visible in the fog here, but they involve other projects and people.</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2009/11/02/displaylink-kernel-framebuffer-performance/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">230</post-id>	</item>
		<item>
		<title>Plug and Play Multiseat Talk Given at Linux Plumbers Conference 2009</title>
		<link>https://plugable.com/2009/10/27/plug-and-play-multiseat-talk-given-at-linux-plumbers-conference-2009/</link>
					<comments>https://plugable.com/2009/10/27/plug-and-play-multiseat-talk-given-at-linux-plumbers-conference-2009/#respond</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Tue, 27 Oct 2009 09:49:15 +0000</pubDate>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Terminal]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=223</guid>

					<description><![CDATA[The video of the talk mentioned in this previous post, is now online (recently moved from the Linux Foundation site, to youtube in 4 parts). Covering: The potential of USB multiseat Some background and earlier work Live demo of USB multiseat with three Plugable devices Walkthrough of the multiseat scripts for Ubuntu 9.04 (available here) [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>The video of the talk <a href="https://plugable.com/2009/09/22/plug-and-play-multiseat-presentation/">mentioned in this previous post</a>, is now online (recently moved from the Linux Foundation site, to youtube in 4 parts).</p>
<p><object width="480" height="360"><param name="movie" value="https://www.youtube.com/v/YcF5ksYnfcY?version=3&amp;hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param></object></p>
<p>Covering:</p>
<ul>
<li>The potential of USB multiseat</li>
<li>Some background and earlier work</li>
<li>Live demo of USB multiseat with three Plugable devices</li>
<li>Walkthrough of the multiseat scripts for Ubuntu 9.04 (<a href="http://libdlo.freedesktop.org/wiki/MultiSeatTerminal">available here</a>)</li>
</ul>
<p>The same device used in the demos is available for purchase here:<br />
<iframe src="https://rcm.amazon.com/e/cm?lt1=_blank&#038;bc1=FFFFFF&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=plugabltechno-20&#038;o=1&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;asins=B002PONXAI" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2009/10/27/plug-and-play-multiseat-talk-given-at-linux-plumbers-conference-2009/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">223</post-id>	</item>
		<item>
		<title>Using the Plugable dock</title>
		<link>https://plugable.com/2009/10/13/using-the-plugable-dock/</link>
					<comments>https://plugable.com/2009/10/13/using-the-plugable-dock/#comments</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Tue, 13 Oct 2009 21:38:39 +0000</pubDate>
				<category><![CDATA[Installing]]></category>
		<category><![CDATA[Laptop Dock]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Platform]]></category>
		<category><![CDATA[Using]]></category>
		<category><![CDATA[ud-160-m]]></category>
		<category><![CDATA[widget=ud-160-a]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=166</guid>

					<description><![CDATA[Click on the picture for more detail. This is a picture of my work desk today and how I&#8217;m using the Plugable dock myself. (yes &#8212; I cleaned off a few books and papers &#8212; it&#8217;s usually much messier!) My $330 Acer Aspire One Atom 1.6Ghz netbook is on the left &#8212; I like having [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2009/10/img_9161.jpg"><img loading="lazy" src="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2009/10/img_9161-300x200.jpg" alt="Bernie&#039;s desk running Linux" title="Bernie&#039;s desk running Linux" width="300" height="200" class="alignleft size-medium wp-image-165" /></a></p>
<p>Click on the picture for more detail.  This is a picture of my work desk today and how I&#8217;m using the <a href="https://plugable.com/products/ud-160-a/">Plugable dock</a> myself.</p>
<p> (yes &#8212; I cleaned off a few books and papers &#8212; it&#8217;s usually much messier!)</p>
<p>My $330 Acer Aspire One Atom 1.6Ghz netbook is on the left &#8212; I like having a very thin, light, and cheap development platform that I can throw in a bag to go to a coffee shop, etc.  But I can&#8217;t stand working on the small 10&#8243; screen all day, so that large screen to the right (21.5&#8243;) is a necessity.  And using the netbook trackpad is right out &#8212; I definitely need a full sized mouse.  The keyboard on the Acer isn&#8217;t that bad, but I like having the slightly larger keys and distance from the screen that the USB keyboard gives me.</p>
<p><p>So what&#8217;s connected to the dock there in the middle?  Up the left hand side, from the bottom, are:</p>
<ul>
<li>Power for the dock</li>
<li>USB from the dock to the netbook (that&#8217;s the same USB cable plugged into the left side of the netbook)</li>
<li>DVI cable to the monitor (being driven by the DisplayLink chip in the dock)</li>
<li>network connection (I&#8217;m using 100Mbs wired ethernet)</li>
<li>USB cable to a printer under the table</li>
<li>USB flash drive</li>
</ul>
<p>On the right hand side of the dock, the two cables are the USB keyboard and mouse.  And on the right side of the netbook are power for the netbook, and a USB cable going down to another device (a SheevaPlug) nearby.</p>
<p>So every time I take my highly portable netbook anywhere &#8212; without the dock, I&#8217;d have 8(!) cables to unplug/replug every time, including a big, fat DVI->VGA cable to screw into the side of my netbook.  Instead, I have 2 or 3 cables, and get connected to a ton of devices &#8212; including the large screen, which absolutely transforms this cheap netbook into something far more functional.</p>
<p>Also, I&#8217;m constantly switching between Windows and Linux, and all I need to do is reboot, and all the devices here can work in both environments. In this pic, I&#8217;m running Linux.  Note that on Windows, there are production drivers that &#8220;just work&#8221; (especially if you have Microsoft&#8217;s Windows Update enabled), While Linux requires some configuration yet, and has limitations &#8212; I&#8217;m only using the one large screen (the netbook screen is a text terminal), and I&#8217;m not using some things like the audio ports there yet.</p>
<p>I&#8217;ve also got a Macbook on the shelf to the left &#8211; plug it in, and again all the devices work, including that extra large display.  The simple ubiquity of USB is extremely compelling with devices like this that have been designed to use components with drivers across all the major platforms.</p>
<p>I love this setup &#8211; it&#8217;s far better with the dock than without it.  Over the next few weeks, as Windows 7 launches, etc., look for more posts here on how to use the dock in these different environments.  For example, Windows 7&#8217;s improved Windows Update and driver install are a big step forward that have to be seen to be appreciated.</p>
<p>And by the way, in the picture on the large screen &#8211; you can see firefox on Linux, showing the <a href="https://plugable.com/">Plugable website</a>. and a smaller window, which is a terminal connected over that other USB wire, to a <a href="http://plugcomputer.org/">SheevaPlug</a> which is getting an install of the latest version of Debian.  That&#8217;s another interesting possibility.  More on that later &#8230;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2009/10/13/using-the-plugable-dock/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">166</post-id>	</item>
		<item>
		<title>Emerging Roadmap for Linux Multiseat</title>
		<link>https://plugable.com/2009/10/08/emerging-roadmap-for-linux-multiseat/</link>
					<comments>https://plugable.com/2009/10/08/emerging-roadmap-for-linux-multiseat/#respond</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Thu, 08 Oct 2009 20:00:24 +0000</pubDate>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Terminal]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=152</guid>

					<description><![CDATA[The most common use of the Plugable Docking Station today is to enable a Windows/Mac laptop to plug a single USB cable and gain connectivity to an additional monitor, speakers, network cable, and any other 4 USB devices. But the same hardware can be also used on Linux to extend the computer in a different [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="https://plugable.com/products/ud-160-a"><img loading="lazy" src="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2009/10/2009-09-21-095550-Back-200x300.jpg" alt="Back" title="Back" width="200" height="300" class="alignleft size-medium wp-image-118" /></a>The most common use of the Plugable Docking Station today is to enable a Windows/Mac laptop to plug a single USB cable and gain connectivity to an additional monitor, speakers, network cable, and any other 4 USB devices.</p>
<p>But the same hardware can be also used on Linux to extend the computer in a different way &#8211; provide an second (or 3rd, 4th &#8230;) USB terminal to let several people share that Linux PC. With this $99 device and a spare monitor, keyboard, and mouse, you get an extra PC.</p>
<p><a href="https://plugable.com/products/ud-160-a"><img loading="lazy" src="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2009/10/2009-09-22-195134-fourseats.JPG" alt="Four $99 UD-160-A Terminals off a single $299 netbook" title="Four $99 UD-160-A Terminals off a single $299 netbook" width="720" height="480" class="aligncenter size-full wp-image-153" style="clear:both" srcset="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2009/10/2009-09-22-195134-fourseats.JPG 720w, https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2009/10/2009-09-22-195134-fourseats-300x200.jpg 300w" sizes="(max-width: 720px) 100vw, 720px" /></a><br />
<img loading="lazy" src="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2009/10/2009-09-22-200342-Edubuntu-300x200.jpg" alt="usb multiseat with Edubuntu" title="usb multiseat with Edubuntu" width="300" height="200" class="alignleft size-medium wp-image-162" srcset="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2009/10/2009-09-22-200342-Edubuntu-300x200.jpg 300w, https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2009/10/2009-09-22-200342-Edubuntu-1024x682.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>Here we have 4 UD-160-A terminals connected to a single netbook, using <a href="http://libdlo.freedesktop.org/wiki/MultiSeatTerminal">existing open source drivers and instructions.</a></p>
<p>But this area of Linux is in flux, and some of the underlying mechanisms used by that demo (particularly gdmdynamic) are being deprecated.</p>
<p>So what&#8217;s the way forward for plug and play multiseat on Linux? This touches many components, so the discussion is happening in several places, but the <a href="http://lists.freedesktop.org/archives/consolekit/2009-October/date.html">recent discussions on the ConsoleKit mailing list</a> is probably the best summary.</p>
<p>When this support is integrated widely into the various Linux distros,  you&#8217;ll be able to plug in a device like the UD-160-A and have it automatically pop up a login (from the user perspective, apparently power on whole additional computer).</p>
<p>And that&#8217;s when this flexible, multi-use device gets even more interesting &#8230;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2009/10/08/emerging-roadmap-for-linux-multiseat/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">152</post-id>	</item>
		<item>
		<title>Plug and play multiseat presentation</title>
		<link>https://plugable.com/2009/09/22/plug-and-play-multiseat-presentation/</link>
					<comments>https://plugable.com/2009/09/22/plug-and-play-multiseat-presentation/#respond</comments>
		
		<dc:creator><![CDATA[Bernie Thompson]]></dc:creator>
		<pubDate>Wed, 23 Sep 2009 06:04:07 +0000</pubDate>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Planet Freedesktop]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[ud-160-m]]></category>
		<guid isPermaLink="false">http://plugable.com/?p=34</guid>

					<description><![CDATA[In getting more background from this talk, it was great to review the videos on ndiyo.org and displaylink.org with all the history and background on the concept of low-cost multiseat.  Didn&#8217;t want too much history in slides, but it will come up verbally, and it&#8217;s a rich and interesting history. The one comment the presentation [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>In getting more background from this talk, it was great to review the videos on ndiyo.org and displaylink.org with all the history and background on the concept of low-cost multiseat.  Didn&#8217;t want too much history in slides, but it will come up verbally, and it&#8217;s a rich and interesting history.</p>
<p>The one comment the presentation generated was &#8220;what happened to all the other people on earth?&#8221; <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><a href="https://d37zrt9wnah8io.cloudfront.net/wp-content/uploads/2009/09/Linux-Plumbers-2009-Plug-And-Play-Multiseat.pdf">Plug and Play Multiseat</a> &#8211; Sides for Linux Plumbers Conference BoF Sept 23, 2009.</p>
<p>Hopefully the outcome of the conference will be more awareness and energy directed towards making this stuff &#8220;just work&#8221;.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://plugable.com/2009/09/22/plug-and-play-multiseat-presentation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">34</post-id>	</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/

Object Caching 126/726 objects using disk
Page Caching using disk: enhanced 
Content Delivery Network via Amazon Web Services: CloudFront: d37zrt9wnah8io.cloudfront.net

Served from: plugable.com @ 2020-12-22 07:15:53 by W3 Total Cache
-->