← Back to context

Comment by butz

5 hours ago

Great initiative. I wonder, how likely is it for a complete beginner to break their own printer or scanner by making a mistake in driver implementation? Or is it possible to work on hardware support without having a physical device? I assume it is impossible to test each and every one printer and scanner, so there is probably some clever tricks there, right?

I work mostly with the old microcontroller-based cheap consumer ("GDI") USB models circa 2000-2010, these are hardly possible to brick with software, as some of them even don't have a firmware and expect the PC to upload it on each power on sequence.

The hardware safety mechanisms are usually robust (USB communication is handled by "Formatter Board", all the mechanical stuff is in the "Engine Controller" power).

Newer Linux-based models have filesystems, software, and vulnerabilities, printer hacking on Pwn2Own is an every year common occurrence. These could be permanently bricked by the software in a common sense, and would require a firmware reflash using the bootloader or external means.

>Or is it possible to work on hardware support without having a physical device?

Absolutely, but for me this is very inconvenient—like the debugging over the phone.

Sometimes the bug is as low-level as in the USB stack: https://lore.kernel.org/linux-usb/3fe845b9-1328-4b40-8b02-61...

>I assume it is impossible to test each and every one printer and scanner, so there is probably some clever tricks there, right?

Not much, unfortunately. There's ongoing work on modern (driverless) printer behavior emulation, but it is under heavy development and not ready yet: https://github.com/OpenPrinting/go-mfp

Nothing for the older printers and scanners which require it's own driver, of what I'm aware.