jamie.lentin.co.uk

Linux Hardware Adventures

A pile of experiences of using various bits of hardware under (Debian) GNU/Linux. I generally use debian, since it's good™, although have a nasty habit of not using their kernels, mostly because I tend to fiddle with the kernel too much.

Logitech TrackMan Marble FX

It was discontinued very permaturely, but a very comfortable, if somewhat weird to get used to, trackball.

Broken buttons

Like other Logitech mice the microswitches die eventually. It uses a MATSUSHITA AHM19001 9TH, unlike other mice that use an Omron D2FC-F-7N. The Omron can replace the left mouse button only, the holes through the microswitch are much smaller on the Omron, so wouldn't fit on the right mouse button mounting lugs.

The replacement is easy, unscrew 4 (one is behind the sticker) screws, desolder old button, solder new one in.

Connecting to your PC

It's native mode is PS/2, if you have a PS/2 port then it's easy. If not then there are several options.

Active PS2->USB Adaptor

Active adaptors mostly just work, although I've not found one that understands the fourth button. Some interpret it as movement, most ignore it.

PS2->Serial->USB

The mouse supports being a serial mouse with a passive adaptor, and in combination with a USB serial port, it becomes a USB mouse. Once connected do:-

inputattach --mouseman /dev/ttyUSB0

However this only gets you mouse movement, the kernel doesn't interpret buttons correctly yet (2.6.33).

Gutting a Trackman Marble

In theory you can rip the innards out of a Trackman Marble, that does support USB, and make a frankenmouse. No idea how easy this is.

Logitech Cordless Trackman Optical

It's not as good as the Trackman Marble FX, but it is cordless, and has lots o' buttons. It is detected as a USB mouse quite happily, it can't report the "lock" button if connected as PS/2 though.

Smartscroll Mode

Apparently it can do something called "smart scroll". No idea what this is supposed to mean, apart from when it's on the wee buttons will report a scroll-button press as well as their own. Great. Both lmctl and lomoco will let you turn it off, however lomoco is in an unfathomable state atm, whilst lmctl still works for what we want. Compile / install .deb, then you can use a udev rule like:-

SUBSYSTEM=="usb", ATTR{manufacturer}=="Logitech", ATTR{bDeviceClass}=="00", ATTR{bDeviceSubClass}=="00" \
  , RUN+="/usr/bin/lmctl -b $env{BUSNUM} -d $env{DEVNUM} -8 --no-sms"

Xorg configuration

So long as you use the evdev driver, all the buttons should work just fine. You can reorder the buttons using xmodmap, by supplying a space-separated list of the new button order. Alas you can't duplicate buttons, it has to be a 1-1 mapping. Adding the following to .Xmodmap will...

pointer = 1 9 3 4 5 11 12 8 2 10 6 7

Assigning functions to remaining buttons

You can use xbindkeys and xvkbd to map all the extra buttons now at your disposal to key events. E.g. my .xbindkeysrc says:-

# Double-up button: Home
"/usr/bin/xvkbd -xsendevent -text '\[Home]'"
   m:0x0 + b:6
# Double-dn button: Home
"/usr/bin/xvkbd -xsendevent -text '\[End]'"
   m:0x0 + b:7
# Back button: Alt-Left (i.e. back in most browsers)
"/usr/bin/xvkbd -xsendevent -text '\A\[Left]'"
   m:0x0 + b:8
# Lock button: Ctrl-T (i.e. new tab)
"/usr/bin/xvkbd -xsendevent -text '\Ct'"
   m:0x0 + b:10

Ideally I'd also want to rotate the pointer movement 225 degrees and use the "down" side button for pretend scroll-wheeling, but alas the evdev driver doesn't let you do that.

Behringer UCA-222 (and UCA-202)

The Behringer UCA-202 and UCA-222 are USB soundcards, I've got the latter. The 222 is advertised as being low-latency, but I've been led to believe that the only difference is the software bundle (and it's red), so the below will apply to both.

In short, works very well with ALSA. Based on a Burr-Brown PCM2902E, gives you stereo phono in/out, optical out and a headphone amp. In theory you also get 3 buttons supported by the linux input subsystem, but the button pins (5--7) are unconnected, and look fairly hard to solder. Sound quality seems reasonable enough, and there is little background hiss. I don't know if the optical output is supported since I don't have anything with an optical input, but I can at least say it produces a red light.

No real configuration is needed---just plug it in. However, the hardware seems to have remained unbranded internally, so dmesg says:-

 usb 2-3: Product: USB Audio CODEC 
 usb 2-3: Manufacturer: Burr-Brown from TI              
 input: Burr-Brown from TI               USB Audio CODEC  as /devices/pci0000:00/0000:00:04.0/usb2/2-3/2-3:1.3/input/input3
 generic-usb 0003:08BB:2902.0001: input,hidraw0: USB HID v1.00 Device [Burr-Brown from TI               USB Audio CODEC ] on usb-0000:00:04.0-3/input3

And to make "default" (since that's what it calls itself) the default sound device, I do this in /etc/asound.conf:-

pcm.!default    front:default # USB Soundcard
ctl.!default    {
    type hw
    card default
}