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
- Make the "up" side button (7) the middle button
- Make the small up/down buttons (9 & 10) the horizontal scroll buttons
- Jumble the remaining buttons to the top
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
}