Tag Archives: amazon:asin=B004PXPPNA

One Fedora 17 Box up to 16 USB Multiseat Terminals

Fedora 17, as shipped, supports only 7 or 8 plug-and-play USB terminals per machine. The cause is the kernel evdev driver’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 | grep name; done

On the Fedora 17 multiseat box I’m using now to write this post, I have 3 USB terminals sharing one box — while I’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:

    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

This shows I only have 14 evdev slots left (the “device node not found” ones are available slots). So I know I could only connect 7 terminals total to this machine (a USB terminal’s unused audio buttons + keyboard + mouse takes up 3, I could only get 14 / 3 = 4 more than the three I have).

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.

Note that this will mean you’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.

To apply these optimizations, create a system file (as sudo) called /usr/lib/udev/rules.d/72-seat.rules
with the following contents and reboot.

# 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'"

After creating that udev rule and rebooting, things look much more favorable in terms of evdev slots. Only the “real” USB keyboards and mice are left to consume slots:

    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

There are now enough free slots for 16 USB terminals (or, more specifically, their keyboards and mice).

Hopefully this is just a temporary workaround, until someone tackles the task of lifting the kernel’s limit of 32 evdev devices. That’s a very constraining limit for a whole host of reasons.

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.

Hopefully in future versions of Fedora / systemd, those race conditions will be closed.

Hope you enjoy turning your one Fedora 17 PC into many. Please comment if you have any problems applying, we’ll try to help. See also our post on some huge Fedora 17 performance optimizations for USB multiseat which greatly improve the default experience.

And if you’re running more than 8 terminals with Fedora 17, please post a comment – we’d love to hear about it!

Dconf configuration: GNOME 3 Fallback Mode

The Linux GNOME 3 UI assumes you have a beefy 3D GPU and capable driver, which can cause problems when that isn’t the case.

Individual GNOME 3 users can fix this by setting their desktop experience to GNOME 3 “fallback mode” 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.)

It’s possible to configure fallback mode for all users, plus the login screens, centrally by changing some dconf settings. Here’s how:

First, if you don’t already have a “user” profile, then we create one — specifying a new settings database we’ll call “fallback”. Create a file /etc/dconf/profile/user (as su / sudo) which contains these two lines:


Then we’ll create the settings directories for that new database

sudo mkdir /etc/dconf/db/fallback.d
sudo mkdir /etc/dconf/db/fallback.d/locks

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:


show-desktop-icons = true

# This one is useful more for automatic USB multiseat
disable-user-switching = true

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:


dconf is a binary settings database (very un-unix like), so for any of these changes to take effect, you must run

sudo dconf update

Which will update the binary blobs which are then queried by GNOME to apply these settings. See the dconf admin guide for more.

And that should do it. You should see the fallback look and feel (more like GNOME 2). And if you’re running in a VM, with USB multiseat, or anywhere you don’t access to a beefy 3D processor — you should see a big drop in CPU usage.

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.

