<?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/"
	>

<channel>
	<title>Plugable &#187; Installing</title>
	<atom:link href="http://plugable.com/category/user/installing/feed/" rel="self" type="application/rss+xml" />
	<link>http://plugable.com</link>
	<description>Do more with one simple USB cable</description>
	<lastBuildDate>Fri, 02 Jul 2010 19:23:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>DisplayLink Snow Leopard 64-bit Support in Beta</title>
		<link>http://plugable.com/2010/03/22/displaylink-snow-leopard-64-bit-support-in-beta/</link>
		<comments>http://plugable.com/2010/03/22/displaylink-snow-leopard-64-bit-support-in-beta/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 07:14:50 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[Installing]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[UD-160-A]]></category>
		<category><![CDATA[UGA-2K-A]]></category>

		<guid isPermaLink="false">http://plugable.com/?p=724</guid>
		<description><![CDATA[DisplayLink has just released an updated beta OS X driver with Snow Leopard 64-bit support. Previously, Snow Leopard users had to be careful to stick with a 32-bit kernel to use DisplayLink devices. This driver removes that limitation. The beta drivers are available from DisplayLink here: http://displaylink.org/forum/showthread.php?t=268 These drivers work on all of Plugable&#8217;s laptop [...]]]></description>
			<content:encoded><![CDATA[<p>DisplayLink has just released an updated beta OS X driver with Snow Leopard 64-bit support.</p>
<p>Previously, Snow Leopard users had to be careful to stick with a 32-bit kernel to use DisplayLink devices. This driver removes that limitation.</p>
<p>The beta drivers are available from DisplayLink here: <a href="http://displaylink.org/forum/showthread.php?t=268">http://displaylink.org/forum/showthread.php?t=268</a></p>
<p>These drivers work on all of Plugable&#8217;s laptop docking and graphics adapter products (UD-160-A and UGA-2K-A).  Note that this driver is still in beta, and has limitations which are noted below in DisplayLink&#8217;s release notes.</p>
<hr/>
<p><strong>DisplayLink Mac OS X Software Release: External Release Note</strong></p>
<p>Version: 1.6b1 (23745)<br />
Date: 18th March 2010</p>
<p><strong>Improvements over the DisplayLink Mac OS X Software 1.5 release</strong></p>
<p>    * Snow Leopard (64 Bit) Support</p>
<p>More information on how to use this software can be found in the Mac OS X User Guide found on the DisplayLink website (<a target="_blank" href="http://www.displaylink.com/mac">http://www.displaylink.com/mac</a>)</p>
<p><strong>Supported Operating Systems</strong></p>
<p>The DisplayLink software can be installed on any Intel-based desktop<br />
or laptop Apple Mac computer running client versions of Mac OS X Snow Leopard 10.6.2 (32 and 64 bit versions), Mac OS X Leopard 10.5.8 and Mac OS X Tiger 10.4.11.</p>
<p>Note that at the time of writing these were the latest available versions of Mac OS X tested against.</p>
<p><strong>Supported Mac platforms</strong></p>
<p>This software supports all Intel-based Macs.  It does not support Power-PC based Macs.</p>
<p><strong>Known Issues</strong></p>
<p>This is a DisplayLink driver release that supports 2D acceleration on Mac OS X platforms. This software has some limitations:</p>
<p>    * No 3D (OpenGL) acceleration &#8211; some features of Mac OS X applications that require hardware OpenGL<br />
      acceleration, such as Keynote presentations and iPhoto slideshows, will not function properly.</p>
<p>    * Colour calibration does not work with DisplayLink enabled displays on Mac OS X versions prior to 10.6.2</p>
<p>Note: Applications that require Quartz OpenGL hardware acceleration support will likely exhibit problems with this version of DisplayLink software. Some problems can be avoided by making sure the DisplayLink display is not set to be the main display (the display with the menu bar) If an application refuses to launch when a DisplayLink display is present, try to disconnect all the DisplayLink displays, then launch it and then reconnect the displays.</p>
]]></content:encoded>
			<wfw:commentRss>http://plugable.com/2010/03/22/displaylink-snow-leopard-64-bit-support-in-beta/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Upgraded Plugable Universal Docking Station</title>
		<link>http://plugable.com/2010/03/06/upgraded-plugable-universal-docking-station/</link>
		<comments>http://plugable.com/2010/03/06/upgraded-plugable-universal-docking-station/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 18:29:47 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[Installing]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[UD-160-A]]></category>
		<category><![CDATA[Windows]]></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 [...]]]></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 src="http://plugable.com/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" /><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>http://plugable.com/2010/03/06/upgraded-plugable-universal-docking-station/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Win7 Plug and Play with the UGA-2K-A</title>
		<link>http://plugable.com/2010/03/05/win7-plug-and-play-with-the-uga-2k-a/</link>
		<comments>http://plugable.com/2010/03/05/win7-plug-and-play-with-the-uga-2k-a/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 07:31:22 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[Installing]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[UGA-2K-A]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://plugable.com/?p=591</guid>
		<description><![CDATA[Attach your new Plugable USB graphics adapter to a Win 7 PC. What happens? .. driver is found and downloaded from Microsoft&#8217;s Windows Update system&#8230; &#8230; and a DisplayLink EULA and a bunch of screen flashes later &#8230; Windows 7 and a network connection takes care of it. No driver disk needed.]]></description>
			<content:encoded><![CDATA[<p>Attach your new Plugable USB graphics adapter to a Win 7 PC.  What happens?</p>
<p><a href="http://plugable.com/wp-content/uploads/2010/03/UGA-2k-a-searching.png"><img src="http://plugable.com/wp-content/uploads/2010/03/UGA-2k-a-searching.png" alt="" title="UGA-2k-a-searching" width="536" height="211" class="alignnone size-full wp-image-592" /></a></p>
<p>.. driver is found and downloaded from Microsoft&#8217;s Windows Update system&#8230;</p>
<p><a href="http://plugable.com/wp-content/uploads/2010/03/uga-2k-a-installing.png"><img src="http://plugable.com/wp-content/uploads/2010/03/uga-2k-a-installing.png" alt="" title="uga-2k-a-installing" width="536" height="181" class="alignnone size-full wp-image-593" /></a></p>
<p>&#8230; and a DisplayLink EULA and a bunch of screen flashes later &#8230;</p>
<p><a href="http://plugable.com/wp-content/uploads/2010/03/UGA-2K-A-Windows-7-Driver-Install-Result.png"><img src="http://plugable.com/wp-content/uploads/2010/03/UGA-2K-A-Windows-7-Driver-Install-Result.png" alt="" title="UGA-2K-A-Windows 7-Driver-Install-Result" width="536" height="181" class="alignnone size-full wp-image-594" /></a></p>
<p>Windows 7 and a network connection takes care of it.  No driver disk needed.</p>
]]></content:encoded>
			<wfw:commentRss>http://plugable.com/2010/03/05/win7-plug-and-play-with-the-uga-2k-a/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enabling Windows Update on Windows XP</title>
		<link>http://plugable.com/2010/02/26/enabling-windows-update-on-windows-xp/</link>
		<comments>http://plugable.com/2010/02/26/enabling-windows-update-on-windows-xp/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 00:20:19 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[Installing]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[UD-160-A]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://plugable.com/?p=502</guid>
		<description><![CDATA[Windows 7 and Vista have Windows Update on by default, as do most recent Windows XP machines. So when a new USB device arrives, the system is able to go out to the Internet and check Microsoft&#8217;s huge library of drivers to find a match &#8212; a great plug and play experience for devices like [...]]]></description>
			<content:encoded><![CDATA[<p>Windows 7 and Vista have Windows Update on by default, as do most recent Windows XP machines. So when a new USB device arrives, the system is able to go out to the Internet and check Microsoft&#8217;s huge library of drivers to find a match &#8212; a great plug and play experience for devices like those we make here at Plugable.</p>
<p>But Windows XP, when it originally shipped in 2001, didn&#8217;t have this capability.  So to enable Windows Update on XP, if you don&#8217;t already have it on, just upgrade to XP Service Pack 2 or later, and follow Microsoft&#8217;s steps: </p>
<ol>
<li>Click Start, click Run, type sysdm.cpl, and then press ENTER.</li>
<li>Click the Automatic Updates tab, and then click to select one of the following options. We recommend that you select the Automatic (recommended) Automatically download recommended updates for my computer and install them option.</li>
</ol>
<p>Microsoft has more information in their knowledge base article at <a href="http://support.microsoft.com/kb/306525">http://support.microsoft.com/kb/306525</a></p>
]]></content:encoded>
			<wfw:commentRss>http://plugable.com/2010/02/26/enabling-windows-update-on-windows-xp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UD-160-A automatic driver download and install via Windows Update</title>
		<link>http://plugable.com/2010/02/21/ud-160-a-automatic-driver-download-and-install-via-windows-update/</link>
		<comments>http://plugable.com/2010/02/21/ud-160-a-automatic-driver-download-and-install-via-windows-update/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 00:44:43 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[Installing]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[UD-160-A]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://plugable.com/?p=452</guid>
		<description><![CDATA[Here’s the result when you connect the Plugable UD-160-A universal laptop docking station to a completely fresh Windows 7 system: Windows automatically finds, downloads, and installs drivers for all the devices on the dock — the built-in USB C-Media audio, ASIX ethernet, DisplayLink graphics functions are all supported. *NO* driver disks to find, no web [...]]]></description>
			<content:encoded><![CDATA[<p>Here’s the result when you connect the Plugable UD-160-A universal laptop docking station to a completely fresh Windows 7 system:</p>
<p><a href="http://plugable.com/wp-content/uploads/2009/10/Windows-Update-Snip-Demo-Config.PNG"><img src="http://plugable.com/wp-content/uploads/2009/10/Windows-Update-Snip-Demo-Config.PNG" alt="" title="Windows Driver Software Installation - UD-160-A" width="540" height="324" class="aligncenter size-full wp-image-192" /></a></p>
<ul>
<li>Windows automatically finds, downloads, and installs drivers for all the devices on the dock — the built-in USB C-Media audio, ASIX ethernet, DisplayLink graphics functions are all supported.</li>
<li>*NO* driver disks to find, no web addresses to enter, nothing – you get the latest drivers automatically.</li>
<li>This will work with the Plugable dock and any Windows 7 machine, now and in the future.</li>
</ul>
<p>If you have Windows Update enabled on Vista and Windows XP &#8211; the story is the same (although Microsoft&#8217;s UI looks different on each OS).  So go ahead, lose your driver disks — just get that off your mind. You won’t need them. Cool.</p>
]]></content:encoded>
			<wfw:commentRss>http://plugable.com/2010/02/21/ud-160-a-automatic-driver-download-and-install-via-windows-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux USB multiseat audio support</title>
		<link>http://plugable.com/2010/01/20/linux-usb-multiseat-audio-support/</link>
		<comments>http://plugable.com/2010/01/20/linux-usb-multiseat-audio-support/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 06:09:48 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[Installing]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[UD-160-A]]></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==&#34;control*&#34;, SUBSYSTEM==&#34;sound&#34;, SUBSYSTEMS==&#34;usb&#34;, PROGRAM=&#34;/bin/cat /sys/%p/../../../../../devnum&#34;, SYMLINK+=&#34;usbseat/%c/sound&#34; Then create a new /etc/X11/Xsession.d/50usbseat file which will [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s how to add audio support on top of the previous instructions for <a href="http://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>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">KERNEL</span>==<span style="color: #ff0000;">&quot;control*&quot;</span>, <span style="color: #007800;">SUBSYSTEM</span>==<span style="color: #ff0000;">&quot;sound&quot;</span>, <span style="color: #007800;">SUBSYSTEMS</span>==<span style="color: #ff0000;">&quot;usb&quot;</span>, <span style="color: #007800;">PROGRAM</span>=<span style="color: #ff0000;">&quot;/bin/cat /sys/%p/../../../../../devnum&quot;</span>, SYMLINK+=<span style="color: #ff0000;">&quot;usbseat/%c/sound&quot;</span></pre></div></div>

<p>Then create a new /etc/X11/Xsession.d/50usbseat file which will be run at Xsession create time, with the following contents</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">oldIFS</span>=<span style="color: #007800;">$IFS</span>
<span style="color: #007800;">IFS</span>=:
<span style="color: #000000; font-weight: bold;">set</span> <span style="color: #007800;">$DISPLAY</span>
<span style="color: #007800;">IFS</span>=.
<span style="color: #000000; font-weight: bold;">set</span> $<span style="color: #000000;">2</span>
<span style="color: #007800;">SEAT_ID</span>=$<span style="color: #000000;">1</span>
<span style="color: #007800;">LN</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-al</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>usbseat<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$SEAT_ID</span><span style="color: #000000; font-weight: bold;">/</span>sound<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #007800;">IFS</span>=C
<span style="color: #000000; font-weight: bold;">set</span> <span style="color: #007800;">$LN</span>
<span style="color: #007800;">CARD_ID</span>=$<span style="color: #000000;">2</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">ALSA_CARD</span>=$<span style="color: #000000;">2</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">ALSA_PCM_CARD</span>=$<span style="color: #000000;">2</span>
<span style="color: #007800;">IFS</span>=<span style="color: #007800;">$oldIFS</span></pre></div></div>

<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>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>group <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>group_backup
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> a-wx <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>group_backup
<span style="color: #c20cb9; font-weight: bold;">sudo</span> adduser MY_USERNAME audio</pre></div></div>

<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>http://plugable.com/2010/01/20/linux-usb-multiseat-audio-support/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Setting up USB multiseat with DisplayLink on Linux (GDM up to 2.20)</title>
		<link>http://plugable.com/2009/11/16/setting-up-usb-multiseat-with-displaylink-on-linux-gdm-up-to-2-20/</link>
		<comments>http://plugable.com/2009/11/16/setting-up-usb-multiseat-with-displaylink-on-linux-gdm-up-to-2-20/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 23:55:17 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[Installing]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[UD-160-A]]></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 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://plugable.com/wp-content/uploads/2009/10/2009-09-22-195134-fourseats.JPG"><img src="http://plugable.com/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>
<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 your specific distro are definitely welcome in the comments.</p>
<p><a href="http://plugable.com/products/ud-160-a/" target="_blank"><img src="http://plugable.com/wp-content/uploads/2010/02/plugable-ud-160-a1-150x150.png" alt="" title="plugable-ud-160-a" width="150" height="150" class="alignleft size-thumbnail wp-image-415" /></a>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/ud-160-a/" target="_blank">Plugable Universal Docking Station</a>, or buy independent devices like the <a href="/products/uga-125-hub/" target="_blank">UGA-125-HUB</a> bundle.  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're ready to start configuring your Linux setup  ...</p>
<h3>1. DisplayLink framebuffer driver</h3>
<p>udlfb is in the staging tree of Linux kernels 2.6.32 and later.  We'll install the latest version here.  First, make sure you have git installed with "sudo apt-get install git-core", and create a directory which will host all the source code you download with git (e.g. ~/git/).</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> module-assistant
<span style="color: #c20cb9; font-weight: bold;">sudo</span> module-assistant prepare
git clone http:<span style="color: #000000; font-weight: bold;">//</span>git.plugable.com<span style="color: #000000; font-weight: bold;">/</span>webdav<span style="color: #000000; font-weight: bold;">/</span>udlfb<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> udlfb
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> depmod <span style="color: #660033;">-a</span></pre></div></div>

<p>Now, when you plug in a DisplayLink device, you should see a "green screen" as the driver successfully loads and sets the graphics mode to match your monitor.  </p>
<h3>2. DisplayLink X server</h3>
<p>This will get the X server installed, ready for use by later scripts.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> pkg-config xorg-dev
<span style="color: #7a0874; font-weight: bold;">cd</span> ~git
git clone http:<span style="color: #000000; font-weight: bold;">//</span>git.plugable.com<span style="color: #000000; font-weight: bold;">/</span>webdav<span style="color: #000000; font-weight: bold;">/</span>xf-video-udlfb<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> xf-video-udlfb
.<span style="color: #000000; font-weight: bold;">/</span>configure
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></div></div>

<p>We now need to create or modify a few scripts and configuration files.  You'll need to use sudo to edit files in these system directories.  You can cut/paste the text below, or download the files with "git clone http://git.plugable.com/webdav/misc-udlfb/" and copy each to the right location, and fix up ownership and permissions on the files.</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>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># set all DisplayLink devices to configuration 1</span>
<span style="color: #666666; font-style: italic;"># see http://libdlo.freedesktop.org/wiki/DeviceQuirks for more info</span>
ATTR<span style="color: #7a0874; font-weight: bold;">&#123;</span>idVendor<span style="color: #7a0874; font-weight: bold;">&#125;</span>==<span style="color: #ff0000;">&quot;17e9&quot;</span>, ATTR<span style="color: #7a0874; font-weight: bold;">&#123;</span>bConfigurationValue<span style="color: #7a0874; font-weight: bold;">&#125;</span>==<span style="color: #ff0000;">&quot;2&quot;</span>, <span style="color: #007800;">RUN</span>=<span style="color: #ff0000;">&quot;/bin/echo 1 &gt; /sys%p/bConfigurationValue&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># aliases for display, kbd, mouse attached to specific hubs</span>
&nbsp;
<span style="color: #007800;">KERNEL</span>==<span style="color: #ff0000;">&quot;fb*&quot;</span>,<span style="color: #007800;">SUBSYSTEMS</span>==<span style="color: #ff0000;">&quot;usb&quot;</span>,<span style="color: #007800;">PROGRAM</span>=<span style="color: #ff0000;">&quot;/bin/cat /sys/%p/../../../devnum&quot;</span>,SYMLINK+=<span style="color: #ff0000;">&quot;usbseat/%c/display&quot;</span>,RUN+=<span style="color: #ff0000;">&quot;usbseat.sh %c&quot;</span>
<span style="color: #007800;">KERNEL</span>==<span style="color: #ff0000;">&quot;mouse*&quot;</span>, <span style="color: #007800;">SUBSYSTEMS</span>==<span style="color: #ff0000;">&quot;usb&quot;</span>, ATTRS<span style="color: #7a0874; font-weight: bold;">&#123;</span>bInterfaceClass<span style="color: #7a0874; font-weight: bold;">&#125;</span>==<span style="color: #ff0000;">&quot;03&quot;</span>, ATTRS<span style="color: #7a0874; font-weight: bold;">&#123;</span>bInterfaceProtocol<span style="color: #7a0874; font-weight: bold;">&#125;</span>==<span style="color: #ff0000;">&quot;02&quot;</span>, <span style="color: #007800;">PROGRAM</span>=<span style="color: #ff0000;">&quot;/bin/cat /sys/%p/../../../../../devnum&quot;</span>,SYMLINK+=<span style="color: #ff0000;">&quot;usbseat/%c/mouse&quot;</span>,RUN+=<span style="color: #ff0000;">&quot;usbseat.sh %c&quot;</span>
<span style="color: #007800;">KERNEL</span>==<span style="color: #ff0000;">&quot;event*&quot;</span>, <span style="color: #007800;">SUBSYSTEM</span>==<span style="color: #ff0000;">&quot;input&quot;</span>, ATTRS<span style="color: #7a0874; font-weight: bold;">&#123;</span>bInterfaceClass<span style="color: #7a0874; font-weight: bold;">&#125;</span>==<span style="color: #ff0000;">&quot;03&quot;</span>, ATTRS<span style="color: #7a0874; font-weight: bold;">&#123;</span>bInterfaceProtocol<span style="color: #7a0874; font-weight: bold;">&#125;</span>==<span style="color: #ff0000;">&quot;01&quot;</span>,<span style="color: #007800;">PROGRAM</span>=<span style="color: #ff0000;">&quot;/bin/cat /sys/%p/../../../../../devnum&quot;</span>,SYMLINK+=<span style="color: #ff0000;">&quot;usbseat/%c/keyboard&quot;</span>,RUN+=<span style="color: #ff0000;">&quot;usbseat.sh %c&quot;</span>
<span style="color: #007800;">KERNEL</span>==<span style="color: #ff0000;">&quot;control*&quot;</span>, <span style="color: #007800;">SUBSYSTEM</span>==<span style="color: #ff0000;">&quot;sound&quot;</span>, <span style="color: #007800;">SUBSYSTEMS</span>==<span style="color: #ff0000;">&quot;usb&quot;</span>, <span style="color: #007800;">PROGRAM</span>=<span style="color: #ff0000;">&quot;/bin/cat /sys/%p/../../../../../devnum&quot;</span>, SYMLINK+=<span style="color: #ff0000;">&quot;usbseat/%c/sound&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># 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</span>
<span style="color: #007800;">KERNEL</span>==<span style="color: #ff0000;">&quot;event*&quot;</span>, <span style="color: #007800;">SUBSYSTEM</span>==<span style="color: #ff0000;">&quot;input&quot;</span>, ATTRS<span style="color: #7a0874; font-weight: bold;">&#123;</span>bInterfaceClass<span style="color: #7a0874; font-weight: bold;">&#125;</span>==<span style="color: #ff0000;">&quot;03&quot;</span>, ATTRS<span style="color: #7a0874; font-weight: bold;">&#123;</span>bInterfaceProtocol<span style="color: #7a0874; font-weight: bold;">&#125;</span>==<span style="color: #ff0000;">&quot;01&quot;</span>,<span style="color: #007800;">PROGRAM</span>=<span style="color: #ff0000;">&quot;/bin/cat /sys/%p/../../../../../../devnum&quot;</span>,SYMLINK+=<span style="color: #ff0000;">&quot;usbseat/%c/keyboard&quot;</span>,RUN+=<span style="color: #ff0000;">&quot;usbseat.sh %c&quot;</span>
<span style="color: #007800;">KERNEL</span>==<span style="color: #ff0000;">&quot;mouse*&quot;</span>, <span style="color: #007800;">SUBSYSTEMS</span>==<span style="color: #ff0000;">&quot;usb&quot;</span>, ATTRS<span style="color: #7a0874; font-weight: bold;">&#123;</span>bInterfaceClass<span style="color: #7a0874; font-weight: bold;">&#125;</span>==<span style="color: #ff0000;">&quot;03&quot;</span>, ATTRS<span style="color: #7a0874; font-weight: bold;">&#123;</span>bInterfaceProtocol<span style="color: #7a0874; font-weight: bold;">&#125;</span>==<span style="color: #ff0000;">&quot;02&quot;</span>, <span style="color: #007800;">PROGRAM</span>=<span style="color: #ff0000;">&quot;/bin/cat /sys/%p/../../../../../../devnum&quot;</span>,SYMLINK+=<span style="color: #ff0000;">&quot;usbseat/%c/mouse&quot;</span>,RUN+=<span style="color: #ff0000;">&quot;usbseat.sh %c&quot;</span></pre></div></div>

<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 "sudo chmod a+x" to make the file executable.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #666666; font-style: italic;"># takes the &quot;seat number&quot; as parameter $1</span>
<span style="color: #666666; font-style: italic;"># the seat number is the kernel device id of the hub the seat's devices are sitting off of</span>
<span style="color: #666666; font-style: italic;"># called once for every usb device that MIGHT be part of a seat, when they arrive or remove </span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>-n <span style="color: #000000; font-weight: bold;">`/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">pidof</span> gdm<span style="color: #000000; font-weight: bold;">`</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #007800;">seat_running</span>=<span style="color: #000000; font-weight: bold;">`/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>gdmdynamic <span style="color: #660033;">-l</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #660033;">-n</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;/:$1,/p&quot;</span><span style="color: #000000; font-weight: bold;">`</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># $ACTION environment variable is set by udev subsystem</span>
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$ACTION</span>&quot;</span> <span style="color: #000000; font-weight: bold;">in</span>
	<span style="color: #ff0000;">'remove'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
		<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-n</span> <span style="color: #ff0000;">&quot;{<span style="color: #007800;">$seat_running</span>}&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
			<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>gdmdynamic <span style="color: #660033;">-v</span> <span style="color: #660033;">-d</span> $<span style="color: #000000;">1</span>
		<span style="color: #000000; font-weight: bold;">fi</span>
		<span style="color: #000000; font-weight: bold;">;;</span>
	<span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
                <span style="color: #666666; font-style: italic;"># A device which might be part of a seat has been added</span>
&nbsp;
		<span style="color: #666666; font-style: italic;"># if we already have a running seat for this #, exit</span>
		<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-n</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">${seat_running}</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
			<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span>
		<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
		<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-e</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>usbseat<span style="color: #000000; font-weight: bold;">/</span>$<span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">/</span>keyboard <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #660033;">-e</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>usbseat<span style="color: #000000; font-weight: bold;">/</span>$<span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">/</span>mouse <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #660033;">-e</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>usbseat<span style="color: #000000; font-weight: bold;">/</span>$<span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">/</span>display <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
&nbsp;
			<span style="color: #666666; font-style: italic;"># We have a newly complete seat. Start it.</span>
			<span style="color: #007800;">TMPFILE</span>=<span style="color: #000000; font-weight: bold;">`/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">mktemp</span><span style="color: #000000; font-weight: bold;">`</span> <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
			<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">&quot;s/%ID_SEAT%/$1/g&quot;</span> <span style="color: #000000; font-weight: bold;">&lt;</span> <span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>udev<span style="color: #000000; font-weight: bold;">/</span>usbseat-xf86.conf.sed <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$TMPFILE</span>
			<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>gdmdynamic <span style="color: #660033;">-v</span> <span style="color: #660033;">-t</span> <span style="color: #000000;">2</span> <span style="color: #660033;">-s</span> <span style="color: #000000;">1</span> <span style="color: #660033;">-a</span> <span style="color: #ff0000;">&quot;$1=/usr/X11R6/bin/X -br :$1 -audit 0 -nolisten tcp vt07 -config <span style="color: #007800;">$TMPFILE</span>&quot;</span>
			<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>gdmdynamic <span style="color: #660033;">-v</span> <span style="color: #660033;">-r</span> $<span style="color: #000000;">1</span>
		<span style="color: #000000; font-weight: bold;">fi</span>
		<span style="color: #000000; font-weight: bold;">;;</span>
<span style="color: #000000; font-weight: bold;">esac</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span></pre></div></div>

<h3>5. X config file</h3>
<p>Create file /lib/udev/usbseat-xf86.conf.sed with contents</p>

<div class="wp_syntax"><div class="code"><pre class="xorg_conf" style="font-family:monospace;">&nbsp;
<span style="color: #b1b100;">Section</span> <span style="color: #0000ff;">&quot;ServerFlags&quot;</span>
	<span style="color: #990000;">Option</span>	<span style="color: #0000ff;">&quot;AutoEnableDevices&quot;</span>	<span style="color: #0000ff;">&quot;false&quot;</span>
	<span style="color: #990000;">Option</span>	<span style="color: #0000ff;">&quot;AutoAddDevices&quot;</span>	<span style="color: #0000ff;">&quot;false&quot;</span>
	<span style="color: #990000;">Option</span>  <span style="color: #0000ff;">&quot;DefaultLayout&quot;</span>		<span style="color: #0000ff;">&quot;seat&quot;</span>
	<span style="color: #990000;">Option</span>	<span style="color: #0000ff;">&quot;DontZoom&quot;</span>		<span style="color: #0000ff;">&quot;true&quot;</span>
	<span style="color: #990000;">Option</span>	<span style="color: #0000ff;">&quot;DontZap&quot;</span>		<span style="color: #0000ff;">&quot;true&quot;</span>
	<span style="color: #990000;">Option</span>	<span style="color: #0000ff;">&quot;AllowMouseOpenFail&quot;</span>	<span style="color: #0000ff;">&quot;yes&quot;</span>
<span style="color: #b1b100;">EndSection</span>
&nbsp;
<span style="color: #b1b100;">Section</span> <span style="color: #0000ff;">&quot;Module&quot;</span>
	<span style="color: #990000;">Load</span> <span style="color: #0000ff;">&quot;ddc&quot;</span>
<span style="color: #b1b100;">EndSection</span>
&nbsp;
<span style="color: #b1b100;">Section</span> <span style="color: #0000ff;">&quot;Files&quot;</span>                                                                                                              
    ModulePath      <span style="color: #0000ff;">&quot;/usr/lib/xorg/modules&quot;</span>
    ModulePath      <span style="color: #0000ff;">&quot;/usr/local/lib/xorg/modules&quot;</span>
<span style="color: #b1b100;">EndSection</span>
&nbsp;
<span style="color: #b1b100;">Section</span> <span style="color: #0000ff;">&quot;Device&quot;</span>
	<span style="color: #990000;">Identifier</span> <span style="color: #0000ff;">&quot;dl&quot;</span>
	<span style="color: #990000;">driver</span>	   <span style="color: #0000ff;">&quot;displaylink&quot;</span>
	<span style="color: #990000;">Option</span> <span style="color: #0000ff;">&quot;fbdev&quot;</span>	<span style="color: #0000ff;">&quot;/dev/usbseat/%ID_SEAT%/display&quot;</span>
<span style="color: #b1b100;">EndSection</span>
&nbsp;
<span style="color: #b1b100;">Section</span> <span style="color: #0000ff;">&quot;InputDevice&quot;</span>
	<span style="color: #990000;">Identifier</span> <span style="color: #0000ff;">&quot;keyboard&quot;</span>
	<span style="color: #990000;">Driver</span>	<span style="color: #0000ff;">&quot;evdev&quot;</span>
	<span style="color: #990000;">Option</span>	<span style="color: #0000ff;">&quot;CoreKeyboard&quot;</span>
	<span style="color: #990000;">Option</span>	<span style="color: #0000ff;">&quot;Device&quot;</span>	<span style="color: #0000ff;">&quot;/dev/usbseat/%ID_SEAT%/keyboard&quot;</span>
	<span style="color: #990000;">Option</span>	<span style="color: #0000ff;">&quot;XkbModel&quot;</span>	<span style="color: #0000ff;">&quot;evdev&quot;</span>
	<span style="color: #990000;">Option</span>	<span style="color: #0000ff;">&quot;XkbLayout&quot;</span>	<span style="color: #0000ff;">&quot;us&quot;</span>
<span style="color: #b1b100;">EndSection</span>
&nbsp;
<span style="color: #b1b100;">Section</span> <span style="color: #0000ff;">&quot;InputDevice&quot;</span>
	<span style="color: #990000;">Identifier</span> <span style="color: #0000ff;">&quot;mouse&quot;</span>
	<span style="color: #990000;">Driver</span>	<span style="color: #0000ff;">&quot;mouse&quot;</span>
	<span style="color: #990000;">Option</span>	<span style="color: #0000ff;">&quot;CorePointer&quot;</span>
	<span style="color: #990000;">Option</span>	<span style="color: #0000ff;">&quot;Protocol&quot;</span> <span style="color: #0000ff;">&quot;ImPS/2&quot;</span>
	<span style="color: #990000;">Option</span>	<span style="color: #0000ff;">&quot;Device&quot;</span>	<span style="color: #0000ff;">&quot;/dev/usbseat/%ID_SEAT%/mouse&quot;</span>
        <span style="color: #990000;">Option</span>  <span style="color: #0000ff;">&quot;Buttons&quot;</span> <span style="color: #0000ff;">&quot;5&quot;</span>
	<span style="color: #990000;">Option</span>	<span style="color: #0000ff;">&quot;ZAxisMapping&quot;</span> <span style="color: #0000ff;">&quot;4 5&quot;</span>
<span style="color: #b1b100;">EndSection</span>
&nbsp;
<span style="color: #b1b100;">Section</span> <span style="color: #0000ff;">&quot;Monitor&quot;</span>
	<span style="color: #990000;">Identifier</span> <span style="color: #0000ff;">&quot;monitor&quot;</span>
<span style="color: #b1b100;">EndSection</span>
&nbsp;
<span style="color: #b1b100;">Section</span> <span style="color: #0000ff;">&quot;Screen&quot;</span>
	<span style="color: #990000;">Identifier</span> <span style="color: #0000ff;">&quot;screen&quot;</span>
	<span style="color: #990000;">Device</span> <span style="color: #0000ff;">&quot;dl&quot;</span>
	<span style="color: #990000;">Monitor</span> <span style="color: #0000ff;">&quot;monitor&quot;</span>
<span style="color: #b1b100;">EndSection</span>
&nbsp;
<span style="color: #b1b100;">Section</span> <span style="color: #0000ff;">&quot;ServerLayout&quot;</span>
	<span style="color: #990000;">Identifier</span> <span style="color: #0000ff;">&quot;seat&quot;</span>
	<span style="color: #990000;">Screen</span>	<span style="color: #cc66cc;">0</span> <span style="color: #0000ff;">&quot;screen&quot;</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span> 
	<span style="color: #990000;">InputDevice</span> <span style="color: #0000ff;">&quot;keyboard&quot;</span> <span style="color: #0000ff;">&quot;CoreKeyboard&quot;</span>
	<span style="color: #990000;">InputDevice</span> <span style="color: #0000ff;">&quot;mouse&quot;</span> <span style="color: #0000ff;">&quot;CorePointer&quot;</span>
<span style="color: #b1b100;">EndSection</span></pre></div></div>

<h3>6. fbcon workaround</h3>
<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's not what we want if we're going to be using that framebuffer to run its own X server.  So we need to add a file /etc/modprobe.d/fbcon.conf to disable fbcon and leave our framebuffers free for other uses.</p>

<div class="wp_syntax"><div class="code"><pre class="xorg_conf" style="font-family:monospace;">blacklist font
blacklist tileblit
blacklist bitblit
blacklist fbcon</pre></div></div>

<p>This file will not take effect until you run</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> update-initramfs <span style="color: #660033;">-u</span></pre></div></div>

<p>Now, when you reboot and run "lsmod" you should not see fbcon in the loaded modules.  And in /sys/class/graphics you should see fb0, instead of fbcon.</p>
<h3>7. xrandr workaround</h3>
<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 -- 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>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">XRANDR</span>=<span style="color: #000000; font-weight: bold;">`</span>gdmwhich xrandr<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;x<span style="color: #007800;">$XRANDR</span>&quot;</span> <span style="color: #000000; font-weight: bold;">!</span>= <span style="color: #ff0000;">&quot;x&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
  <span style="color: #007800;">$XRANDR</span> <span style="color: #660033;">-o</span> <span style="color: #000000;">0</span>
<span style="color: #000000; font-weight: bold;">fi</span></pre></div></div>

<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>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">oldIFS</span>=<span style="color: #007800;">$IFS</span>
<span style="color: #007800;">IFS</span>=<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #000000; font-weight: bold;">for</span> seat <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>usbseat<span style="color: #000000; font-weight: bold;">/*</span>; <span style="color: #000000; font-weight: bold;">do</span>
	<span style="color: #000000; font-weight: bold;">set</span> <span style="color: #007800;">$seat</span>
	<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>udev<span style="color: #000000; font-weight: bold;">/</span>usbseat.sh $<span style="color: #000000;">4</span>
<span style="color: #000000; font-weight: bold;">done</span>
<span style="color: #007800;">IFS</span>=<span style="color: #007800;">$oldIFS</span></pre></div></div>

<h3>9. /etc/init.d/gdm patch</h3>
<p>In recent versions of X, the system largely assumes that you'll only run one X server, and it will own all devices.  So to support multiseat with multiple X servers easily, we need to have two configurations: normal (using only your primary graphics), and multiseat (where your primary graphics isn't used).  We do this by detecting whether you have a USB terminal attached and configured, and if so coming up with a different gdm configuration.</p>
<p>Add these lines to your /etc/init.d/gdm script, just after the section to "Allow cdd to override the config" (around line 35).</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Allow usbseat to override the config</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>gdm<span style="color: #000000; font-weight: bold;">/</span>gdm-usbseat.conf <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #000000; font-weight: bold;">for</span> usbseat <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>usbseat<span style="color: #000000; font-weight: bold;">/*</span>; <span style="color: #000000; font-weight: bold;">do</span>
		<span style="color: #007800;">seatid</span>=<span style="color: #800000;">${usbseat##*/}</span>
		<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;/dev/usbseat/<span style="color: #007800;">$seatid</span>/keyboard&quot;</span> <span style="color: #660033;">-a</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;/dev/usbseat/<span style="color: #007800;">$seatid</span>/mouse&quot;</span> <span style="color: #660033;">-a</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;/dev/usbseat/<span style="color: #007800;">$seatid</span>/display&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
			<span style="color: #007800;">CONFIG_FILE</span>=<span style="color: #ff0000;">&quot;--config=/etc/gdm/gdm-usbseat.conf&quot;</span>
		<span style="color: #000000; font-weight: bold;">fi</span>
	<span style="color: #000000; font-weight: bold;">done</span>
<span style="color: #000000; font-weight: bold;">fi</span></pre></div></div>

<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>

<div class="wp_syntax"><div class="code"><pre class="xorg_conf" style="font-family:monospace;"><span class="br0">&#91;</span>daemon<span class="br0">&#93;</span>
DynamicXServers=true
FlexibleXServers=<span style="color: #cc66cc;">0</span>
Greeter=/usr/lib/gdm/gdmgreeter
&nbsp;
<span class="br0">&#91;</span>security<span class="br0">&#93;</span>
&nbsp;
<span class="br0">&#91;</span>xdmcp<span class="br0">&#93;</span>
&nbsp;
<span class="br0">&#91;</span>gui<span class="br0">&#93;</span>
&nbsp;
<span class="br0">&#91;</span>greeter<span class="br0">&#93;</span>
&nbsp;
<span class="br0">&#91;</span>chooser<span class="br0">&#93;</span>
&nbsp;
<span class="br0">&#91;</span>debug<span class="br0">&#93;</span>
&nbsp;
<span class="br0">&#91;</span>servers<span class="br0">&#93;</span>
<span style="color: #cc66cc;">0</span>=inactive</pre></div></div>

<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="http://plugable.com/wp-content/uploads/2009/10/2009-09-22-200342-Edubuntu.JPG"><img src="http://plugable.com/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" /></a></p>
<p>See my video from <a href="http://video.linuxfoundation.org/video/1590">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 "built in" to the distributions, there are at least several major problems yet:</p>
<p><strong>input duplication</strong></p>
<p><em>[Update Feb 19, 2010 - fixed by removing "-sharevts -novtswitch" from the X start line and substituting a specific vt "vt07".  Listing above now has problem resolved]</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't work for me. You can also see a short discussion of this bug at https://fedorahosted.org/pipermail/multiseat/2009-April/date.html  There ought to be a simple solution here -- any comments on that welcome.</p>
<p><strong>mouse scroll wheel doesn't work</strong></p>
<p><em>[Update Feb 19, 2010 - fixed by changing Protocol from "auto" to "ImPS/2" 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'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>http://plugable.com/2009/11/16/setting-up-usb-multiseat-with-displaylink-on-linux-gdm-up-to-2-20/feed/</wfw:commentRss>
		<slash:comments>42</slash:comments>
		</item>
		<item>
		<title>Video of Plugable Dock, DisplayLink, and Win7</title>
		<link>http://plugable.com/2009/10/25/video-of-plugable-dock-displaylink-and-win7/</link>
		<comments>http://plugable.com/2009/10/25/video-of-plugable-dock-displaylink-and-win7/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 06:06:50 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[Evaluating]]></category>
		<category><![CDATA[Installing]]></category>
		<category><![CDATA[Laptop Dock]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[UD-160-A]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://plugable.com/?p=208</guid>
		<description><![CDATA[So what do you get when you take a Windows 7 box and plug in a USB multifunction dock with DisplayLink graphics, C-Media audio, ASIX ethernet, and a few other common USB devices? Without ANY driver disks? A wonderful plug and play experience. See video below for more. Click here for video (like the subliminal [...]]]></description>
			<content:encoded><![CDATA[<p>So what do you get when you take a Windows 7 box and plug in a USB multifunction dock with DisplayLink graphics, C-Media audio, ASIX ethernet, and a few other common USB devices?  Without ANY driver disks?  </p>
<p>A wonderful plug and play experience.  See <a href="http://plugable.com/video/1-PlugableWin7_conv.html">video below</a> for more.</p>
<p><iframe src="http://plugable.com/video/1-PlugableWin7_conv.html" width="670" height="520">
<p><a href="http://plugable.com/video/1-PlugableWin7_conv.html">Click here for video</a></iframe></p>
<p>(like the subliminal message at the end?  I can&#8217;t figure out how to make it go away. <img src='http://plugable.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</p>
]]></content:encoded>
			<wfw:commentRss>http://plugable.com/2009/10/25/video-of-plugable-dock-displaylink-and-win7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows 7 Driver Installation</title>
		<link>http://plugable.com/2009/10/23/windows-7-driver-installation/</link>
		<comments>http://plugable.com/2009/10/23/windows-7-driver-installation/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 16:18:02 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[Installing]]></category>
		<category><![CDATA[Laptop Dock]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[UD-160-A]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://plugable.com/?p=191</guid>
		<description><![CDATA[Windows 7 has now officially launched, and it has significantly improved driver download and installation via Windows Update. Here&#8217;s the result when you connect the Plugable universal laptop docking station to a completely fresh Windows 7 system: Windows automatically finds, downloads, and installs drivers for all the devices on the dock &#8212; the built-in USB [...]]]></description>
			<content:encoded><![CDATA[<p>Windows 7 has now officially launched, and it has significantly improved driver download and installation via Windows Update.</p>
<p>Here&#8217;s the result when you connect the Plugable universal laptop docking station to a completely fresh Windows 7 system:</p>
<p><a href="http://plugable.com/wp-content/uploads/2009/10/Windows-Update-Snip-Demo-Config.PNG"><img src="http://plugable.com/wp-content/uploads/2009/10/Windows-Update-Snip-Demo-Config.PNG" alt="Windows Driver Software Installation - UD-160-A" title="Windows Driver Software Installation - UD-160-A" width="540" height="324" class="alignnone size-full wp-image-192" /></a></p>
<ul>
<li>Windows automatically finds, downloads, and installs drivers for all the devices on the dock &#8212; the built-in USB C-Media audio, ASIX ethernet, DisplayLink graphics functions are all supported. </li>
<li>*NO* driver disks to find, no web addresses to enter, nothing &#8211; you get the latest drivers automatically.</li>
<li>This will work with the Plugable dock and any Windows 7 machine, now and in the future.</li>
</ul>
<p>So go ahead, lose your driver disks &#8212; just get that off your mind.  You won&#8217;t need them.  Cool.<br />
<iframe src="http://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>http://plugable.com/2009/10/23/windows-7-driver-installation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using the Plugable dock</title>
		<link>http://plugable.com/2009/10/13/using-the-plugable-dock/</link>
		<comments>http://plugable.com/2009/10/13/using-the-plugable-dock/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 21:38:39 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[Installing]]></category>
		<category><![CDATA[Laptop Dock]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Platform]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[UD-160-A]]></category>
		<category><![CDATA[Using]]></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 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://plugable.com/wp-content/uploads/2009/10/img_9161.jpg"><img src="http://plugable.com/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="http://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>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&#8242;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="http://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>
<p><iframe src="http://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>http://plugable.com/2009/10/13/using-the-plugable-dock/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
