What I did over the past week LXII


  • Got the leaf blower running.. for about 15 minutes before the carb gunked itself up again. Fortunately that was enough to get most of what needed doing sorted out
  • Got Windstream to upgrade my internet connection to the highest the lines will support, which is now ~45Mbps down and ~8mbps up. Also put in an order to go from 1 static IP to a block of 5, so I can put shaftnet on its own IP, isolated from the other household stuff
  • Misc server equipment swaps and upgrades in preparation for bringing shaftnet home. My plan is to transfer the disk image to one of the unused nodes in this SuperMicro FatTwin box, and then to move the guts of what is currently shaftnet into a smaller, 2U case. There's no date set for this yet, though I'd like to make it happen by the end of September.


  • Clutch hydraulics failed four days after their warranty expired. Geez, it's always something with that car... back to driving the truck again!


  • Outbound @rockbox.org email is now working
  • Set up a few @rockbox.org email accounts for trusted developers
  • Finished basic bringup of the VPS and initial data transfer
  • Manually migrated the VPS from one data center to another, giving us both IPv4 & IPv6 addresses, plus more disk space
  • Migrated download.rockbox.org to the new VPS
  • Migrated git & gerrit to the new VPS
  • Fixed mail relaying for the new VPS
  • Some patch review


  • Sony UP-971AD (and probably UP-991AD) now work!

What I did over the past week LXI

Between a stomach bug going around and work-related drama, I didn't get very much done this past week. What work drama, you might ask? To make an ongoing story short, Philips has decided to axe all MRI activities in Gainesville, including my small research group, effectively flushing three years of effort down the drain.

Thanks to some golden handcuffs, my last day there is December 31st, and I'm actively looking for what comes next. Fortunately, after 18 months of COVID-forced work-from-home in the industry, it's going to be really hard for prospective employers to claim that I'd need to relocate in order to be effective, but I'm also strongly looking into hanging up my own shingle and doing miscellaneous contract work for a while.

On a shorter-term basis, since the server hosting my entire online presence is sitting in the lab at my soon-to-be-former employer, I'm working on finding it a new home. I'll also use this transition as an opportunity to downsize the guts into a smaller case with a different storage configuration.

As shaftnet will most likely end up at home on a residential DSL line with far less available bandwidth than before, I need to find a new home for the high-bandwidth stuff I've been hosting -- namely Rockbox. That'll most likely end up on a dedicated VPS, but that effort is still ongoing.

Anyway, back to the usual (if a bit short) update.


  • Migrated music server off of shaftnet (to home server)
  • Migrated original/full-res photos off (also to home server), leaving only ~550GB of down-scaled images remaining on the secondary RAID array before it can be retired. Final disposition of photo site TBD

  • Swept up a few loads of leaves, got a BIG black widow out of the garage, and some minor yard work


  • Took over rockbox.org DNS and mail services
  • New VPS spun up to host most Rockbox services; work is progressing
  • Some patch review

What I did over the past week LX


  • Pulled up a ton of poison ivy
  • Mounted multiple hanging planters
  • Finally pressure washed the other half of the house


  • Further xDuoo X3 bootloader improvements. Awaiting user feedback
  • Security updates for Gerrit instance
  • Build farm maintenance
  • Improvements to daily build download page

What I did over the past week LIX


  • Re-installed the splash guard on the 2nd bathroom shower
  • Old bird feeder pole finally rotted though enough to snap. Replaced it with a metal one sporting a squirrel-frustrating cone
  • Further garage storage consolidation; made a place to store the laser engraver when it's not in use so the workbench is finally usable again


  • Misc patch review
  • Many improvements to the xDuoo X3 bootloader, including a way to patch it into an update image!


  • DNP/Citizen printers not reporting proper error when ribbon exhausted
  • Kodak 7015 / 7000 5R support additional 5" print sizes
  • Fixed the USB blacklist entry for the Kodak 8800/9810

Fujifilm DX100

And now time for something not-so-completely different.


Gutenprint now has proper support for the Fujifilm DX100, and its Epson SureLab D700 sibling. This thing is an inkjet, and a lot more finicky than the dye-sublimation models I usually work with.

