The Smell of Molten Projects in the Morning

Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.

Category: Software

General-purpose computers doing something specific

  • Arch Linux: Wacom Graphire3 FDI File

    Again, this is similar to the FDI file for Xubuntu, with a partial match on the name.

    The button mapping swaps the two buttons along the pen, leaving the tip as Button 1. Button 2 pops up context menus, which I find easier when it’s on the front part of that two-button rocker.

    X occasionally crashes hard when the tablet moves the pointer between the two screens. It’s more common when scrolling, where the pointer is moving vertically along the gutter and falls off the edge. The workaround: restrict the tablet pointer so that it can’t quite get off the edge of the screen. Setting the BottomX value to just slightly more than the tablet can produce seems to work well: Tablet max = 16704 and BottomX = 16750.

    Unlike in Xubuntu, the tablet values mapped pretty closely to the whole screen; there was no need for absurd scaling values to expand a small upper-left rectangle to the full screen.

    The problem with hard X crashes is that X takes the (USB) keyboard down with it. The only solution seems to be ssh-ing in from another system and killing startx; you cannot Ctrl-Alt-Backspace or Ctrl-Alt-F1 or any of that stuff with a completely dead keyboard.

    You must include the SendCoreEvents option, otherwise The GIMP (and, presumably, other tablet-aware apps) will capture the events and never relinquish focus to system dialog boxes. Like, for example, the tablet won’t be able to focus inside the File->Save As dialog box…

    Herewith, the file /etc/hal/fdi/policy/10-linuxwacom.fdi:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <deviceinfo version="0.2">
     <device>
     <match key="info.product" contains="Wacom Graphire3">
     <merge key="input.x11_driver" type="string">wacom</merge>
     <merge key="input.x11_options.Type" type="string">stylus</merge>
     <merge key="input.x11_options.SendCoreEvents" type="string">True</merge>
     <merge key="input.x11_options.Button2" type="string">3</merge>
     <merge key="input.x11_options.Button3" type="string">2</merge>
     <merge key="input.x11_options.MMonitor" type="string">off</merge>
     <merge key="input.x11_options.ScreenNo" type="string">0</merge>
     <merge key="input.x11_options.BottomX" type="string">16750</merge>
    <!-- <merge key="input.x11_options.BottomY" type="string">11893</merge> -->
     <append key="info.callouts.add" type="strlist">hal-setup-wacom</append>
     <append key="wacom.types" type="strlist">eraser</append>
     <append key="wacom.types" type="strlist">cursor</append>
     </match>
     </device>
     <!-- Wacom names "parser" -->
     <device>
     <match key="info.udi" contains_not="subdev_0">
     <match key="info.udi" contains_not="subdev_1">
     <match key="info.udi" contains_not="subdev_2">
     <match key="input.x11_options.Type" contains="stylus">
     <merge key="info.product" type="string">stylus</merge>
     </match>
     <match key="input.x11_options.Type" contains="eraser">
     <merge key="input.x11_options.SendCoreEvents" type="string">True</merge>
     <merge key="info.product" type="string">eraser</merge>
     <merge key="input.x11_options.MMonitor" type="string">off</merge>
     <merge key="input.x11_options.ScreenNo" type="string">0</merge>
     <merge key="input.x11_options.BottomX" type="string">16750</merge>
    <!-- <merge key="input.x11_options.BottomY" type="string">11893</merge> -->
     </match>
     <match key="input.x11_options.Type" contains="cursor">
     <merge key="info.product" type="string">cursor</merge>
     </match>
     </match>
     </match>
     </match>
     </device>
    </deviceinfo>
    

    All in all, it’s much better than it was.

  • Arch Linux: Kensington Expert Mouse FDI File

    The FDI file is similar to the one I used for Xubuntu, with the exact match changed to a partial match. For some reason, the exact match seemed to not work.

    Because the XFCE4 Mouse configuration utility sets handedness on a per-mouse basis, you need not swap buttons 1+3 here. I did, anyway, and the mouse automagically came up left-handed.

    I swapped 2+8, the top two buttons, putting the browser “back one page” button at the upper left and the “open in new tab” button at the upper right.

    The contents of /etc/hal/fdi/policy/10-expertmouse.fdi:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <deviceinfo version="0.2">
     <device>
     <match key="input.product" contains="Kensington Expert Mouse">
     <append key="input.x11_options.ButtonMapping" type="string">3 8 1 4 5 6 7 2</append>
     </match>
     </device>
    </deviceinfo>
    

    And, for whatever reason, the scroll ring now works perfectly without the least hint of stuttering or jamming.

  • Arch Linux: X11 and XFCE4 Setup

    The Arch Linux Installation Guide gets X11 up and running in fairly short order, leaving you with a bare xterm session. That handled a single screen, so I copied the /etc/X11/xorg.conf file I’d hand-carved for Xubuntu, restarted X, and by gosh-and-golly, it worked perfectly!

    The right-hand screen is still in landscape mode while physically rotated to portrait, but that’s fixable with xrandr.

    For future reference…

    Section "ServerLayout"
        Identifier     "RotatedPortrait"
        Screen      0  "Landscape" 0 0
        Screen      1  "Portrait" RightOf "Landscape"
    EndSection
    
    Section "Module"
        Load           "dbe"
        Load           "extmod"
    #   Load           "type1"
    #   Load           "freetype"
        Load           "glx"
    EndSection
    
    Section "ServerFlags"
        Option         "Xinerama" "0"
    EndSection
    
    Section "Monitor"
        # HorizSync source: edid, VertRefresh source: edid
        Identifier     "Dell2001FP"
        VendorName     "Dell"
        ModelName      "DELL 2001FP"
        HorizSync       31.0 - 80.0
        VertRefresh     56.0 - 76.0
        Option         "DPMS"
    EndSection
    
    Section "Monitor"
        # HorizSync source: edid, VertRefresh source: edid
        Identifier     "Dell2005FP"
        VendorName     "Dell"
        ModelName      "DELL 2005FPW"
        HorizSync       30.0 - 83.0
        VertRefresh     56.0 - 75.0
        Option         "DPMS"
    EndSection
    
    Section "Device"
        Identifier     "GF9400_0"
        Driver         "nvidia"
        VendorName     "NVIDIA Corporation"
        BoardName      "GeForce 9400 GT"
        BusID          "PCI:1:0:0"
        Screen          0
    EndSection
    
    Section "Device"
        Identifier     "GF9400_1"
        Driver         "nvidia"
        VendorName     "NVIDIA Corporation"
        BoardName      "GeForce 9400 GT"
        BusID          "PCI:1:0:0"
        Screen          1
    EndSection
    
    Section "Screen"
        Identifier     "Landscape"
        Device         "GF9400_0"
        Monitor        "Dell2001FP"
        DefaultDepth    24
        Option         "TwinView" "0"
        Option         "metamodes" "DFP-0: 1600x1200 +0+0"
        Option         "NoLogo" "Off"
        SubSection     "Display"
            Depth       24
        EndSubSection
    EndSection
    
    Section "Screen"
        Identifier     "Portrait"
        Device         "GF9400_1"
        Monitor        "Dell2005FP"
        DefaultDepth    24
        Option         "TwinView" "0"
        Option         "metamodes" "DFP-1: 1680x1050 +0+0"
        Option         "NoLogo" "Off"
        Option         "RandRRotation" "On"
    #    Option         "Rotate" "CCW"
        SubSection     "Display"
            Depth       24
        EndSubSection
    EndSection
    

    With that in hand, the Install Guide gets you through setting up XFCE4 with no problems at all; consult the XFCE guide for more details.. It handles both screens, lets you install panels on both with no complaint, and generally Just Works.

    Useful widgets:

    • clipman
    • cpugraph
    • datetime
    • netload
    • screenshooter
    • time-out (wish it knew about screensaver timeouts)

    Add xscreensaver which politely blanks both screens. Timeout in 5 minutes, lock after 1 more, then power saving stages in at 7/8/9 minutes.

  • Arch Linux: Initial Setup

    Herewith, some general notes on getting Arch Linux installed & tweaked on my rather bizarre set of desktop hardware. The bottom line is that it pretty much works, with very few quirks, right out of the carton. Search for previous posts detailing most of the things discussed here.

    Hard drive partitioning on /dev/sda:

    1. Dell Utility
    2. Windows XP
    3. Dell Restore
    4. Logical -> Extended
    5. Swap
    6. Xubuntu 9.10 (recently installed desktop)
    7. Xubuntu 8.10 (last year’s desktop)
    8. Arch Linux installation (replacing Ubuntu 9.10 trial install)

    The trick is to have enough partitions lying around that you can do a complete installation without clobbering your previous version. Then, when you’re happy the new one works, just change the Grub boot default and you’re off & running.

    Follow the Installation & User Guides, which walk you through most of the choices and situations.

    I did not allow it to install Grub, as I already had it set up and didn’t mind some manual tweakage.

    After the installation, I added this stanza to the existing Xubuntu 9.10 grub.cfg file to boot the new Arch installation; the old menu.lst file has vanished with the new Grub. On a 1600×200 LCD, I need VGA=792 in what used to be the kernel line to get readable characters.

    menuentry "Arch Linux on /dev/sda8" {
    	insmod ext2
    	set root=(hd0,8)
    	search --no-floppy --fs-uuid --set 108a6b1b-1628-47dd-ab84-7a13be82590b
    	linux /boot/vmlinuz26 root=/dev/sda8 ro vga=792
    	initrd /boot/kernel26.img
    }
    

    The Arch installation completes with a reboot to a naked root command prompt. Everything beyond that happens only at your command.

    Add your personal user, add the wheel group to your ID, then uncomment that line to enable super powers when you edit /etc/sudoers.

    I had to do pacman -Syy before any installs worked. I found no advantage to powerpill rather than pacman.

    Various programs:

    • rpcbind & nfs-common
    • alsa-utils
    • cups

    The modified entries in /etc/rc.conf, which is where much of the system configuration & daemon startup occurs:

    LOCALE="en_US.UTF-8"
    HARDWARECLOCK="localtime"
    TIMEZONE="America/New_York"
    KEYMAP="us"
    CONSOLEFONT="Lat2-Terminus16.psfu.gz"
    ...
    eth0="eth0 192.168.1.3 netmask 255.255.255.0 broadcast 192.168.1.255"
    INTERFACES=(eth0)
    ...
    gateway="default gw 192.168.1.1"
    ROUTES=(gateway)
    ...
    DAEMONS=(syslog-ng hal network rpcbind netfs nfs-common cups crond)
    

    The Terminus font looks better than whatever the default is, but maybe that’s just me.

    The eth0 line is all it takes to set up a static IP address. Zowie!

    The gateway line aims all Internet traffic at my firewall router.

    The DAEMONS line starts up a variety of services. I have these:

    • hal – required for XFCE and others
    • rpcbind – for nfs network file shares
    • netfs – similarly
    • nfs-common – nfs client
    • cups – network printing

    I added my usual nfs mounts to /etc/fstab, got the service startup order correct in rc.conf, and it’s all good.

  • Ubuntu 9.10 Karmic: FAIL FAIL FAIL

    Soooo, for the last several days my main desktop system, recently installed with Xubuntu 9.10, has come up without networking services. The eth0 network interface is there, the (static!) IP is correct, Web browsing works… but NFS shares aren’t mounted and, upon poking around, other vital system services weren’t started.

    Worse, networking can’t be manually started, either, and there are no diagnostic log messages.

    Sometimes rebooting helps, sometimes it doesn’t. The problem is definitely timing-related, so sometimes pausing before signing in makes it work. Sometimes it doesn’t.

    Come to find out that Karmic has revised how system services get started during boot. The intricacies are lost on me, but the old Unix-style /etc/init.d/ model is now obsolete. Documentation on upstart, the replacement, is sketchy at best.

    We’re to type sudo service mumble start|stop|restart when we want to do things manually. Oh, maybe only start and stop have been implemented; everything else is defunct, but you can’t use the old method, either.

    Except that something in upstart 0.6.3-11 is broken / different, to the extent that system services no longer start up properly. Evidently that upgrade happened here in the very recent past, part of the usual system update routine. I do this manually, but there wasn’t any heads-up notice mentioning “Oh, by the way, this update will kill your system”, so I just installed it.

    Downgrading to -10 resolves the problem for many people, not including me, but that is not regarded as an actual fix. The older version has similar problems and downgrading just pushes the symptoms somewhere else. Part of the problem is that logging doesn’t (seem to) happen from upstart for any of the affected services.

    Now, Linux distributions started as a way to bottle up various combinations of upstream programs in known-good configurations, so that we end-user types didn’t have to go through the Linux From Scratch effort. That model seems largely dead; each major distro now applies so much floobydust to their combination that any resemblance to the upstream programs is purely coincidental.

    Like, for example, did you know that you’re probably not running OpenOffice, but Go-OO? Never heard of it? Me, either. Do the obvious search and see what you’ve not been told. Hint: Mono is still optional.

    Long ago, in a universe far away, I actually enjoyed beta testing software. These days, I just want it to work; I have other things to do. It’s painfully obvious that Windows isn’t the answer, but it’s becoming evident that (at least) Ubuntu has lost sight of the “it just works” goal.

    When vital parts of the system (like, for example, networking and system service startup) Just Don’t Work, something has gone badly wrong in the distro’s QA process. Yes, some problems remain hard to find, but when they’re reported (by other folks; I’m not first in line by any means) something should happen muy pronto.

    When a desktop environment (like, for example) KDE can’t handle two independent monitors, but has all manner of glitzy 3D effects, the development effort has wandered off into the bushes of irrelevancy. The fact that KDE can claim to have fixed 10,000 bugs in the 4.3 release is not, to my mind, much to brag about.

    To quote the immortal Iphigenia Deme, “That’s obscene-gerund enough!

    Right now, I have a column to finish and ship, with another right behind. With any luck, this system will hang together long enough to get those done, at which point I must devote some time to finding out which, if any, distros have a better recent track record.

    Some early fiddling indicates Arch Linux, which is sort of like Linux From Scratch with bigger and sorta-kinda snap-together pieces, should do the trick. Most important: it’s agnostic with respect to which desktop environment you pick, unlike the GNOME-oriented Ubuntu chassis that sorta-kinda allows you to bolt on KDE or Xubuntu bodywork.

    Quick summary of what’s needed: separate X sessions, right-hand session on a rotated-to-portrait monitor, Wacom tablet pinned to the left monitor, left- and right-handed trackballs. This configuration was fine in Kubuntu 8.04, got flaky in 8.10, and fell apart after that.

    There may well be upstream problems with some of those pieces, which generally isn’t something a distro can fix. I contend they could better apply their resources to fixing such problems than screwing up something else.

    More to follow…

  • Adobe Reader Default Toolbar: FAIL

    Maybe I’m misusing Adobe Reader, but I’ve always thought of it as a program that displays PDF files. In my case, that means data sheets for various & sundry electronic parts: I carefully squirrel both PDFs and parts away, having learned that physical parts can outlast both datasheets and company websites.

    So I open quite a few PDFs that reside on my file server in the basement.

    With that in mind, what’s missing from this row of toolbar icons?

    Adobe Reader Default Toolbar
    Adobe Reader Default Toolbar

    Go ahead, take your time…

    Hint: the only active button lets you “start an Acrobat Connect meeting and share documents”.

    This has been true for the last few versions; the Official Ubuntu Linux Version seems to be stuck at 8.1-ish. Let’s jump ahead a bit, fetch 9.3 directly from the Adobe download page, and install it:

    Adobe Reader 9.3 Toolbar
    Adobe Reader 9.3 Toolbar

    Now I can not only “Share documents and collaborate live within PDF documents”, but also “Click to create PDF using Acrobat.com”.

    What I can’t do is open a PDF file from disk by just clicking a button. That rarely used function is relegated to the File pulldown menu and, for those of us who can touch-type fairly well, hidden behind the arcane Ctrl-O keyboard chord.

    Reconfiguring the toolbar is a few minutes of clickety-click action, but it seems odd to me that none of the focus group participants suggested putting an Open File button on the toolbar.

    Although I never ascribe to malice what can be explained by stupidity, this continuing design decision does seem to require forethought.

  • ALSA Sound Samples Are Monaural

    The Arch Linux setup guide uses the ALSA sound samples in /usr/share/sounds/alsa to verify that everything’s working:

    aplay /usr/share/sounds/alsa/Front_Center.wav

    Which, as it turned out, worked perfectly: a female voice front-and-center.

    Flushed with success, I tried some of the other samples:

    cd /usr/share/sounds/alsa/
    ls -l
    total 1212
    -rw-r--r-- 1 root root 137134 2009-10-20 05:26 Front_Center.wav
    -rw-r--r-- 1 root root 142128 2009-10-20 05:26 Front_Left.wav
    -rw-r--r-- 1 root root 146990 2009-10-20 05:26 Front_Right.wav
    -rw-r--r-- 1 root root 135202 2009-10-20 05:26 Noise.wav
    -rw-r--r-- 1 root root 130096 2009-10-20 05:26 Rear_Center.wav
    -rw-r--r-- 1 root root 126064 2009-10-20 05:26 Rear_Left.wav
    -rw-r--r-- 1 root root 146480 2009-10-20 05:26 Rear_Right.wav
    -rw-r--r-- 1 root root 134868 2009-10-20 05:26 Side_Left.wav
    -rw-r--r-- 1 root root 129966 2009-10-20 05:26 Side_Right.wav
    

    All of which played front-and-center.

    Come to find out that they’re all recorded in Monaural mode, so the file names don’t really mean anything.

    soxi Front_Left.wav 
    
    Input File     : 'Front_Left.wav'
    Channels       : 1
    Sample Rate    : 48000
    Precision      : 16-bit
    Duration       : 00:00:01.48 = 71042 samples ~ 111.003 CDDA sectors
    File Size      : 142k
    Bit Rate       : 768k
    Sample Encoding: 16-bit Signed Integer PCM
    

    Definite disappointment, that… it’s not Arch’s fault, they’re monaural in Ubuntu,too.