I was able to (through heavy Claude use) successfully reverse engineer a golf cart motor controller that is programmable over USB, but only was supported by a Windows application. Claude walked me through using ILSpy on the .NET assembly, using Wireshark to capture the protocol over USB, and to completely map out all of the functionality in the Windows application. The output was a portable C library and CLI program which, so far, has worked well.
I consider myself kind of an AI detractor but even I'll admit that the tool allowed me to do something it would have taken weeks-to-months to learn to do the hard way.
To some degree. But esp for drivers, you still need to know when they go wrong, and steer them right, or your code will either just not work or be an unmaintainable, not-upstreamable mess.
LLMs are good at producing what they/the public know.
In this case:
LLMs know the USB Spec very well.
LLMs know how to read raw packet dumps.
LLMs know how to convert a packet dump to USB spec
LLMs know how to write code to generate USB packets from the spec.
LLMs are also VERY good at transliteration, i.e., converting known-good Python to Rust.
Basically, If you have a well-documented problem, the LLM is a shortcut to learning it yourself. LLMs fail when you have a novel or poorly documented problem. They also fail when you provide the LLM with terrible context or too much context.
Don't sell in-context learning short. Right now I'm waiting on Claude to wrap up the latest of a half-dozen extensive changes to XML files for a fairly-obscure (and obsolete) closed-source electronics CAD program. I am pretty sure it doesn't know anything about these files besides what's in the XML .DTD file (which I also gave it.)
This is a very novel, reasonably-poorly-documented problem, and so far it has batted 1.000.
IMO it's because they don't get burnt out by a lack of results.
After 5-6 consecutive approaches fail, I need a reason to think the next one might work out to stay motivated.
Claude will keep burning credits trying new approaches until something sticks. That's a huge advantage in a field where most of the things you try don't go anywhere.
I had a discussion about this with a friend recently. I was using an LLM with a serial console that it wrote to allow us to share a connection to a Z80 computer running CP/M. I was having trouble with the assembler, it wouldn’t assemble in user 1 of a particular disk, so I asked the LLM for help. It debugged ASM.COM and the BDOS, walked through the source compared to memory dumps, basically banging its head on the wall for an hour or more, until it finally figured out and verified that my disk had a bad block. I never would have put in that much effort to find the root cause of the problem.
I don't think they're any more skilled at it than someone who knows how to reverse engineer stuff... But it is definitely a place where AI is amazing because reverse engineering is usually extremely time consuming and tedious. AI doesn't care about that.
It also has the benefit that it doesn't usually matter too much if it gets minor details wrong. It's definitely one of the areas - like hacking - where it's a) tedious and b) insensitive to mistakes where AI absolutely shines.
My experience is that they're better than me at a lot of the process, so probably worse than someone who's a full time reverse engineer but as good as or better than most. They'll definitely get some small details wrong that would derail the entire thing, so having some skills that are pretty much "This smells wrong" helps a lot, but I think for many scenarios they'll unblock someone who has little RE experience.
LLMs seem to be trained to work very well against a goal, especially one it can verify against. I guess because it can easily know if it passed or failed, va other tasks where good/bad output is subjective
It's LLMs' generalist skills. I think reverse engineering is usually hard when you're in an unfamiliar domain. Eg I've never programmed a videogame or windows application but I'm trying to crack one. On the other hand if you know the domain, and know what the programmers' intentions must be in any given block of code, it's often straightforward. There are no unfamiliar domains for LLMs, including it seems proprietary software.
And with the Linux Kernel being friendly to both LLM usage and a modern language, for some of us who don't know C, a huge barrier is lifted from being able to write device drivers.
Not a successful anecdote, but I have a Windows Hello compatible Kengsington fingerprint reader, and for some time I wanted to write drivers for Linux. Even without using C, it would have been a huge undertaking only to fail in the end; because Claude did much of the research and concluded that the device wouldn't work on Linux (can't remember why but it made sense). Then it suggested what could work.
Back in the day when dial-up modems were a "significant" market, the concept of "WinModems" came around. Minimum hardware, maximum software. If the sensor is good enough to actually work though, it probably won't be long before an agent can implement the driver, if it can't already.
I've recently done the same for a Bluetooth LED matrix display, then took it a step further assembling my own hardware (ESP32 controller and RGBIC matrix) to have control over the firmware for features that weren't possible with the off-the-shelf device.
None of this would have been possible (or at least practical from a time-value perspective) for me to do without Claude driving the whole exercise.
Had a similar experience getting a niche app running under wine. The bot had to bring in a different open source renderer, patch dlls, adapt a mapping tool from a different chip architecture to partly map and modify the binary, crazy stuff. Alternatives exist but are expensive, this got it working in an hour when doing it myself would probably be 2 weeks.
Last week I had Claude add support for aac audio to davinci resolve on Linux, just by patching the binary. It did almost exclusively with gdb and objdump, patching about 5 functions over an hour or two.
I only got it to the proof of concept stage. The patch adds aac but breaks flac support in the process. And it only works for aac in mp4 container files. But I’m sure with a bit of time we could make a patch which works everywhere and is additive only.
I say ‘we’ - I barely helped. Almost all the work was done by Claude.
Here’s Claude’s report, if anyone wants to build on this work:
Are we either in a dangerous time where we'll run out of people that have weeks to months, and the resolution/boredom/ability to figure this sort of thing out?
Or are we in a really cool time where we've solved everything so much so many times we can focus on other things?
Tertiary question: If answer two, what the fuck is that?
For programmers this is the equivalent of when accountants got spreadsheets. We can just tell the machine what to do without manually performing all the steps.
Some programmers enjoyed the code writing more than the problem solving though.
Ditto (except not being an AI detractor): I used Claude and Codex to reverse engineer the proprietary protocol for controlling Devialet amplifiers and then build an iOS controller app to replace the manufacturer's abandoned official app.
The whole thing took about a day, spread out over a week or so. Without AI, I wouldn't have even started the project, because I couldn't spare the time it would have taken.
Sort of. The company released a new model and deprecated its older ones. It’s still possible to control the amps with the (really neat) physical remote.
I'd be cautious here because you very easily could brick the hardware. For writing a PC driver it's a lot safer since you can just fail repeatedly until it works.
Unfortunately this is a very misleading article and headline. I don't doubt the end result - it's useful that it works, but it's not "natively" and, unlike what some people assume, Claude didn't write a driver. It basically used HP's existing proprietary driver in a Linux VM on macOS, and just bridged that to macOS.
It also requires a root launcher that runs code from the user ~/.hp1008 dir, so security is weakened.
It's strange, because I have zero doubt in my mind that Claude could 100% genuinely reimplement the driver and port it to actually natively run on macOS, were it prompted that way.
I bought some cheap host-managed SATA drives the other day that the BIOS can't see and Windows won't recognize. I asked Claude to write a Windows app so I can use them, and it resisted at first, but then gave up and wrote it and they now work great.
It had to implement the entire stack of bare-metal drive functions over SATA and a whole new filesystem to go with it.
Generate the VM, send it crafted PDFs to print, see what it produces, and build a driver. Not that “hard” even for a human, an AI could probably one-shot it.
Yeah, that was rather disappointing. I wouldn't have minded that the Linux driver had been used as an input, allowing Claude to reason about the functionality and interface. That seems like a reasonable approach.
The "only built for Windows" is also a little dubious. Technically I suppose HP could have just intended it as a Windows printer, but the driver clearly already exists in CUPS, which Apple also uses, so porting the driver isn't an unreasonable thought.
"Also some clarification on the "he's just using the linux driver in the VM" - not quite
This is one of the weirdest batch of printers HP made because it's a rebranded Samsung - it "comes" under HP's unified drivers system but specifically has Samsung's printer language so compatibility is extremely messy.
What this version does is take the Linux Unified Driver and extract just the relevant component, rastertospl, basically the codec that turns CUPS raster data into the Samsung SPL format the printer understands. That codec is then wired into macOS’s native CUPS stack, so printing happens through the system like a normal driver. There’s no Linux VM handling the actual print workflow and the entire process basically acting as a driver normally at system level.
In theory, yeah - rastertospl could be reimplemented from scratch. But that would be way more unreliable while turning this from a ~4-hour project into a ~4-day reverse-engineering project, when starting this, I really just wanted a working home printer and running a tiny compatibility applet in Docker just for that codec feels like a pretty reasonable compromise AND I get to not see my mac kernel crash if it messes up.
I didn't expect this to blow up this much lol, so I'll be experimenting with this further and am already in talks with the splix team to sort this specific version out"
I do not want to call anyone names but the level of pedantry and gatekeeping in this comment and the replies is outstanding. I can hear Chuck McGill screaming "You're not a real driver!".
On a similar experience, I use moonlight on my Android TV to stream video games from my computer in another room. I use my own fork from an unmerged PR which enables me to use an Xbox One Wireless adapter so I can play with my pad wirelessly. These pads have a 3.5mm jack on them which on Windows and Linux enables me to route audio from the game to headphones connected to the pad. Moonlight and the xow driver it bundled, was nowhere near being able to provide this as a feature.
After about 5 hours, feeding it the GIP spec, an export of sniffed usb traffic from Windows, prior art (xone driver for linux), and giving Claude connectivity to my Shield via adb, I had it working. This continuously blows my mind that I dont have to beg a developer on Github to do it for me.
I have a Razer Wolverine Xbox controller that has extra back paddle buttons. The controller doesn't expose the paddles directly to PC's over USB. You have to use button remapping on the controller to map them to 'real' Xbox buttons for the PC to see them. But I wanted to use the back paddle buttons on Steam as separate controls.
So I downloaded the latest firmware update off the internet (because what device doesn't have firmware updates these days), installed Ghidra and an MCP server for it, and told Sol to look for how I can expose these extra buttons to a PC host. Maybe we could write a firmware patch?
Turns out the controller already has a special mode to expose those buttons, possibly as a hardware test. But it was enough to write a Linux driver to put the controller into that mode, and a little bit of extra driver code to map the paddles to a Linux controller button, and voila. Paddles working in Steam.
And it only took a few hours to do, too. I spent more time making an open source repository out of the concept than I spent making it work.
What's the repository link? I think it would be fascinating to have a corpus of "hacked" solutions like this. Can't tell you how many times a couch co-op game night got sabotaged by some piece of hardware failing to communicate with another.
The "linux" support is pretty narrow (because I made this for myself). It's restricted to SteamOS. But I'm sure it could be ported easily, the repository contains documentation about the important parts from reverse engineering the firmware.
Wouldn't it have made more sense for Claude to suggest using the existing Linux-Airprint-VM project/product that already does this exact thing?
There's even a zero-install method via https://printervention.app where it runs that Linux VM isolated inside a WebUSB-capable browser. That website itself was posted right here on HN not too long ago.
I get that the LLM code assistant software prefers writing stuff, but constantly re-writing the same solution seems a bit inefficient.
Four hours of a machine looping through a cycle of repetition, guessing and failure, gratuitous air-punching and premature celebration, before eventually landing on a hideous "solution" that just uses an existing driver from another platform.
So the critique from the other story holds true - it really is just running the Linux driver inside docker, and (perhaps) dressing it up as something more - though I note the claim on this page is walked back from the original 'writing the driver'. On the other hand, it really did get him printing from his Mac, so in this new LLM results based world we live in it did its job admirably.
Somehow, I'm not exactly sure why, I got creeped out by Claude's finishing line:
> Thanks for being such a game debugging partner through all the test pages. Enjoy printing, you and the family.
Maybe it's because my own LLM usage is very "Question > Answer" or "Do this > Agent does that" and I never say "Wow, that's crazy it works, thank you!" at the end or such, so I don't see that sort of things, but if I saw that regularly I'd turn me off so badly from using LLMs. I'm not exactly sure where this feeling is coming from though, it's relatively innocent but just feels so inauthentic, I'm guessing because it's simply a machine.
The way that you talk to it influences the way that it responds to you and it is not subtle. I don't want to hitch on to the "it's just really complicated autocomplete" bandwagon, but this is one of the ways that it does feel like that.
With voice dictation (wispr flow), I find it easier for me to talk naturally as if I'm talking to a friend. I'll sometimes give lengthy notes on context for a project, like why I want to do it, e.g. something for my wife to use.
So I find it common (and fine, I suppose) for Claude to reply using that context. "Let me know what your wife thinks of the app" etc.
Awesome. I had a crack at the Xerox Travel Scanner 150, which had niche drivers for some reason, only shipped Windows and didn't make it into SANE. Wireshark and prior art from SANE got me most of the way. Getting the stepper motor working was really hard and I didn't manage to get it completely working Maybe I'll resurrect 15 year when it's a little older. I really fancied a Pi+Scanner pipeline with OCR/AI to file all my documents as they arrive. Maybe I should just take a photo?
Does anyone know if Apple would actually agree to sign and allow the distribution of such a driver?
The vendorid and productid clearly belong to another entity, which could hypothetically want to create their own driver?
I just fix a long standing bug on my Linux desktop I have had for years and kept meaning to look into to see if I could fix. The issue was I have a sound blaster katana sound bar and it works okay but the volume on the device is not in sync with the volume in Linux. In Windows it stays in sync. I can work around it by each time I boot, I press the button to go to max volume, then lower the volume in Linux to the desired level but it's been an annoyance. I described the issue to codex and within a few minutes it had it fixed by updating the pipewire device profiles to use the volume control it exposes. Honestly amazing since I doubt I would have ever gotten around to figuring this out since I didn't even know what level of the stack the issue was, I thought maybe it was in the driver itself.
You just gave me an idea to fix lots of little annoyances in my old Linux laptop that had been retired because of those! Maybe the old little laptop can still give me a few more years of fun.
Stuff like this is so nice, I wonder where it will go in the future. Recently on my PC I had a failed windows update that killed the bluetooth driver, I tried to fix it for over an hour and got no where (even consulting chat gpt). I just let codex loose with full authority on the problem and the driver was working again in 5 minutes with no reboot needed.
Along similar lines I used Codex to reverse engineer and build a modern driver for the niche, proprietary Sony USB protocol for an old camcorder I have lying around, having never done anything like that or used Rust before. It feels like LLMs could be a huge force in making older hardware usable again.
I have actual obscure RGB corner floor lamps with BLE in my office. I had Claude find the BLE protocol and use my Office 365 calendar feed to change their color to red when I'm in a scheduled meeting (event), and back to warm white when the meeting is over, so co-workers know I'm busy without doing "are you busy" sign language through my window. The script is polled every 60 seconds. Tinkering with stuff like this is a lot of fun.
Recently, I had bizarre situation: I wanted to play a game from my childhood on Windows 11, but, without changing two booleans in the settings, I could not reliably move my in-game cursor. The catch is that to change those values in the settings, I needed to move my in-game cursor. So I was stuck.
After digging around, I found a file that looked like it could be the settings file, but it was not plaintext.
Naturally, I told Claude all the options I knew existed in the settings and told it what I needed it to change.
After about 10 minutes poking around my system and the file, it correctly identified the bits (not bytes!) that corresponded to the two settings, and flipped them on. It. Just. Worked!
(Well, then I found out I actually needed to do quite a lot more than flipping those bits, but I still found it worth sharing).
I have many more experiences similar to these. LLMs are an amazing superpower.
I have a similar experience. I'm playing minecraft lately and I have patched already like 5 issues in the server that I would never put together time to trace/debug/understand/fix, including some o(n^3) integration between mods that was lagging the server. Same thing for utilities, managing backups, etc.
I've said this time and time again but with LLMs I got the joy of being a little kid learning to code and build stuff again. I haven't had such a custom-built setup since my earliest college days, because I had lost the time to tinker and looked for stuff that just worked. Now tinkering is so much easier that I mod the software I use all the time as well.
For example, I needed to change something in a particular function of firefox (which was in and of itself an amazing claude adventure to find that solved a problem I've had for well over 2 years), but only that very specific function.
I didn't want to fork firefox and have to constantly rebuild it just because of this one function. So I setup an LD_PRELOAD (well, not LD_PRELOAD, but the macOS equivalent) trick that injects only my modified function, as well as a full mechanism that traps firefox's auto-update process to reinject/re-arm the LD_PRELOAD trick into newer versions. I've had it going on for 3 months without any issues.
I counted and I have about 18 custom built apps ranging from "full blown swift GUI" to "tiny helper script" that have really changed how I interact with my computers for the better. It's so cool to be living this revolution.
Freedom -- that's what it is. There are now more and more cases where we don't have to ask for permission.
Unfortunately, as I look around, I see most of the hardware vendors around me as gatekeepers. They prevent me from writing custom code in various ways. Apple restricts access to NFC or their UWB positioning, Supernote Manta does not let me access a bluetooth microphone, the list goes on. Denon at least has an API in their amps/receivers: buggy, but it's there.
I think, from a business perspective, they just don't see us at all. We're such a small, inconsequential part of the market that building open, free hardware with code that we can update, change, or alter for our needs is just.. not part of their business use-case.
I think right now AI is mostly providing a much better experience for using a computer for people that already have deep knowledge of how to use a computer. For example, no matter how many times I've tried to explain how to use it, my wife is just happy to keep plugging away at what she does without leveraging AI for automating away the repetitive parts of her work. I think she's a much more real-world use-case than I am. I like to tinker. She just wants to do what she does.
Denon is definitely one of the better examples, there's so much expensive home hardware out there that gives you basically nothing. Starting from ACs ending with TVs.
I unfortunately can't see it becoming in any way legally mandated either, just have to hope for a good vendor.
genuinely very interesting case to learn from for me because this was one of the HP branded Samsung printers which doesn't have native non-windows support !
Reminded me of when I had a Teletype ASR33 on AirPrint (https://github.com/hughpyle/ASR33/tree/master/cups). With LLMs that would have taken a half hour. It would have maybe been less fun? but there's a lot of time faffing around on PPD that I'll never get back.
I was able to get Claude to write an embedded Rust driver for an unsupported epaper screen in a couple of hours by providing it with the spec and some existing C drivers. It’s still not as fast as the arduino versions, but it let me make progress in a project that I’d been stuck on for months.
In general I've been really happy to leverage Claude to quickly build software that only I use. It fits my needs exactly and I don't have to worry so much about how others will use it, if it is generalized enough, if the documentation is up to date, etc.
Claude did not write any macOS driver. It uses the HP Linux driver inside docker. Here is prior art from 2017. In contrast to the AI gibberish, one can understand it:
On the bright side, I hope LLMs erode IP copyright so much we can have a cultural renaissance. China is always put as a horrible piracy heaven, but it is precisely their disregard of IP that got them where they are today. The exhorbitant copyright length of today is a net loss to society.
how would that be a cultural renaissance? quantity without at least discoverability just makes it worth-(less). And it's not like chinese companies are by default anti ip, they do like their work protected like most companies...
I did a similar project for another make of printer, but used DS Flash and GPT-5.6-Sol, so it was effectively free ($2-$3 of Flash and maybe 5% of a monthly Max sub, so $10?)
Had a similar experience. I bought an ePaper display and a Pi 4 to run a calendar widget on. I got stuck because the open source project I was building off expected the previous generation of ePaper display, and the firmware had changed completely. I found the new firmware examples, but got stuck trying to get it to work. With Claude assisting we banged it out in two sessions of about 3 hours each.
codeberg.org/mjmvisser/infoframe if anyone’s interested.
Claude is great at that. I have a usb keypad with no linux version of the app to program it. Since its just a vial/qmk based, claude built me a linux version in qt/python.
Claude can do Linux drivers too. A friend bought a second-hand Intel Mac, installed Linux, and found that some of the hardware didn’t work. It wasn’t very hard to get Claude to write those drivers.
Update: I saw a bunch of comments on the post asking how I got Claude to do this
I usually answer saying there's not really a hack for it, you just work with it, convey thoughts decently and try out things with educated guesses until it sticks with these projects.
I tried to get Copilot to port the Linux drivers for my HP CP1025 to macOS, but it failed. Even modern Linux can’t print to it any more, I had to put an older distribution on a RasPi and now I’m printing at reduced quality.
It was crazy how the LLM held on to outdated information. It suggested so many things that might have worked on an older macOS but very obviously wouldn’t nowadays. It also tried to port from Linux for a while until it eventually discovered that cups on Linux didn’t support that printer either.
I've seen this explained as LLMs being well - language models. Driver binaries are just a language understood by the machine executing the binary. While its basically unreadable for normal humans, it is just another language for LLMs & they are able to operate on it, changing the result & translating it (e.g. correlating with specs, logs, docs, etc.).
Given the positive results from what I've heard, this might be actually one are where LLMs could prove useful for once.
Nice! I've an ML-1710 that is sitting in a closet that I'd love to get properly working on macOS. I've tried with SPLIX and followed the directions to the letter to install the drivers, but it just doesn't stick, in that I can only manage to get one print queue through the device for each time the computer is turned on. I gave up and repaired a junked Epson and put that into service, but I really prefer the formar printer for making line tenplates.
The test printout mentions Samsung ML2010 which had a Mac osx driver (had a Ml2020 till a couple of weeks ago).. by the picture of the printer it seems they had an identical plastic mold..they most likely came from the same oem (xerox).. but still nice from Claude to figure it out..
This is awesome. I take it your plans for the next weekend include actually cleanrooming the driver so you can skip running it in a linux container? =P
If this could all finally solve, once and for all, printing and scanning issues it'd be lovely (btw there are entire businesses who's only raison d'etre is "installing printers at clients and fixing them when they stop printing").
But of course it's hard not to both marvel and lament (at) the fact that in the mid-1990s (so yup 30 years ago) I could:
nc 192.168.1.150 9100 < tiger.ps
And the native PostScript printer (also an HP laser btw: a LaserJet) would just start printing.
I know, I know, about garbled print jobs, pages of codes being printed, etc.
But still: it's hard to not at least wonder if some things haven't been lost. For a start printers with their own IP addresses were sweet (instead of a USB cable and, now, people setting up, say, a Pi just to expose a LAN IP for/to their printer). Then of course another talk could be had about the "quality" of modern day HP laser printers compared to what you'd get int the nineties.
I've always thought USB-only made no sense on a printer. If there was one device in your house that multiple computers (and phones, don't forget) would want to use simultaneously, it's a printer. I'll only buy a printer that has its own built in network connectivity. Infuriating to have to stick a Pi onto your printer just so it can do what should be basic, table-stakes functionality.
As kotaKat said, it's possible to use CUPS to talk to non-AirPrint printers with AirPrint.
This is what I do with two 4" USB-only thermal printers. They are connected to a Raspberry Pi running CUPS, so I can print labels to them from within my home network. I never need to print labels from my phone, but do sometimes need to print photos to one of the printers. Avahi on the Pi enables AirPrint, and iOS sees that and lets me do so.
I love seeing things like this. Is it not kind of a magical thing to see AI make stuff like this reality? This was always possible but not worth a human’s time. Now this guy has a working printer again. That’s pretty doggone neat.
All the people saying "it's not a driver, it didn't write a driver, it's wrapping the Linux one" are missing the point: no one cares - the printer prints. It didn't before, and now it does.
Personally, "AI wrote a driver" and "AI rebottled an existing solution and sold it as Dr. Claude's Miracle Driver" are semantically very different claims to be making in the public square. If you're only making it to use by yourself sure they might behave similarly, but when you're doing it for a public audience people will want to know if you're fibbing with your verbiage.
If you see articles from old computing magazines or TV shows in the 1980s (there’s some good rabbit holes on YouTube), the prevailing optimism was that everyone would have a computer in their kitchen and write their own programs for whatever they need to do..
But programming languages and operating system fragmentation didn’t let that really take off
Maybe now that original promise of personal computers can be realized :)
Imagine instead of going to the App Store, just telling ChatGPT etc to make a custom app and run it right away on your phone
That'd be an interesting future for sure but first we need Google to stop their power trip of needing to ID you before you can install an app on your phone, and likewise Apple will never allow that either without paying the Apple tax.
I feel like both Google and Apple see that future, and are now actively working to make sure it can't happen to protect their app store commissions.
The slightly sad part is that most of these LLM-assisted fixes probably never make it upstream, so life for non-technical Linux users does not improve...
If you do AI fixes, for the greater good, at least publish them (or even better, try to submit upstream, although expect to be ignored if the upstream does not like slop...)! :)
sliiiiightly obscure in that it seems to use the ULD drivers (or a variant of); HP's "unified linux driver" that talks Samsung's printing language. it's weird.
I was able to (through heavy Claude use) successfully reverse engineer a golf cart motor controller that is programmable over USB, but only was supported by a Windows application. Claude walked me through using ILSpy on the .NET assembly, using Wireshark to capture the protocol over USB, and to completely map out all of the functionality in the Windows application. The output was a portable C library and CLI program which, so far, has worked well.
I consider myself kind of an AI detractor but even I'll admit that the tool allowed me to do something it would have taken weeks-to-months to learn to do the hard way.
Had a similar thought today - maybe we could finally get Linux drivers for more HW...
I don't understand the technology enough to see why, but LLMs seem unusually skilled at reverse engineering proprietary software.
To some degree. But esp for drivers, you still need to know when they go wrong, and steer them right, or your code will either just not work or be an unmaintainable, not-upstreamable mess.
LLMs are good at producing what they/the public know.
In this case:
LLMs are also VERY good at transliteration, i.e., converting known-good Python to Rust.
Basically, If you have a well-documented problem, the LLM is a shortcut to learning it yourself. LLMs fail when you have a novel or poorly documented problem. They also fail when you provide the LLM with terrible context or too much context.
Don't sell in-context learning short. Right now I'm waiting on Claude to wrap up the latest of a half-dozen extensive changes to XML files for a fairly-obscure (and obsolete) closed-source electronics CAD program. I am pretty sure it doesn't know anything about these files besides what's in the XML .DTD file (which I also gave it.)
This is a very novel, reasonably-poorly-documented problem, and so far it has batted 1.000.
IMO it's because they don't get burnt out by a lack of results.
After 5-6 consecutive approaches fail, I need a reason to think the next one might work out to stay motivated.
Claude will keep burning credits trying new approaches until something sticks. That's a huge advantage in a field where most of the things you try don't go anywhere.
I had a discussion about this with a friend recently. I was using an LLM with a serial console that it wrote to allow us to share a connection to a Z80 computer running CP/M. I was having trouble with the assembler, it wouldn’t assemble in user 1 of a particular disk, so I asked the LLM for help. It debugged ASM.COM and the BDOS, walked through the source compared to memory dumps, basically banging its head on the wall for an hour or more, until it finally figured out and verified that my disk had a bad block. I never would have put in that much effort to find the root cause of the problem.
I don't think they're any more skilled at it than someone who knows how to reverse engineer stuff... But it is definitely a place where AI is amazing because reverse engineering is usually extremely time consuming and tedious. AI doesn't care about that.
It also has the benefit that it doesn't usually matter too much if it gets minor details wrong. It's definitely one of the areas - like hacking - where it's a) tedious and b) insensitive to mistakes where AI absolutely shines.
My experience is that they're better than me at a lot of the process, so probably worse than someone who's a full time reverse engineer but as good as or better than most. They'll definitely get some small details wrong that would derail the entire thing, so having some skills that are pretty much "This smells wrong" helps a lot, but I think for many scenarios they'll unblock someone who has little RE experience.
Also verifiable. LLMs shine when they can know when the task is completed correctly. Otherwise they will finish and hand over something that's wrong.
LLMs seem to be trained to work very well against a goal, especially one it can verify against. I guess because it can easily know if it passed or failed, va other tasks where good/bad output is subjective
It's LLMs' generalist skills. I think reverse engineering is usually hard when you're in an unfamiliar domain. Eg I've never programmed a videogame or windows application but I'm trying to crack one. On the other hand if you know the domain, and know what the programmers' intentions must be in any given block of code, it's often straightforward. There are no unfamiliar domains for LLMs, including it seems proprietary software.
And with the Linux Kernel being friendly to both LLM usage and a modern language, for some of us who don't know C, a huge barrier is lifted from being able to write device drivers.
Not a successful anecdote, but I have a Windows Hello compatible Kengsington fingerprint reader, and for some time I wanted to write drivers for Linux. Even without using C, it would have been a huge undertaking only to fail in the end; because Claude did much of the research and concluded that the device wouldn't work on Linux (can't remember why but it made sense). Then it suggested what could work.
Back in the day when dial-up modems were a "significant" market, the concept of "WinModems" came around. Minimum hardware, maximum software. If the sensor is good enough to actually work though, it probably won't be long before an agent can implement the driver, if it can't already.
I've had good luck using AI to reverse-engineer Bluetooth comms for "smart" products with shitty apps.
I've recently done the same for a Bluetooth LED matrix display, then took it a step further assembling my own hardware (ESP32 controller and RGBIC matrix) to have control over the firmware for features that weren't possible with the off-the-shelf device.
None of this would have been possible (or at least practical from a time-value perspective) for me to do without Claude driving the whole exercise.
Had a similar experience getting a niche app running under wine. The bot had to bring in a different open source renderer, patch dlls, adapt a mapping tool from a different chip architecture to partly map and modify the binary, crazy stuff. Alternatives exist but are expensive, this got it working in an hour when doing it myself would probably be 2 weeks.
Last week I had Claude add support for aac audio to davinci resolve on Linux, just by patching the binary. It did almost exclusively with gdb and objdump, patching about 5 functions over an hour or two.
I only got it to the proof of concept stage. The patch adds aac but breaks flac support in the process. And it only works for aac in mp4 container files. But I’m sure with a bit of time we could make a patch which works everywhere and is additive only.
I say ‘we’ - I barely helped. Almost all the work was done by Claude.
Here’s Claude’s report, if anyone wants to build on this work:
https://claude.ai/code/artifact/87d38c2e-9ecb-4066-90cf-e0b2...
Are we either in a dangerous time where we'll run out of people that have weeks to months, and the resolution/boredom/ability to figure this sort of thing out?
Or are we in a really cool time where we've solved everything so much so many times we can focus on other things?
Tertiary question: If answer two, what the fuck is that?
More the second.
For programmers this is the equivalent of when accountants got spreadsheets. We can just tell the machine what to do without manually performing all the steps.
Some programmers enjoyed the code writing more than the problem solving though.
Ditto (except not being an AI detractor): I used Claude and Codex to reverse engineer the proprietary protocol for controlling Devialet amplifiers and then build an iOS controller app to replace the manufacturer's abandoned official app.
The whole thing took about a day, spread out over a week or so. Without AI, I wouldn't have even started the project, because I couldn't spare the time it would have taken.
i looked those up, that's pricey gear. is that a similar app abandonment like with Sonos deprecating and moving to newer protocols?
Sort of. The company released a new model and deprecated its older ones. It’s still possible to control the amps with the (really neat) physical remote.
I wonder how hard it would be to create various firmware updaters for drives or other devices.
Firmware is a lot harder for a whole host of reasons but it is possible / I've done it.
The odds of success go up a LOT when the stock firmware is easy to extract and reverse engineer.
I'd be cautious here because you very easily could brick the hardware. For writing a PC driver it's a lot safer since you can just fail repeatedly until it works.
Yes! If only humanity limited the use of this tech to these kind of things where it make sense...
Unfortunately this is a very misleading article and headline. I don't doubt the end result - it's useful that it works, but it's not "natively" and, unlike what some people assume, Claude didn't write a driver. It basically used HP's existing proprietary driver in a Linux VM on macOS, and just bridged that to macOS.
It also requires a root launcher that runs code from the user ~/.hp1008 dir, so security is weakened.
yup, clocked this in just the first few lines of the transcript.
I am sooo tired of this AI generated slop.
It's strange, because I have zero doubt in my mind that Claude could 100% genuinely reimplement the driver and port it to actually natively run on macOS, were it prompted that way.
Agreed.
I bought some cheap host-managed SATA drives the other day that the BIOS can't see and Windows won't recognize. I asked Claude to write a Windows app so I can use them, and it resisted at first, but then gave up and wrote it and they now work great.
It had to implement the entire stack of bare-metal drive functions over SATA and a whole new filesystem to go with it.
Generate the VM, send it crafted PDFs to print, see what it produces, and build a driver. Not that “hard” even for a human, an AI could probably one-shot it.
For the amount of electricity wasted by the LLM in the data center it would have been more efficient to buy a new printer that works out of the box.
Redditors actually believe this
Also, they seem to care about wasting electricity but doesn’t bat an eye of discarding a perfectly fine printer.
Ah, 2026... When the "tech write up" on page 1 of "Hacker News" is some genius selling an LLM creating a VM as "wrote a driver".
OP should probably add this to his list of accomplishments on LinkedIn...
He could have done this with 10-15 minutes of googling instead of spending 4 hours prompting a LLM.
This comment should be pinned, and the fact that a misleading post continues to be on the first page blows my mind.
Yeah, that was rather disappointing. I wouldn't have minded that the Linux driver had been used as an input, allowing Claude to reason about the functionality and interface. That seems like a reasonable approach.
The "only built for Windows" is also a little dubious. Technically I suppose HP could have just intended it as a Windows printer, but the driver clearly already exists in CUPS, which Apple also uses, so porting the driver isn't an unreasonable thought.
UPDATE: Noted, shifted to a 100% native MacOS version now :D
https://github.com/Kuberwastaken/hp-laser-1008a-macos
Previous context I shared on X:
"Also some clarification on the "he's just using the linux driver in the VM" - not quite
This is one of the weirdest batch of printers HP made because it's a rebranded Samsung - it "comes" under HP's unified drivers system but specifically has Samsung's printer language so compatibility is extremely messy.
What this version does is take the Linux Unified Driver and extract just the relevant component, rastertospl, basically the codec that turns CUPS raster data into the Samsung SPL format the printer understands. That codec is then wired into macOS’s native CUPS stack, so printing happens through the system like a normal driver. There’s no Linux VM handling the actual print workflow and the entire process basically acting as a driver normally at system level.
In theory, yeah - rastertospl could be reimplemented from scratch. But that would be way more unreliable while turning this from a ~4-hour project into a ~4-day reverse-engineering project, when starting this, I really just wanted a working home printer and running a tiny compatibility applet in Docker just for that codec feels like a pretty reasonable compromise AND I get to not see my mac kernel crash if it messes up.
I didn't expect this to blow up this much lol, so I'll be experimenting with this further and am already in talks with the splix team to sort this specific version out"
I do not want to call anyone names but the level of pedantry and gatekeeping in this comment and the replies is outstanding. I can hear Chuck McGill screaming "You're not a real driver!".
On a similar experience, I use moonlight on my Android TV to stream video games from my computer in another room. I use my own fork from an unmerged PR which enables me to use an Xbox One Wireless adapter so I can play with my pad wirelessly. These pads have a 3.5mm jack on them which on Windows and Linux enables me to route audio from the game to headphones connected to the pad. Moonlight and the xow driver it bundled, was nowhere near being able to provide this as a feature.
After about 5 hours, feeding it the GIP spec, an export of sniffed usb traffic from Windows, prior art (xone driver for linux), and giving Claude connectivity to my Shield via adb, I had it working. This continuously blows my mind that I dont have to beg a developer on Github to do it for me.
Claude could do it for me for $20.
I have another controller-related anecdote.
I have a Razer Wolverine Xbox controller that has extra back paddle buttons. The controller doesn't expose the paddles directly to PC's over USB. You have to use button remapping on the controller to map them to 'real' Xbox buttons for the PC to see them. But I wanted to use the back paddle buttons on Steam as separate controls.
So I downloaded the latest firmware update off the internet (because what device doesn't have firmware updates these days), installed Ghidra and an MCP server for it, and told Sol to look for how I can expose these extra buttons to a PC host. Maybe we could write a firmware patch?
Turns out the controller already has a special mode to expose those buttons, possibly as a hardware test. But it was enough to write a Linux driver to put the controller into that mode, and a little bit of extra driver code to map the paddles to a Linux controller button, and voila. Paddles working in Steam.
And it only took a few hours to do, too. I spent more time making an open source repository out of the concept than I spent making it work.
What's the repository link? I think it would be fascinating to have a corpus of "hacked" solutions like this. Can't tell you how many times a couch co-op game night got sabotaged by some piece of hardware failing to communicate with another.
The creatively-named https://github.com/Netruk44/wolverine-v3-pro-linux
The "linux" support is pretty narrow (because I made this for myself). It's restricted to SteamOS. But I'm sure it could be ported easily, the repository contains documentation about the important parts from reverse engineering the firmware.
Thank you!
> spec, an export of sniffed usb traffic from Windows, prior art
I used to feel proud of the fact I reverse engineered some of my laptop's features using stuff just like this. I suppose that's over.
I suppose you can still be proud you did it during pre AI times and the gained knowledge by doing it yourself.
I don't expect Claude and other hosted AI's to be available so freely and thats when it'll get harder for me to do stuff like that.
Wouldn't it have made more sense for Claude to suggest using the existing Linux-Airprint-VM project/product that already does this exact thing?
There's even a zero-install method via https://printervention.app where it runs that Linux VM isolated inside a WebUSB-capable browser. That website itself was posted right here on HN not too long ago.
I get that the LLM code assistant software prefers writing stuff, but constantly re-writing the same solution seems a bit inefficient.
But it wouldn’t have used so many tokens ;)
used like $10 of tokens btw :)
Four hours of a machine looping through a cycle of repetition, guessing and failure, gratuitous air-punching and premature celebration, before eventually landing on a hideous "solution" that just uses an existing driver from another platform.
LLMs can do stuff but this isn't a good example.
So the critique from the other story holds true - it really is just running the Linux driver inside docker, and (perhaps) dressing it up as something more - though I note the claim on this page is walked back from the original 'writing the driver'. On the other hand, it really did get him printing from his Mac, so in this new LLM results based world we live in it did its job admirably.
Somehow, I'm not exactly sure why, I got creeped out by Claude's finishing line:
> Thanks for being such a game debugging partner through all the test pages. Enjoy printing, you and the family.
Maybe it's because my own LLM usage is very "Question > Answer" or "Do this > Agent does that" and I never say "Wow, that's crazy it works, thank you!" at the end or such, so I don't see that sort of things, but if I saw that regularly I'd turn me off so badly from using LLMs. I'm not exactly sure where this feeling is coming from though, it's relatively innocent but just feels so inauthentic, I'm guessing because it's simply a machine.
> Leave my family out of this!
https://peepshow.gifglobe.com/scene/?id=HAGUFD3NuzO4
I'd be willing to bet somewhere in that conversation he said family printer or something.
Seems an oddly specific thing to hone in on otherwise.
That's funny, 'Ctrl + F' for 'family' returns a lot of uses of that word in different contexts, so I guess it must have scored heavy eh
The way that you talk to it influences the way that it responds to you and it is not subtle. I don't want to hitch on to the "it's just really complicated autocomplete" bandwagon, but this is one of the ways that it does feel like that.
With voice dictation (wispr flow), I find it easier for me to talk naturally as if I'm talking to a friend. I'll sometimes give lengthy notes on context for a project, like why I want to do it, e.g. something for my wife to use.
So I find it common (and fine, I suppose) for Claude to reply using that context. "Let me know what your wife thinks of the app" etc.
Free opensource alternative to whisper flow : https://handy.computer
Awesome. I had a crack at the Xerox Travel Scanner 150, which had niche drivers for some reason, only shipped Windows and didn't make it into SANE. Wireshark and prior art from SANE got me most of the way. Getting the stepper motor working was really hard and I didn't manage to get it completely working Maybe I'll resurrect 15 year when it's a little older. I really fancied a Pi+Scanner pipeline with OCR/AI to file all my documents as they arrive. Maybe I should just take a photo?
Update: We're actually fully MacOS native now! https://github.com/Kuberwastaken/hp-laser-1008a-macos
https://xcancel.com/kuberwastaken/status/2089377982536388964
Does anyone know if Apple would actually agree to sign and allow the distribution of such a driver? The vendorid and productid clearly belong to another entity, which could hypothetically want to create their own driver?
I just fix a long standing bug on my Linux desktop I have had for years and kept meaning to look into to see if I could fix. The issue was I have a sound blaster katana sound bar and it works okay but the volume on the device is not in sync with the volume in Linux. In Windows it stays in sync. I can work around it by each time I boot, I press the button to go to max volume, then lower the volume in Linux to the desired level but it's been an annoyance. I described the issue to codex and within a few minutes it had it fixed by updating the pipewire device profiles to use the volume control it exposes. Honestly amazing since I doubt I would have ever gotten around to figuring this out since I didn't even know what level of the stack the issue was, I thought maybe it was in the driver itself.
You just gave me an idea to fix lots of little annoyances in my old Linux laptop that had been retired because of those! Maybe the old little laptop can still give me a few more years of fun.
Stuff like this is so nice, I wonder where it will go in the future. Recently on my PC I had a failed windows update that killed the bluetooth driver, I tried to fix it for over an hour and got no where (even consulting chat gpt). I just let codex loose with full authority on the problem and the driver was working again in 5 minutes with no reboot needed.
Along similar lines I used Codex to reverse engineer and build a modern driver for the niche, proprietary Sony USB protocol for an old camcorder I have lying around, having never done anything like that or used Rust before. It feels like LLMs could be a huge force in making older hardware usable again.
https://github.com/alexnorton/handycam-rs
Claude Code is extremely "honest", and uses that word 10 times in that short transcript.
I find it uses “faithful” an awful lot. But it comes in waves - not at all for a few days and then 10 times in an hour.
I have actual obscure RGB corner floor lamps with BLE in my office. I had Claude find the BLE protocol and use my Office 365 calendar feed to change their color to red when I'm in a scheduled meeting (event), and back to warm white when the meeting is over, so co-workers know I'm busy without doing "are you busy" sign language through my window. The script is polled every 60 seconds. Tinkering with stuff like this is a lot of fun.
Recently, I had bizarre situation: I wanted to play a game from my childhood on Windows 11, but, without changing two booleans in the settings, I could not reliably move my in-game cursor. The catch is that to change those values in the settings, I needed to move my in-game cursor. So I was stuck.
After digging around, I found a file that looked like it could be the settings file, but it was not plaintext.
Naturally, I told Claude all the options I knew existed in the settings and told it what I needed it to change.
After about 10 minutes poking around my system and the file, it correctly identified the bits (not bytes!) that corresponded to the two settings, and flipped them on. It. Just. Worked!
(Well, then I found out I actually needed to do quite a lot more than flipping those bits, but I still found it worth sharing).
I have many more experiences similar to these. LLMs are an amazing superpower.
I have a similar experience. I'm playing minecraft lately and I have patched already like 5 issues in the server that I would never put together time to trace/debug/understand/fix, including some o(n^3) integration between mods that was lagging the server. Same thing for utilities, managing backups, etc.
I've said this time and time again but with LLMs I got the joy of being a little kid learning to code and build stuff again. I haven't had such a custom-built setup since my earliest college days, because I had lost the time to tinker and looked for stuff that just worked. Now tinkering is so much easier that I mod the software I use all the time as well.
For example, I needed to change something in a particular function of firefox (which was in and of itself an amazing claude adventure to find that solved a problem I've had for well over 2 years), but only that very specific function.
I didn't want to fork firefox and have to constantly rebuild it just because of this one function. So I setup an LD_PRELOAD (well, not LD_PRELOAD, but the macOS equivalent) trick that injects only my modified function, as well as a full mechanism that traps firefox's auto-update process to reinject/re-arm the LD_PRELOAD trick into newer versions. I've had it going on for 3 months without any issues.
I counted and I have about 18 custom built apps ranging from "full blown swift GUI" to "tiny helper script" that have really changed how I interact with my computers for the better. It's so cool to be living this revolution.
Obscure? Sir, the printer is sold on Amazon. It is not obscure.
If I understand correctly, it just wraps an existing Linux driver in a container. You can hardly call that writing a driver.
Would calling it a "driver adapter" fit more accurately .. ?
I don't think so, no. It does not appear to be functioning as an OSX device driver. It's just hosting a network print server in docker.
Tbh I actually like this even more than writing a driver …
Makes it so if there’s an issue I don’t get a kernel panic
Maybe it could write something CUPS compliant though ?
It works with Cmd + P https://x.com/kuberwastaken/status/2089961185047437729
Why not call it a containerized driver?
Freedom -- that's what it is. There are now more and more cases where we don't have to ask for permission.
Unfortunately, as I look around, I see most of the hardware vendors around me as gatekeepers. They prevent me from writing custom code in various ways. Apple restricts access to NFC or their UWB positioning, Supernote Manta does not let me access a bluetooth microphone, the list goes on. Denon at least has an API in their amps/receivers: buggy, but it's there.
I think, from a business perspective, they just don't see us at all. We're such a small, inconsequential part of the market that building open, free hardware with code that we can update, change, or alter for our needs is just.. not part of their business use-case.
I hope that with AI, this becomes a far more compelling selling point that consumers demand.
I think right now AI is mostly providing a much better experience for using a computer for people that already have deep knowledge of how to use a computer. For example, no matter how many times I've tried to explain how to use it, my wife is just happy to keep plugging away at what she does without leveraging AI for automating away the repetitive parts of her work. I think she's a much more real-world use-case than I am. I like to tinker. She just wants to do what she does.
Denon is definitely one of the better examples, there's so much expensive home hardware out there that gives you basically nothing. Starting from ACs ending with TVs.
I unfortunately can't see it becoming in any way legally mandated either, just have to hope for a good vendor.
Thanks for sharing :)
linking this here for those who don't wanna read the threads https://github.com/Kuberwastaken/hp-laser-1008a-macos
genuinely very interesting case to learn from for me because this was one of the HP branded Samsung printers which doesn't have native non-windows support !
Reminded me of when I had a Teletype ASR33 on AirPrint (https://github.com/hughpyle/ASR33/tree/master/cups). With LLMs that would have taken a half hour. It would have maybe been less fun? but there's a lot of time faffing around on PPD that I'll never get back.
I was able to get Claude to write an embedded Rust driver for an unsupported epaper screen in a couple of hours by providing it with the spec and some existing C drivers. It’s still not as fast as the arduino versions, but it let me make progress in a project that I’d been stuck on for months.
Reverse engineering seems like an AI sweet spot.
In general I've been really happy to leverage Claude to quickly build software that only I use. It fits my needs exactly and I don't have to worry so much about how others will use it, if it is generalized enough, if the documentation is up to date, etc.
It's kind of nice.
Claude did not write any macOS driver. It uses the HP Linux driver inside docker. Here is prior art from 2017. In contrast to the AI gibberish, one can understand it:
https://www.alecburton.co.uk/2017/printing-from-a-docker-con...
There are many such tutorials and Claude just plagiarized as usual.
Something similar can be done on freebsd to use the much faster wireless drivers in Linux by passing the PCI device to a VM.
On the bright side, I hope LLMs erode IP copyright so much we can have a cultural renaissance. China is always put as a horrible piracy heaven, but it is precisely their disregard of IP that got them where they are today. The exhorbitant copyright length of today is a net loss to society.
how would that be a cultural renaissance? quantity without at least discoverability just makes it worth-(less). And it's not like chinese companies are by default anti ip, they do like their work protected like most companies...
Then I guess we need someone to sic Claude on trying to re-write the linux driver for MacOS then and see what happens.
I've had a lot of success (and fun) getting Claude to write a MacOS userland driver for a pointing device (ZSA Navigator).
See https://git.sr.ht/~rymndhng/teach-touch
my Brother dcp-t230 also doesn't have macos drivers and it's a usb only printer. if i ever get some tokens to burn, i would try the same.
i have a label printer that's in the same boat. I wonder how many tokens this convo was
I did a similar project for another make of printer, but used DS Flash and GPT-5.6-Sol, so it was effectively free ($2-$3 of Flash and maybe 5% of a monthly Max sub, so $10?)
It didn't write a driver. It used a linux driver. You don't need an LLM.
someone already burned those tokens for you: https://github.com/farafonoff/Brother-DCP-T230-MacOS-driver
I don't see anywhere in the post or the repo how much it cost him to do this in tokens.
> my Brother dcp-t230 also doesn't have macos drivers and it's a usb only printer.
Same thing here brother: DCP-L2510D (laser printer + scanner).
Wife is on MacOS and cannot print/scan from there, so I'm the scanman.
> if i ever get some tokens to burn
The real trick is to have the AI do something that makes its own money, then tokens are effectively free.
People who are complaining about token costs aren't trying.
Had a similar experience. I bought an ePaper display and a Pi 4 to run a calendar widget on. I got stuck because the open source project I was building off expected the previous generation of ePaper display, and the firmware had changed completely. I found the new firmware examples, but got stuck trying to get it to work. With Claude assisting we banged it out in two sessions of about 3 hours each.
codeberg.org/mjmvisser/infoframe if anyone’s interested.
Nice! About a year ago I used Claude to make a macOS driver for an ancient laser engraver that only ever worked with Windows.
https://github.com/leftouterjoins/EpilogDriver
Claude is great at that. I have a usb keypad with no linux version of the app to program it. Since its just a vial/qmk based, claude built me a linux version in qt/python.
Claude can do Linux drivers too. A friend bought a second-hand Intel Mac, installed Linux, and found that some of the hardware didn’t work. It wasn’t very hard to get Claude to write those drivers.
thats great but man I want a printer that is not manufactured by hp, epson or any of the giants. new player has entered the game
I wasn’t so lucky with my attempt for a Windows 11 driver for an old emaguc MT4 MIDI interface. It works on Macs, but no longer on PCs.
Claude worked for a while and then spun itself into a loop of making a mistake, correcting it, then making it again.
That was 9 months ago so perhaps I should try again.
why are people still surprised that this is possible? To me, this is has been normal for the past 1.5 years.
Update: I saw a bunch of comments on the post asking how I got Claude to do this
I usually answer saying there's not really a hack for it, you just work with it, convey thoughts decently and try out things with educated guesses until it sticks with these projects.
But I actually went ahead and exported the chat in a readable format for anyone curious enough to go through :) https://cdn.kuber.studio/chat/hp-laser-1008a-driver
I tried to get Copilot to port the Linux drivers for my HP CP1025 to macOS, but it failed. Even modern Linux can’t print to it any more, I had to put an older distribution on a RasPi and now I’m printing at reduced quality.
It was crazy how the LLM held on to outdated information. It suggested so many things that might have worked on an older macOS but very obviously wouldn’t nowadays. It also tried to port from Linux for a while until it eventually discovered that cups on Linux didn’t support that printer either.
Doesn't HPLIP handle it?
I've seen this explained as LLMs being well - language models. Driver binaries are just a language understood by the machine executing the binary. While its basically unreadable for normal humans, it is just another language for LLMs & they are able to operate on it, changing the result & translating it (e.g. correlating with specs, logs, docs, etc.).
Given the positive results from what I've heard, this might be actually one are where LLMs could prove useful for once.
Very impressive and enjoyable good experience. This was done with Opus 4.8! In theory Qwen 3.8-27B could do it too.
...I would have asked Fable.
https://printervention.app (also co-written by Claude) may be useful in similar cases.
Nice! I've an ML-1710 that is sitting in a closet that I'd love to get properly working on macOS. I've tried with SPLIX and followed the directions to the letter to install the drivers, but it just doesn't stick, in that I can only manage to get one print queue through the device for each time the computer is turned on. I gave up and repaired a junked Epson and put that into service, but I really prefer the formar printer for making line tenplates.
I'm pretty sure I've used that exact printer on Linux without issue. Long ago, deep into the pre ai era.
Edit: no, I was thinking of the older p1008.
from the screenshot, i believe it took the linux driver and transcribed to the mac kernel.
But the dominant print daemon on Linux, CUPS, was literally acquired by apple to form the basis of their printer architecture.
The test printout mentions Samsung ML2010 which had a Mac osx driver (had a Ml2020 till a couple of weeks ago).. by the picture of the printer it seems they had an identical plastic mold..they most likely came from the same oem (xerox).. but still nice from Claude to figure it out..
tbh at times it feels like my fear of failure and lack of imagination is now the limiting factor.
I did the same for a scanner that was missing an driver for latest macOS! https://github.com/sylvinus/freethescan
This is awesome. I take it your plans for the next weekend include actually cleanrooming the driver so you can skip running it in a linux container? =P
bro is going to need opus and a couple thousand dollars in tokens for something that _may_ work.
If this could all finally solve, once and for all, printing and scanning issues it'd be lovely (btw there are entire businesses who's only raison d'etre is "installing printers at clients and fixing them when they stop printing").
But of course it's hard not to both marvel and lament (at) the fact that in the mid-1990s (so yup 30 years ago) I could:
And the native PostScript printer (also an HP laser btw: a LaserJet) would just start printing.
I know, I know, about garbled print jobs, pages of codes being printed, etc.
But still: it's hard to not at least wonder if some things haven't been lost. For a start printers with their own IP addresses were sweet (instead of a USB cable and, now, people setting up, say, a Pi just to expose a LAN IP for/to their printer). Then of course another talk could be had about the "quality" of modern day HP laser printers compared to what you'd get int the nineties.
I've always thought USB-only made no sense on a printer. If there was one device in your house that multiple computers (and phones, don't forget) would want to use simultaneously, it's a printer. I'll only buy a printer that has its own built in network connectivity. Infuriating to have to stick a Pi onto your printer just so it can do what should be basic, table-stakes functionality.
A usb controller is way less expensive than something that can run a TCP stack and the associated software.
I was digging into the history of PostScript engines inside laser printers and Adobe made tons of royalty money off of that for quite a long time.
That mid-1990s postscript, networked printer when new cost as much as a small car! The HP Laser 1000 was like $250 tops new.
Yeah. I have a Stratasys J55 3D printer. Industrial and closed.
And now I can print to it via my Mac.
It's a fun time to be alive.
Very cool. I want to do something similar to ressurect old Orb disks from over 25 years ago.
This is very very cool. But now it has me worried about device driver coders being out of work. Why pay for months of low level coding. Grumble.
I've been taking Windows only apps from github and having Claude rewrite them for Linux. It's been awesome.
Next try writing a printer driver for your iPhone.
if you shoehorn it into CUPS you might as well just expose CUPS on your home network and use AirPrint via IPD at that point ;)
As kotaKat said, it's possible to use CUPS to talk to non-AirPrint printers with AirPrint.
This is what I do with two 4" USB-only thermal printers. They are connected to a Raspberry Pi running CUPS, so I can print labels to them from within my home network. I never need to print labels from my phone, but do sometimes need to print photos to one of the printers. Avahi on the Pi enables AirPrint, and iOS sees that and lets me do so.
I love seeing things like this. Is it not kind of a magical thing to see AI make stuff like this reality? This was always possible but not worth a human’s time. Now this guy has a working printer again. That’s pretty doggone neat.
Doesn’t every printer work with CUPS?
All the people saying "it's not a driver, it didn't write a driver, it's wrapping the Linux one" are missing the point: no one cares - the printer prints. It didn't before, and now it does.
Personally, "AI wrote a driver" and "AI rebottled an existing solution and sold it as Dr. Claude's Miracle Driver" are semantically very different claims to be making in the public square. If you're only making it to use by yourself sure they might behave similarly, but when you're doing it for a public audience people will want to know if you're fibbing with your verbiage.
Notably done on Opus 4.8.
If you see articles from old computing magazines or TV shows in the 1980s (there’s some good rabbit holes on YouTube), the prevailing optimism was that everyone would have a computer in their kitchen and write their own programs for whatever they need to do..
But programming languages and operating system fragmentation didn’t let that really take off
Maybe now that original promise of personal computers can be realized :)
Imagine instead of going to the App Store, just telling ChatGPT etc to make a custom app and run it right away on your phone
That'd be an interesting future for sure but first we need Google to stop their power trip of needing to ID you before you can install an app on your phone, and likewise Apple will never allow that either without paying the Apple tax.
I feel like both Google and Apple see that future, and are now actively working to make sure it can't happen to protect their app store commissions.
The slightly sad part is that most of these LLM-assisted fixes probably never make it upstream, so life for non-technical Linux users does not improve...
If you do AI fixes, for the greater good, at least publish them (or even better, try to submit upstream, although expect to be ignored if the upstream does not like slop...)! :)
See also: https://news.ycombinator.com/item?id=49344643
[dupe] Discussion, including activity from the dev https://news.ycombinator.com/item?id=49344643
I would like to see driver for my samsung printer. Drivers for mac was only for some very old macOS
"HP" "obscure"
Cool nonetheless.
sliiiiightly obscure in that it seems to use the ULD drivers (or a variant of); HP's "unified linux driver" that talks Samsung's printing language. it's weird.
https://wiki.debian.org/CUPSPrintQueues#hpuld
claude seems to have realized it was one of the samsung printer variants and just shoehorned in a samsung MFP driver to the OS.
Performing Stallman's stunt. Cool story bro, but unverified. Guy is marketing AI on X with an "attention is all you need" picture etc.
I'm all for being skeptical, but it doesn't take too much digging to find the proof (it's in the original tweet thread): https://github.com/Kuberwastaken/hp-laser-1008a-macos
But it's not completely native, it's a wrapper around the original linux driver (or parts thereof) running in a container.
Still better than nothing.
That runs the original HP driver in a Docker container, using two minuscule Python scripts.
Bro is marketing it as a (native) MacOS driver.
güzel bir çalışma olmuş