In the middle is the first test print that actually resulted in the printer doing something other than complaining. It was supposed to be a 6x8" print, and came out with a mangled image and was so over-saturated that ink was puddling on the paper.

Still, that was a success, and once I got past the size hurdle, and was able to start attempting to tune things. The stack grew to 112 6x8 test prints (using about 30 meters of paper) before I was happy enough with the tuning to try the Hubble porn on the right.

I still haven't figured out how to query the status of the waste ink tank, the paper type, or how much remains, but that will come in the fullness of time... and an ever-larger pile of prints.

What I did over the past week LVIII


  • Dryer failed with a bang. Turned out to be a bad wire crimp going to the heating element, causing it to overheat and eventually fail. Cut away the damaged wire, and crimped on a new connector. Then it started squeaking. Arrrgh...
  • Good weather made it possible to finally burn up most of the accumulated kindling that's fallen around the yard over the past couple of months
  • Vacuumed up enough cat hair out of my home office to make another cat


  • Truck's ABS issue self-corrected itself, which pretty conclusively points the issue at the solenoid unit. A local dirt road showed the ABS is working properly, but it seems prudent to obtain the parts to fix it properly at sometime in the near future
  • Swapped the original stop solenoid back onto the Kubota, after transferring the (intact) rubber boot from the new one. It now shuts down immediately after turning off the ignition, instead of a five-plus second slow roll off. That's what I get for picking up generic ChinaInc(tm) crap off of eBay


  • Nuked the barely-more-than-a-stub Tatung TPJ-1102 port
  • Misc patch review


  • Some minor improvements in the lib70x library, relating to rewind functionality on the Kodak 305, Mitsubishi K60, and D80
  • Added support for the old Sony UP-CX1. It's basically the same print engine as the UP-CR10L, plus Matte support
  • Added support for 4x6" Sticker media to the Shinko CHC-S2145
  • Landed core ESC/P2 driver changes needed to support the Fujifilm DX100 nee Epson SureLab D700
  • Bug fixes and improvements to escputil; many more error/status codes and functioning ink level reporting on the DX100
  • Landed support for the DX100! It's reasonably well tuned for HQ mode on Luster paper, but will need additional tuning for other combinations

What I did over the past week LVII


  • Ran both generators for an hour under load, and changed their oil
  • Got the mower running again
  • Cleaned up another load of branches and burned some of the growing pile
  • Swapped out Shaftnet's motherboard for one that's five years newer, gaining 33% more cores (that are 20-45% faster), 2x the RAM, and 20% lower power consumption


  • Swapped the truck's ABS controller for a second-hand one... and the same code popped up, despite repeated code clearing attempts. While it's possible that both controllers are fried in the same manner, it's more likely that the valve body is actually at fault. I've put off further work on this for the time being


  • Fixed several more coverity-identified issues and triaged many more
  • A lot of patch review
  • Filtered system/internal updates from front page wiki history
  • Minor updates to the www site


  • Kodak 8800/9810 is now working
  • Major progress on the Fujifilm DX100; it now prints! Granted, the ink levels are all out of whack and there are still several hacks in the code that need to be properly addressed, but.. it prints!

Kodak 8800 / 9810

The Kodak 8800 and 9810 are the same printer; It was sold under different names in different markets. I'll just refer to them both as the 9810 from here on

I committed my initial Gutenprint rendering support for the Kodak 9810 in January of 2013. Eight and a half years later, I finally got my hands on one and it can finally be used with Linux!


Despite these printers being EOL'd over four years ago, they remain widely deployed (including at my local CVS) due to their robustness and readily-available media. I think that's why not a lot of these made it into the secondhand market.

After winning a low-ball eBay auction for a "broken, for parts only" printer and partial media roll, I was able to fix the mechanical issues (which came down to literal loose screws and a damaged media sensor) and from there generated some test prints from a Windows VM. A quick perusal of the USB sniffs showed that the printer utilized a custom USB protocol to print and control things.

Fortunately, Kodak thoughtfully provided a service/diagnostic tool, which made it much easier to suss out specific functionality and correlate the raw USB data with human-readable values. This was the next-best thing to having access to proper documentation, and I wish it was more common.

So, after several days of furious hacking, The Kodak 9810 is now pefrectly usable under Linux & Gutenprint, complete with job control, media, counters, and error reporting. There are still some rough edges and functionality that's not fully exposed, but cleaning that up can happen in a more leisurely pace.

