<?xml version="1.0" encoding="utf-8"?>

<feed xmlns="http://www.w3.org/2005/Atom">

 <title>Finkelstein Lab — Blog</title>
 <link href="https://finkelsteinlab.org/blog/feed.xml" rel="self"/>
 <link href="https://finkelsteinlab.org/blog/"/>
 <updated>2026-08-30T00:15:03+00:00</updated>
 <id>https://finkelsteinlab.org/blog/</id>
 <author>
   <name>Ilya Finkelstein</name>
   <email>ilya@finkelsteinlab.org</email>
 </author>

 
 
 <entry>
   <title>Claude vs Printer Android Bridge</title>
   <link href="https://finkelsteinlab.org/blog/claude-vs-printer-android-bridge/"/>
   <updated>2026-08-28T00:00:00+00:00</updated>
   <id>https://finkelsteinlab.org/blog/claude-vs-printer-android-bridge</id>
   <summary>Rescuing an old Brother laser printer so it can print from Android phones, with Claude Code doing the heavy lifting.</summary>
   <content type="html">&lt;p&gt;Wednesdays are quickly becoming “burn through my weekly tokens” day.&lt;/p&gt;

&lt;p&gt;This Wednesday, I decided to rescue our old HL-4570CDW laser printer. The printer is a tank! It will probably outlast me, but its too old to pair with our cell phones.&lt;/p&gt;

&lt;div class=&quot;figures&quot;&gt;

&lt;figure&gt;
&lt;img src=&quot;/assets/images/blog/claude-vs-printer-android-bridge/printer.jpg&quot; /&gt;
&lt;figcaption&gt;Figure 1a. The Brother HL-4570CDW, circa 2010.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;
&lt;img src=&quot;/assets/images/blog/claude-vs-printer-android-bridge/tank.jpg&quot; /&gt;
&lt;figcaption&gt;Figure 1b. An M1A1 Abrams, for comparison. Photo: Tech. Sgt. John Houghton, U.S. Air Force (public domain).&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;/div&gt;

&lt;p&gt;The good news is that the &lt;strong&gt;W&lt;/strong&gt; in &lt;strong&gt;HL-4570CDW&lt;/strong&gt; stands for wireless. The bad news is that it doesn’t connect to any modern Android phones.&lt;/p&gt;

&lt;p&gt;And my wife has been asking me for the better part of five years now to be able to print documents from her phone directly to the printer.&lt;/p&gt;

&lt;p&gt;The printer showed up via &lt;a href=&quot;https://en.wikipedia.org/wiki/CUPS&quot;&gt;CUPS&lt;/a&gt; on our home network. I told Fable what I wanted:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;draft an md plan file then launch a fable agent to inspect and critique.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Claudish … Claudish … Claudish… It jibbered up a plan, then tweaked it, then seemed pretty content with the slop-file.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;do all of them, work independently until u finish
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;After “gibbering” for about 30 minutes, Fable gave me a standalone app I could sideload via “USB Debugging” on our phones. Sadly, Google is making this route more difficult &lt;a href=&quot;https://www.androidauthority.com/android-sideloading-changes-timeline-3679204/&quot;&gt;in 2027&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Fable spit out this code: &lt;a href=&quot;https://github.com/ifinkelstein/printer-android-bridge&quot;&gt;ifinkelstein/printer-android-bridge&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Lo and behold, it installed! And we were off to the printing races!&lt;/p&gt;

&lt;p&gt;Good ol’ HL-4570CDW is now discoverable on our phones. I’m still amazed that (1) the LLM zero-shotted (zero-shat?) a solution; (2) we could extend this aging, but perfectly capable printer; and (3) I have zero knowledge about Android development. Seems like a great use-case for LLMs!&lt;/p&gt;

&lt;p&gt;And I somehow still had plenty of tokens left to burn on other projects (more on that later).&lt;/p&gt;

&lt;p&gt;Now I keep thinking that there’s so much more old equipment that we can rescue from the garbage heap with our new LLM capabilities.&lt;/p&gt;

&lt;p&gt;Most importantly: happy wife, happy life.&lt;/p&gt;

&lt;p&gt;PS. This post was inspired by a few other blogs that rescued old hardware via similar means:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://fetzu.ch/blog/20260819_claudevsdrobo/&quot;&gt;Raiders of the Lost Array&lt;/a&gt;: a macOS driver and companion app for an orphaned Drobo 5D storage array. Claude reverse-engineered the proprietary protocol from the defunct manufacturer’s binaries. (&lt;a href=&quot;https://news.ycombinator.com/item?id=49368911&quot;&gt;HN&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/Kuberwastaken/hp-laser-1008a-macos&quot;&gt;A macOS driver for the Windows-only HP Laser 1008a&lt;/a&gt;: Kuber Mehta had Claude Code patch the open-source SpliX driver to speak the printer’s SPL3 raster language, so Cmd-P just works. (&lt;a href=&quot;https://news.ycombinator.com/item?id=49344643&quot;&gt;HN&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://dmitrybrant.com/2025/09/07/using-claude-code-to-modernize-a-25-year-old-kernel-driver&quot;&gt;Using Claude Code to modernize a 25-year-old kernel driver&lt;/a&gt;: Dmitry Brant ported the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ftape&lt;/code&gt; floppy-controller tape driver to Linux 6.8 to recover data from QIC-80 cartridges. (&lt;a href=&quot;https://news.ycombinator.com/item?id=45163362&quot;&gt;HN&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 

</feed>
