Windows-free BIOS Update

A new-to-me Dell Optiplex 9020 needed a BIOS update, which, as always, arrives in a Windows / DOS EXE file. Because I’d already swapped in an SSD and installed Manjaro, I had to (re-)discover how to put the EXE file on a bootable DOS USB stick.

The least horrible way seemed to be perverting a known-good FreeDOS installation image:


Unzip it to get the USB image file, then find the partition offset:

fdisk -l FD12FULL.img
Disk FD12FULL.img: 512 MiB, 536870912 bytes, 1048576 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device        Boot Start     End Sectors   Size Id Type
FD12FULL.img1 *       63 1048319 1048257 511.9M  6 FAT16

Mount the partition as a loop device:

sudo mount -o loop,offset=$((63*512)),uid=ed FD12FULL.img /mnt/loop

See how much space is left:

df -h /mnt/loop
Filesystem      Size  Used Avail Use% Mounted on
/dev/loop0      512M  425M   87M  84% /mnt/loop

The image file is 512 MB and has 87 MB available. The BIOS file is 9.5 MB, so copy the file to the “drive”:

cp O9020A25.exe /mnt/loop

Which knocks the available space down by about what you’d expect:

df -h /mnt/loop
Filesystem      Size  Used Avail Use% Mounted on
/dev/loop0      512M  435M   78M  85% /mnt/loop

Unmount the image “drive”:

sudo umount /mnt/loop

Copy the image file to a USB stick:

sudo dcfldd status=progress bs=1M if=FD12FULL.img of=/dev/sdg
512 blocks (512Mb) written.
512+0 records in
512+0 records out

Pop the USB stick in the Optiplex, set the BIOS to boot from “Legacy” ROMs, whack F12 during the reboot, pick the USB stick from the list, and It Just Works™:

BIOS Update screen
BIOS Update screen

We have a couple of other 9020s around that need the same treatment, so the effort won’t go to waste.

Manjaro Linux VNC Setup

I installed the XFCE flavor of Manjaro Linux (beside Win 8.1 Pro) on a new-to-me Dell Latitude 7250 serving as our new Token Windows box and carry-along-able Linux laptop.

Manjaro being an offshoot of Arch, they have plenty of guides and references, with How to Set up X11VNC Server being most useful at the moment. This box needs only a VNC server and apparently works with ‑xdamage for faster updates.

With the laptop plugged into an external display and Manjaro set up to use both displays, the X11VNC server feeds both to the client with the proper positioning, producing a truly panoramic, albeit scaled, view:

WinFlip - X11VNC dual screen
WinFlip – X11VNC dual screen

TightVNC on Windows does much the same thing, although (AFAICT) Windows doesn’t allow different background pictures on the two screens; that’s irrelevant to my mmmm use case.

Heatsink Fuzz

This appeared while harvesting heatsinks and suchlike from a defunct Dell Optiplex:

Clogged CPU heatsink
Clogged CPU heatsink

The only way to get access to that end of the heatsink is to break the heatsink’s thermal bond to the CPU, which seems like a Bad Idea if you intend to continue using the thing:

Clogged CPU heatsink - fan
Clogged CPU heatsink – fan

I buy off-lease Optiplexes from Dell Financial Services (a.k.a. Dell Refurbished) and, although their interiors always look well-cleaned, Dell (or, nowadays, FedEx Reverse Logistics) may have decided against breaking the CPU’s thermal bond and just sent me an office’s dust collection.

Doesn’t look like my dust. That’s my story and I’m sticking with it.

Home Key Tactile Bumps

It seems I do more typing than the good folks at Kinesis expected:

Kinesis keyboard - worn tactile bump
Kinesis keyboard – worn tactile bump

In round numbers, the keyboard is all of two years old and that little ridge is pretty much history.

The ultimate fix will likely involve a dab of epoxy, but a duct tape snippet should show me how much of a bump my fingers need to find the home keys without conscious thought:

Kinesis keyboard - tape bump
Kinesis keyboard – tape bump

Early returns suggest one layer isn’t quite prominent enough; some iteration will be in order.

And, yeah, I should yank the keycaps for some deep cleaning.

Firefox + uBlock Origin vs. CNN Autoplay Videos

Set up these filters in uBlock Origin, per some hints:


All those annoying CNN auto-play videos will vanish, along with any videos you might have wanted. For me, it’s a reasonable tradeoff, as most (useful) videos will be available on Youtube or elsewhere.

The built-in browser controls you might think of activating, as I have, don’t work on CNN videos, because CNN uses theoplayer, a “universal” Javascript-based player. It’s not Flash, it’s not HTML5, it’s not a specific video thing, it’s a way to work around all those blocking mechanisms.

Mostly, I don’t get news from CNN, but occasionally a link will lead there, a video appears, and instantly gets muted.

Burn them. Burn them all.

Update: Some sites run auto-play videos through JW Player, which you kill thusly:


That blocks the source of the player, which seems to not depend on the site using it. So far, so good.

Imagemagick 6 vs. PDF

Come to find out Xubuntu 18.04 ratcheted the ImageMagick security settings up to a dangerous chattering whine:

convert p???.jpg "Machining D-bit Drills.pdf"
convert-im6.q16: not authorized `Machining D-bit Drills.pdf' @ error/constitute.c/WriteImage/1037.

Fortunately, someone who understands this stuff encountered the problem before I did and posted a great description of the solution.

To forestall link rot, the process looks like:

cd /etc/ImageMagick-6/
sudo cp policy.xml policy.xml.base
sudo nano policy.xml
… change one line …
 policy domain="coder" rights="read|write" pattern="PDF"

It is completely unclear to me whether ImageMagick (as of ImageMagick 6.9.7-4 Q16 x86_64 20170114 ) requires or merely tolerates the vertical bar in place of commas, nor whether it’s in my best interest to replace "coder" with "*".

In any event, I can once again stuff bitmap images into PDF files.

LinuxCNC 2.7 vs. Logitech Joggy Thing

The old Atom running LinuxCNC for the Sherline finally stopped booting, so I popped the Optiplex 760 off the stack and did a live-USB trial run. The latency / jitter worked out around 25 µs, slightly worse than before, but still Good Enough, and the StepConf utility coerced the motors into working OK.

What didn’t work was the old Eagle-to-HAL code defining the Logitch Gamepad as a Joggy Thing to allow smooth joystick jog control. Well, stuff changes over the course of eight years, but, in this case, the fix turned out to be a one-liner: the probe_parport module isn’t needed nowadays.

With that out of the way, it runs fine:

LinuxCNC - Sherline Mill - Logitech Gamepad
LinuxCNC – Sherline Mill – Logitech Gamepad

The INI and HAL files defining the Sherline configuration as a GitHub Gist: