Linux and the Mimo 710S

The Mimo 710S is a small-ish LCD panel (7" diameter) that connects to your computer via a USB cable and acts as a monitor.  It uses DisplayLink as a protocol.  After some trial and tribulation, I got it set up and working with Ubuntu 10.10, and here is how I did it.

First, you need the udlfb kernel module, and the displaylink xorg driver.  One of the best tutorials is provided by mulchman; I won’t repeat what he says, although I will point out that he has you reboot your computer in the middle of the install, and that this was entirely unnecessary (I didn’t).  It’s all pretty easy; install some build tools if you don’t already have them, get the udlfb sources, and build and install the two parts.  There are no pre-built packages for Ubuntu (as of the time of this writing).

That was the easy part.  I had no problem getting the device registered, and the test cases packaged with udlfb worked immediately.  My problem was getting something useful onto the device.

I had a number of issues.  First, I didn’t want to use Xinerama, because Xinerama imposes a bit-depth limitation (all displays under Xinerama must share the same bit depth; the Mimo has a max depth of 16 bits, and my graphics card doesn’t want to do anything less than 24).  Second, I have to use the fglrx drivers, because xmonad – the very finest window manager, ever – doesn’t work on two screens properly without Xinerama.  Third, fglrx crashes when it’s paired with a displaylink device.  I didn’t dig into this very far; it’s a pretty hard core-dump, though – it’s proprietary software, so that’s to be expected.  This combination of limitations (and it took me a while to discover all of them, let me tell you) drove my final solution, which I’m happy to say works just fine.

What I ended up with is two xserver instances – one basically my pre-Mimo instance, and one a new instance for just the Mimo – tied together with Synergy.  If you don’t know Synergy, go download it, now.  It ranks among the most useful pieces of software, ever.  It runs on Windows, Linux, and OSX, and lets you share a keyboard and mouse between multiple computers (or, as it happens, xservers) like a software KVM.

Anyway, here are the bits.  First, you need to add a mimo section to your xorg.  I just tacked this on to the end of mine:

########################################
# DisplayLink Screen
########################################
Section "ServerLayout"
  Identifier "Mimo Layout"
  Screen 0 "DisplayLinkScreen" 0 0
  Option "AutoAddDevices" "false"
  Option "AllowEmptyInput" "true"
  Option "AutoEnableDevices" "false"
EndSection

Section "Device"
  Identifier "DisplayLinkDevice"
  Driver "displaylink"
  Option "fbdev" "/dev/fb1"
EndSection

Section "Monitor"
  Identifier "DisplayLinkMonitor"
  DisplaySize 152 92
EndSection

Section "Screen"
  Identifier "DisplayLinkScreen"
  Device "DisplayLinkDevice"
  Monitor "DisplayLinkMonitor"
  DefaultDepth 16

  SubSection "Display"
    Viewport 0 0
    Depth 16
    Modes "800x480"
  EndSubSection
EndSection

The next bit is a script that looks like this:

#!/bin/sh

X -nolisten tcp -novtswitch -sharevts -layout "Mimo Layout" :1 &
synergys --config .synergyl --display :0 --name big --daemon
synergyc --display :1 --name little -f localhost &
DISPLAY=:1 xmonad &

The first piece of magic starts X in multihead mode; the -novtswitch argument is fricken’ critical; without it, you’re locked out of your computer.  At least, I was.  Once that’s up, X is running on the Mimo, and you can now start synergys (server) on your main display (:0), and synergyc (client) on your Mimo display (:1), which allows you access to that second xserver with your input devices.  I won’t describe how to configure synergy; you can figure that out better from the synergy documentation.  Suffice it to say that the [–name]{.Apple-style-span style=“font-family: ‘Courier New’, Courier, monospace;”} arguments have to match what’s in the file.  The final line starts up another xmonad (or whatever window manager you like) on the second xserver.  And voila:

That’s the Mimo to the left, in case you couldn’t tell.  I run an IRC/IM client (irssi) on it, and it’s perfect – the chat’s always visible.  Here’s another shot with xlock(s) running:

For $100-some bucks, it’s not a bad investment.

Oh, that’s a fairly decent Dell under the Mimo, but it has Windows 7 on it, and so is practically useless.