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: Home Ec

Things around the home & hearth

  • Conficker vs. Library: The Rest of the Story

    Well, here’s how the story of picking up Conficker at the library played out:

    Yes, thank you so much! Everything you said was true. Apparently someone’s USB drive was infected and infected many computers here. We are very appreciative for your technological detective work. The head of IT was very incredulous because everything is deep frozen after it is shut down. But it was all true and I am very grateful

    The part about “many computers here” seems worrisome; they’re apparently not running any defensive software at all.

    ‘Nuff said…

  • Garage Hose Faucet Shutoff Valve: Washer Replacement

    After replacing the hose valve in the garage, I promised to repair its leaky upstream shutoff valve:

    Corroded gate valve
    Corroded gate valve

    I shut off the hard water supply, dismantled the valve, and let everything soak in a cup of white vinegar for a few hours. The fizzing was a wonder to behold and the parts came out much cleaner without any effort at all.

    Removing the handle required the handle puller and considerable rapping on the corroded-in-place handle at the tapered shaft. That reddish disk used to be a tin-plated steel data plate, but now it’s just a corroded sheet:

    Shutoff valve - handle puller
    Shutoff valve – handle puller

    Because a shutoff valve will be open nearly all the time, it has a large washer that seals the cap and valve stem in addition to the usual stem packing:

    Shutoff valve - full-open washer
    Shutoff valve – full-open washer

    Attempting to remove the screw from the stem broke the head into two pieces:

    Shutoff valve - broken washer screw
    Shutoff valve – broken washer screw

    Worse, the screw shaft was a soft mass of corroded brass, so I had to drill it out and chase the threads with a 10-32 tap. I replaced the full-open washer with a slightly smaller one from the supply box, which required drilling out the hole to suit, adding some packing string under the main cap, and replacing the packing around the stem. But, eventually, putting everything back together works fine with no leaks at all.

    This turned out to be slightly less horrible than I expected, which probably doesn’t justify procrastinating until the evening before the coldest night of the season.

  • American Standard Elite Kitchen Faucet: Handle Failure

    Strange though it may seem, the kitchen faucet handle broke while Mary was using it. The rear wall of the socket that fits over the cartridge valve stem fractured:

    American Standard Faucet Handle - broken mount
    American Standard Faucet Handle – broken mount

    Having no water in the kitchen is not to be tolerated, so I applied a redneck fix while pondering the problem:

    Kitchen Faucet - redneck handle repair
    Kitchen Faucet – redneck handle repair

    Based on that comment, I called the American Standard hotline (800-442-1920), described the situation, and they’re sending a replacement handle and cartridge. Evidently the new handle won’t fit the old cartridge, which makes me feel better about not stockpiling repair parts, even while I now wonder what the new cartridge part number might be and how you’d tell them apart.

    Anyhow, the redneck fix wouldn’t suffice for the next week; I needed something slightly more permanent. The broken wall fit neatly in place on the mount, but:

    • It must withstand far more force than a simple glue joint can provide
    • I can’t machine square holes
    • Wrapping a metal sleeve around the mount seemed like too much work

    You undoubtedly saw this coming a while ago:

    Am Std Faucet Handle Sleeve - solid model
    Am Std Faucet Handle Sleeve – solid model

    The mount tapers slightly from the handle body toward the open end to provide draft for the molding process. I applied a hull() operator to two thin rectangles spaced the right distance apart along the Z axis to create a positive model of the mount, which then gets subtracted from the blocky outer rectangle. The hole clears a 10-32 screw that fits the standard setscrew threads (normally hidden behind the handle’s red-and-blue button).

    Unlike most printed parts I’ve done recently, the sleeve suffered from severe shrinkage along the outside walls:

    Faucet handle sleeve - build distortion
    Faucet handle sleeve – build distortion

    The inside maintained the right shape, so I cleared the nubs with a file and pressed it in place around the mount with the rear wall snapped into position. The black plastic socket evidently isolates the handle from the valve stem and I used a stainless 10-32 screw to prevent the nightmare scenario of having the sleeve slide downward along the tapered mount and block the setscrew. Overall, it came out fine:

    American Standard faucet handle - compression sleeve
    American Standard faucet handle – compression sleeve

    However, the chunky sleeve didn’t clear the opening in the escutcheon cap, which put the cap on the windowsill for the next week. The result works much better than the redneck fix and looks almost presentable. It’s certainly less conspicuous:

    American Standard faucet handle - temporary repair
    American Standard faucet handle – temporary repair

    I hope the new handle has a much more robust socket…

    The OpenSCAD source code:

    // Quick fix for broken American Standard Elite 4454 faucet handle
    // Ed Nisley KE4ZNU February 2013
    
    //- Extrusion parameters must match reality!
    //  Print with +2 shells and 3 solid layers
    
    ThreadThick = 0.25;
    ThreadWidth = 2.0 * ThreadThick;
    
    HoleFinagle = 0.4;
    HoleFudge = 1.00;
    
    function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
    function HoleAdjust(Diameter) = HoleFudge*Diameter + HoleFinagle;
    
    Protrusion = 0.1;           // make holes end cleanly
    
    //----------------------
    // Dimensions
    
    Wall = 5.0;
    
    Slice = ThreadThick;                // minimal thickness for hull object
    
    ShaftEnd = [11.6,17.8,Slice];
    ShaftBase = [12.1,18.8,Slice];
    ShaftLength = 19.0;
    
    Block = [(ShaftBase[0] + 2*Wall),(ShaftBase[1] + 2*Wall),ShaftLength - Protrusion];
    
    ScrewOffset = 6.5;          // from End
    ScrewDia = 5.0;             // clearance
    
    //----------------------
    // Useful routines
    
    module ShowPegGrid(Space = 10.0,Size = 1.0) {
    
        Range = floor(50 / Space);
    
        for (x=[-Range:Range])
            for (y=[-Range:Range])
                translate([x*Space,y*Space,Size/2])
                %cube(Size,center=true);
    
    }
    
    module PolyCyl(Dia,Height,ForceSides=0) {           // based on nophead's polyholes
      Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2);
      FixDia = Dia / cos(180/Sides);
      cylinder(r=HoleAdjust(FixDia)/2,h=Height,$fn=Sides);
    }
    
    //----------------------
    // Model the handle's tapered shaft
    
    module Shaft() {
    
        hull() {
            translate([0,0,ShaftLength - Slice/2])
                cube(ShaftEnd, center=true);
            translate([0,0,Slice/2])
                cube(ShaftBase, center=true);
        }
    
    }
    
    //----------------------
    // Build it!
    
    ShowPegGrid();
    
    difference() {
        translate([0,0,ShaftLength/2])
            cube(Block,center=true);
        Shaft();
        translate([0,0,ShaftLength - ScrewOffset])
            rotate([-90,0,0])
                PolyCyl(ScrewDia,ShaftBase[1],6);
    }
    
  • Capacity Test For USB Flash Drive Memory

    Centon 4 GB USB Flash Drives
    Centon 4 GB USB Flash Drives

    It’s always a good idea to verify that a USB flash drive works and has its rated capacity, even when you buy them from a reputable vendor.

    The easiest way to measure their capacity (quite different than measuring battery capacity):

    • Create a monster file of random data
    • Copy it to the drive
    • Verify that the copy matches the original
    • Delete the copy

    That doesn’t verify that you can successfully create a bazillion little files, but it’s a good rough-and-ready check that you haven’t gotten, say, a 2 GB drive mis-labeled as 4 GB. It could happen…

    Assuming you’ve deleted any shovelware (these were clean) and that the drives are now empty (as these were), find out how big they claim to be:

    df /media/ed/CENTON\ USB/
    Filesystem     1K-blocks  Used Available Use% Mounted on
    /dev/sdb1        4107284     4   4107280   1% /media/ed/CENTON USB
    

    Pour /dev/urandom into a file that will fill the available space (not the total space), which will take several minutes:

    time dd bs=1K count=4107280 if=/dev/urandom of=/tmp/test.dat
    4107280+0 records in
    4107280+0 records out
    4205854720 bytes (4.2 GB) copied, 450.883 s, 9.3 MB/s
    
    real	7m31.162s
    user	0m0.712s
    sys	6m54.166s
    

    Copy it to the drive, using rsync with a progress indicator:

    time rsync --progress /tmp/test.dat /media/ed/CENTON\ USB/
    test.dat
      4205854720 100%    8.45MB/s    0:07:54 (xfer#1, to-check=0/1)
    
    sent 4206368202 bytes  received 31 bytes  8772405.07 bytes/sec
    total size is 4205854720  speedup is 1.00
    
    real	7m59.035s
    user	0m24.490s
    sys	0m17.433s
    

    Verify that the two files match:

    time diff /tmp/test.dat /media/ed/CENTON\ USB
    real	3m32.576s
    user	0m0.588s
    sys	0m6.268s
    

    Then delete the file:

    rm /media/ed/CENTON\ USB/test.dat
    

    Repeat as needed for the other flash drives, using the same test.dat file. All these drives worked; one subsequently caught a disease at the library.

    And, yes, one of them is noticeably darker; four of the others seem lighter and five darker gray. Most likely, the cases came from three different anodizing batches and, I suppose, if I were to pry them apart, the innards could be radically different. Ya never know!

  • Capacity Test For New UPS Batteries

    Just got a quartet of 12 V 7 A·h lead batteries, prompted by a big Belkin UPS that instantly shut down during a power blink. It needs only two batteries, but the shipping was the same for two or four and I’m sure the spares will come in handy.

    A stiff 2 A discharge test shows that SLA batteries really don’t like high currents, which is exactly what they must provide in a UPS:

    Rhino SLA - 2013-01
    Rhino SLA – 2013-01

    The capacity is barely 4 A·h at 2 A, not to mention that I’m using a conservative 11.4 V cutoff.

    The two batteries with the highest capacity also were the closest matches, so they’re now in the UPS.

  • Epson R380 Printer: Cutting In a Continuous Ink Supply System

    The continuous ink supply system on the Epson R380 printer developed a slow air leak in one cartridge, which may have contributed to the nozzle problems, so I just installed another system from the usual eBay supplier: prefilled with ink and $30 delivered.

    As nearly as I can tell, Epson designed a number of features into the R380 specifically to thwart CISS installation, including the awkward bridge across the middle of the printer that interferes with the flat tube feeding ink to the flying cartridges. I managed to route the previous CISS tubing around the bridge, but this time I figured enough was enough.

    So I tucked a shop rag inside the printer, put a vacuum cleaner nozzle near the operation, and applied a fine-tooth pull saw to the bridge:

    Epson R380 - bridge removed
    Epson R380 – bridge removed

    That certainly simplified the rest of the installation…

  • Why Friends Don’t Let Friends Run Windows: Conficker

    Mary gave a gardening presentation at the local library, popping a 4 GB USB memory stick with the presentation into a library computer connected to the display projector. Back home, she deleted the presentations and was about to add more files, when she noticed something interesting:

    drwx------  4 ed   ed    4096 Dec 31  1969 ./
    drwxr-x---+ 3 root root  4096 Jan 31 19:21 ../
    -r--r--r--  1 ed   ed   59288 Mar 21  2009 autorun.inf
    drwx------  3 ed   ed    4096 Jan 30 19:31 RECYCLER/
    drwx------  4 ed   ed    4096 Jan 31 19:10 .Trash-1001/
    

    Ubuntu 12.10 automagically mounts FAT filesystems with the current user as owner and group. The .Trash-1001 directory is the Linux trash heap, but where did all that other stuff come from? The autorun.inf definitely looks Window-y, doesn’t it?

    Perforce, the library runs Windows, but that shouldn’t add files to a USB memory stick that just was plugged in and used for a read-only presentation, should it?

    Huh. You know where this is going…

    Let’s hand autorun.inf to VirusTotal for a second opinion. The first three results from their long list confirm my suspicion:

    Antivirus Result Update
    Agnitum INF.Conficker.F 20130131
    AhnLab-V3 Win32/Conficker.worm 20130131
    AntiVir Worm/Kido.IH.40 20130131

    The executable file containing the actual payload is, of course, buried in a subdirectory that might look more innocent on a Windows box:
    /RECYCLER/S-5-3-42-2819952290-8240758988-879315005-3665/

    It sports a randomized name to evade a really stupid malware detector:
    jwgkvsq.vmx

    Here’s what VirusTotal reports from some heavy hitters in the AV field:

    Kaspersky Net-Worm.Win32.Kido.ih 20130131
    Kingsoft Worm.Kido.ih.(kcloud) 20130131
    Malwarebytes Worm.Conficker 20130131
    McAfee W32/Conficker.worm 20130201
    McAfee-GW-Edition W32/Conficker.worm 20130131
    Microsoft Worm:Win32/Conficker.B 20130131

    The Wikipedia article gives the details. I suppose that PC got it from somebody else’s USB stick, but the library really should be running some defensive software; Conficker dates back to 2008, so it’s not new news these days.

    That kind of Windows Genuine Advantage makes up for all the hassles of running Linux, right there. Mary reported the problem to the library; we’ll never know the rest of the story.

    [Update: We got an update!]