Plugable USB 2.0 Multiseat Zero Client for Windows Multipoint Server and Fedora Linux (DisplayLink D... Product Details

New Distros and Linux Automatic USB Multiseat Support

OpenSUSE and ArchLinux appear to be making good progress on integrating the latest version of systemd, which is a central element of Linux’s new Automatic USB multiseat support — 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 in time.

For now, the best bet is the distro under which support was first developed — Fedora 17 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.

Plugable DC-125 USB 2.0 Multiseat Zero Client for Windows Multipoint Server and Fedora Linux (VGA up... Product Details

Putting America’s Makers Out of Business

The US Congress is now considering legislation requiring sales tax collection for most online sales.

Requiring sales tax for online purchases isn’t a bad thing. Unfortunately, the current legislation has the potential to kill small, online businesses — innovative companies like Sparkfun, Makerbot, Adafruit, and many more.

These kinds of companies are America’s best hope for reinventing our manufacturing sector, particularly in electronics and high tech. Yet we’re about to crush them under a mountain of paperwork.

The proposal with momentum would create a national sales tax for online purchases but allow different regulations and rates in every state. For small online sellers, navigating the U.S. tax system would become more complex and bureaucratic than dealing with Europe’s VAT system (we know, we have to deal with them both).

The only way to change course is if more of us stand up now and engage in the legislative process to fight off this legislation. We need a single national process for state sales-tax filing, remittance, and auditing. Don’t allow small business to be killed by 46 states worth of regulation.

Please contact your representatives (House, Senate) and say “No Internet sales tax without a unified system. Don’t kill America’s small online businesses!”

For those who are curious on the detail, here is more background.

There has been much discussion of whether online sales should be taxed, and whether the calculation of this country’s 9600 or so different sales tax rates (based on shipping destination) creates an undue burden on sellers.

But that’s not the real issue.

The real issue is a Walmart or an Amazon can afford (and already has) thousands of lawyers and accountants. The burden of having to file a sales tax return with 46 different states every month or every quarter doesn’t scare them (it’s actually 45 states + DC — 5 states don’t have a sales tax). Hundreds of checks going out each year isn’t a problem. Understanding the complex and subtle differences in regulations of 46 different states is difficult, but doable for them. The ability for those states to demand your financial records and interview you for audit — they’re used to that risk and pain.

But for the small company who has created a unique, innovative product and needs to sell it nationwide to have it reach its market — these burdens are a killer.

It’s particularly so for innovative new startup mechanisms like KickStarter — projects like Printrbot or MaKey MaKey would potentially have to tackle 46 states’ worth of regulations to ship their products to customers (and comply with all laws in doing it). These innovations could be stillborn.

For Plugable, we already spend several days a quarter filing an 8-page sales tax return with 328 different calculated values for different city and county tax districts in the State of Washington. Some states are simpler, but we’re looking at having that burden be multiplied by as much as 20 fold (assuming some of the 46 states adopt a truly unified system voluntarily). And this doesn’t even count the initial reading and remembering each states’ rules and filing procedures — just one state can be weeks of initial preparations and ongoing complexity.

Here’s what’s wrong and how we can fix it:

1. The current legislation punts on making states truly simplify and unify their regulations, subjecting everyone who sells online to the crushing complexity of complying with the demands of up to 46 different taxing entities.

There are actually two bills in committee — one which tries to protect small business from getting killed by complexity, and one that does not.

The “Marketplace Fairness Act” is the bad guy — it punts on true simplification. It has a clause (3b) which cops out and lets every state have their way with businesses in every other state around the country, with minimal simplification. Yet it is this version of the bill that appears to have momentum. Please call or email your representative to vote against S. 1832 (H.R. 2701), or at least to amend it to remove section 3(b).

Whereas, the “Main Street Fairness Act” at least requires states to present a single point for filing, paying, and auditing, though the Streamlined Sales Tax Governing Board. This bill is not perfect, but at least tries to deal with the massive burden sales tax collection imposes on small business — a burden so severe that it caused the Supreme Court to originally rule that forcing small businesses nationwide to become tax collectors for each state, to be a violation of the Constitution’s Commerce Clause (Quill 1992).

What to do: Contact your representatives (House, Senate) to make simplification a precondition for requiring sales tax collection by small business — a single national point of contact for state sales tax filing, remittance, and auditing. Don’t allow small business to be killed by 46 states worth of regulation.

2. The current legislation exempts any sellers with annual sales of $500K or less. This figure is too low. A company with annual revenues of $1 million or even $10 million still doesn’t have the resources of an online company that sells billions of dollars of goods every year.

What to do: Contact your representatives (House, Senate) to fight for
a higher exclusion for small business. Don’t let the big online retailers fight for regulations that could kill off their smaller competitors.

Much of this appears esoteric. But this is actually a key fight for American innovation. Thanks for your support of America’s small businesses that sell online.

Bernie Thompson
Founder, Plugable Technologies

DisplayLink USB Devices on Linux Kernel 3.4.0

Linux kernel 3.4.0 is the first to include a new driver for DisplayLink-based USB 2.0 devices, called “udl”. udl is a port of the udlfb driver to Linux’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.

Both the new “udl”, and older “udlfb” 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 (“udlfb” or “udl”) is getting loaded with lsmod:

lsmod | grep "udl"

This change has a particular impact with Fedora 17 — the first open source distro to have automatic USB multiseat support — which shipped with Linux kernel 3.3.

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’t come up. To the user, it appears to break multiseat.

So to fix the issues you’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:

echo "blacklist udl" | sudo tee --append /etc/modprobe.d/udlfb.conf
sudo depmod -a
sudo dracut -f /boot/initramfs-$(uname -r).img $(uname -r)

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.

Plugable DC-125 USB 2.0 Multiseat Zero Client for Windows Multipoint Server and Fedora Linux (VGA up... Product Details

Fedora 17′s Secret Turbo Boost Button

Fedora 17′s out-of-the-box plug and play USB multiseat is awesome for sharing one system with many users — but there’s a way to dramatically boost performance and scalability, by changing the Fedora defaults.


Fedora 17 continues to default to GNOME 3, which assumes the presence of powerful 3D hardware.

If that’s not the case (e.g. in a VM, or with Fedora 17′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.

That’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’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 “fall back mode” (which depends less on 3D composting for eye candy), having 5-6 users even on a dual core Atom system is no problem. It’s a dramatic performance difference.

You can tell if Fedora 17 is running llvmpipe by opening “System Settings”, and then “Details”

Then click on the “Graphics” tab. If it shows a driver of Gallium on llvmpipe, and “Standard” experience, then you’re in this mode where you’ll see high CPU usage at all times (even when no graphics appear to be changing!) because of GNOME 3′s 3D effects.

How to boost performance

But by hitting the “Forced Fallback Mode” switch to on, you can drop the GNOME 3 UI, enormously reduce your CPU load, and get a user experience that’s closer to what people are used to (more GNOME 2 like — has a task bar, potential for desktop icons, etc.). Maybe they should have renamed the setting …

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’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 configuring all users for GNOME 3 fallback.

Plugable DC-125 USB 2.0 Multiseat Zero Client for Windows Multipoint Server and Fedora Linux (VGA up... Product Details

Fedora 17 USB Multiseat Compatible Hardware

[Update 5/28/2012 Fedora 17 has been released and supports the Plugable DC-125 and UD-160-M/A out of the box! Download the iso image here. And the steps below have been updated to reflect all the fixes in F17 final.]

The Plugable $50 thin client KickStarter project is growing.

But we need early adopters so we have people using the solution, finding and fixing problems, and helping to spread the word. What we deliver now might not include some KickStarter extras and will be higher priced than through the KickStarter project, but it will include all the components and will work with Fedora 17 Beta.


Interested in getting your hardware now? If you’re in the USA, here’s what will work with Fedora 17 Beta:

UD-160-M USB Thin Client
DC-125 USB 2.0 Docking Station / Zero Client

International Shipping Options

Both the DC-125 and UD-160-M may also be ordered from our Plugable International Shipping Store with $16.95 via USPS Flat Rate Priority shipping from the USA.

If you’ve never ordered and had an item shipped from the USA before via the US Postal Service, please research the rules in your country. We declare the actual value of all items, so in some countries customs and/or VAT taxes are collected, and all of those are paid by the recipient once the items arrive in country. And also note that while every shipment will have a tracking number, the tracking is generally poor once the item has left the USA.


You can download Fedora 17 here. The default download (GNOME Desktop) and spins derived from it support automatic USB multiseat. KDE and other spins do not.

Install F17 to the hard drive of an available machine. For 3-4 thin clients, you can use a spare older machine – we’d recommend a minimum machine with 2GB RAM and 2 cores or 2 GHz or more. For best performance, use an Core i3/i5 class processor with at least 4GB of DDR3 RAM or more.

Any recent Plugable UD-160-A/M or DC-125 thin client you plug in should automatically pop up a new login.

Comment here or email support@plugable.com if you have any trouble at all – we’d be happy to help! And thanks in advance to the early users who help find issues and spread the word about how cool this technology can be!


The $50 Thin Client

Imagine if you could easily share one computer with a whole class, your whole family, the whole office.

We believe this makes a lot of sense. It saves a lot of time and money. It lowers the environmental impact of computing.

The way we can make this truly compelling is with low cost USB thin clients and zero software licensing fees. So we’ve launched a KickStarter project to try to push this concept over the finish line.

We’d love to have you involved! Visit the Plugable Thin Client on KickStarter to learn more.

And to hear what others are saying, check out:

Plugable USB 2.0 Multiseat Zero Client for Windows Multipoint Server and Fedora Linux (DisplayLink D... Product Details

Howto: DisplayLink USB Single Monitor on Linux

Unfortunately, Linux doesn’t support multiple graphics adapters the way Windows does, which means you can’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 configuration — just as long as you don’t expect to use your main GPU at the same time.

The single-display case is relatively easy to set up, and we’ll cover that here.

First, make sure you’re running kernel version 2.6.35 or later (Ubuntu 10.10 or later). For older kernel versions, you’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.

Second, if you are running Unity Desktop in Ubuntu 11.04 or later, you’ll need to switch back to Classic Mode so you’re running straight X. Here’s how on Ubuntu:

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.

Third, if you’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

and add the single line

options udlfb fb_defio=1

And reboot (or run “sudo depmod -a” 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+.

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

Section "Device" 
  Identifier "uga" 
  driver "fbdev" 
  Option "fbdev" "/dev/fb0" 
  Option "ShadowFB" "off"

Section "Monitor" 
  Identifier "monitor" 

Section "Screen" 
  Identifier "screen" 
  Device "uga" 
  Monitor "monitor" 

Section "ServerLayout" 
  Identifier "default" 
  Screen 0 "screen" 0 0 

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 “Device” section above to /dev/fb1

Now, on reboot, you should (hopefully!) see your login come up on your DisplayLink USB attached display!

This kind of simple setup is useful for:

  • Testing or playing with your USB graphics adatper on Linux.
  • Embedded systems with USB but no GPU.
  • As a backup method when the main GPU or its driver isn’t available or working.
  • Systems where a USB graphics adapter enables higher modes (up to 2048×1152) than the main GPU screen.

Please comment if you have any trouble with this single display case. See our past posts for additional information about the DisplayLink Linux kernel driver and some more involved setups.

The instructed here work on all Plugable USB 2.0 graphics adapters and Plugable USB 2.0 docking stations and thin clients (and should also generally work on all DisplayLink based products).


Choosing a Docking Station

We offer 2 models of Universal Docking Station, and often get questions about which one to buy. Here’s a side-by-side comparison. Let us know if you have any questions!

Both enable adding an extra monitor, speakers, and other devices to any brand of laptop (no more expensive proprietary docks!) with a single USB cable to dock and undock.

If you’re a user of Windows Multipoint Server or Userful Multiseat Linux, these same docks can also act as a low-cost USB terminal to enable many users to share one computer.

Product Plugable DC-125  USB 2.0 Docking Client Plugable USB 2.0 Universal Laptop Docking Station
Model number DC-125 UD-160-A
Host Interface USB 2.0 USB 2.0
Graphics DisplayLink DL-125 DisplayLink DL-165
Resolution Up to 1440×900 or 1280×1024 Up to 1920×1080 or 1600×1200
Video Interface VGA DVI or VGA with adapter (included)
Free USB ports 2 4
Ethernet No 10/100 Base–T Ethernet RJ-45
Audio 1 ea. 3.5mm stereo Headphone and stereo Microphone Jack 1 ea. 3.5mm stereo Headphone and stereo Microphone Jack
Power USB bus powered (devices share 0.5A) 2.5A External Power Supply (included)
Special features Includes both VESA mount for back of monitor, and desktop mount; includes extra-long 5 meter USB cable; Eliminates clutter with a single USB cable delivering both power and data to the dock — the trade-off is the 2 free ports have enough power for wired keyboard, mouse, or self-powered devices only Separate power adapter enables daisy-chaining, charging, and connection of devices which require maximum bus power

Where to buy

Plugable DC-125 USB 2.0 Multiseat Zero Client for Windows Multipoint Server and Fedora Linux (VGA up... Product Details