Unfortunately I made a fundamental mistake in the Gutenprint rendering code, so you will need a snapshot dated 2021-08-04 or newer in order to generate proper output -- Otherwise you'll need to invert and swap color channels to get the output to be mostly sane.

Incidentally, if you do end up using this printer (or any other dye-sublimation printer) with Linux, especially if you use them to make money, please consider consider donating something; these printers are expensive and funding is the main reason more models aren't supported.

With this under my belt, I can turn my attention back to the Fujifilm DX100..

Happy Printing!

What I did over the past week LVI


  • 10 Gigabit network now running in the home office. It's just two nodes for now but more will follow
  • Dryer is now back in service, with all new felt seals, glide strips, and re-lubed rollers
  • Yard cleanup -- Pulled down more dead vines, gathered up a lot of fallen branches, and other miscellany
  • Cut up the 20-foot-long hunk of tree that broke off last week, as well as several smaller pieces that had come down previously. The pile of firewood is considerably larger now!
  • The chainsaw unexpectedly needed some service; on my first cut the chain jumped off the bar, and when trying to get it back together I discovered the gear/clutch mechanism was seriously gunked up. After using up the last of my brake cleaner to help clean everything, I had to file down nicks and dings on much of the chain so it would glide smoothly in the bar channel

Tick Farm:

  • Got an unusually large power bill, so decided to pop up there for a welfare check on the place. Everything seemed perfectly fine, except for the snake hanging out in the toilet. Best guess for what happened is that the snake caused the toilet (and thus the well pump) to run for nearly two straight weeks


  • Truck's ABS warning light kicked on, and after pulling the codes and undertaking some diagnostics, the conclusion is that the controller module has failed. They only made eleventy-bajillion of these things so I was able to find a cheap replacement on eBay, hopefully arriving next week
  • Re-attached the rear-view mirror on the WRX, yet again


  • Made our atoi() function handle NULLs properly
  • A lot of back-and-forth to narrow down some audio artifacts, which led to finding a very long-standing bug in the PCM soft-volume code
  • Misc patch review & discussion


  • Picked up a broken Kodak 8800/9810 on the cheap, and managed to resuscitate it to the point where it is able to successfully print. Unfortunately it looks like the printer will need a custom backend, due to a custom back-and-forth protocol that layers above the raw print spooler data. Unusually, Kodak provides a maintenance tool, which will make it a lot easier to implement advanced functionality
  • Started work on getting a Fujifilm DX100 (a re-branded Epson SureLab D700) to function with Gutenprint. I've been making good progress, with only a handful of open questions to answer before I try to build the necessary data tables to make the ESC/P2 driver happy

What I did over the past week LV


  • Finished installing the last of the gutter guards, and re-jiggered one of the complex corners. Replaced the Harbour Freight rivet gun that I broke with a heavy-duty Astro unit
  • Pressure-washed the mildew off two sides of the house and the garage door
  • Re-leveled the dishwasher. Had to shim the front feet due to uneven flooring under the counter, but now it's just about perfect
  • Disassembled the dryer for some cleaning, and discovered one of the felt seals was completely worn through. So it's still in pieces while I wait for a new set of felt seals and glide strips. I also cleaned and greased all of the rollers and their shafts


  • Cut about 1.25" off the end of the WRX's air intake pipe, providing a little more clearance for the air filter. This intake was one of the more questionable modifications made by a previous owner, as it was not intended for this application and was literally bouncing off the brake lines when I bought the car. My plan is to lob off a little more and then fabricate baffles so it can become a proper cold air intake, drawing from the wheel well instead of the engine bay
  • Bled off the excess refrigerant in the WRX's air conditioning, since I overcharged it the last time
  • Washed the WRX for the first time. The pressure washer and a foam cannon made this a lot easier, but the sheer amount of filth means another round will be needed before it's worth a waxing


  • Triaging and fixing some of the issues flagged in scan-build & coverity analysis
  • Tweaks to the build system to allow non-stable manuals to be generated
  • Wrote parts of the manual for the Eros Q/K, Rocker, X3ii, and X20
  • Wiki wedged itself, which took down the web server