[HN Gopher] Writing your own CUPS printer driver in 100 lines of...
___________________________________________________________________
Writing your own CUPS printer driver in 100 lines of Python (2018)
Author : todsacerdoti
Score : 125 points
Date : 2025-05-25 15:52 UTC (7 hours ago)
(HTM) web link (behind.pretix.eu)
(TXT) w3m dump (behind.pretix.eu)
| roywashere wrote:
| Pretix is a very interesting piece of open source software for
| selling event tickets. It's nice to see them venturing out to
| writing printer drivers for ticket printers! All the best for
| them.
| behnamoh wrote:
| https://gimp-print.sourceforge.io/ which uses CUPS helped me
| resurrect an old Canon printer for which the company refused to
| provide updated drivers on macOS.
|
| I was about to throw it in the recycling/trash, but I just
| couldn't accept that a perfectly fine hardware was crippled
| because the software was not updated to work on the latest macOS
| versions. Perplexity pointed me to Gutenprint and it worked
| wonderfully! The only thing that doesn't work is the scanner
| functionality.
| asveikau wrote:
| Many years ago I remember Windows support vanished on a bunch
| of printers at the 32 to 64 bit transition. That was around the
| time I learned how printing on Linux and BSD worked, to save a
| printer or two.
| LargoLasskhyfv wrote:
| Did you try http://sane-project.org for the scanner part? They
| have support for some Canons, maybe you're lucky?
| exhilaration wrote:
| I bought VueScan in 2014 specifically for a Canon scanner,
| looks like it's still around: https://www.hamrick.com/
| saltcured wrote:
| This takes me waaaaaaaay back to when I did my first bit of
| practical low-level programming. I wrote a little C program that
| translated PNM bitmaps into the wire format for my dusty 24-pin
| Epson dot matrix printer. I don't remember the details, but I
| used it with some plugin system involving Ghostview to print
| postscript documents from my first Linux system in the early 90s.
| whycome wrote:
| Is there an LLM specifically for this use case scenario?
| a-ungurianu wrote:
| I'm not clear what you're asking with this question.
|
| Do you mean a LLM to write printer drivers? For that I think
| any of the coding LLMs should be able to help
|
| Or do you mean using an LLM to do the raster -> FGL format
| translation? While I'm sure it might be possible, feels like an
| awful waste of resources, and when it comes to printers, you
| kinda want the guarantee that what comes out is the same that
| comes in.
| userbinator wrote:
| _However, the license of the BOCA driver forbids using their
| driver to control printers of other vendors._
|
| Since this is a printer, I interpret those the same way as
| "you're not allowed to use third-party ink": I don't care.
| ale42 wrote:
| Personally, I don't either. But if you're a business, you
| probably need to care even if you don't want to.
| userbinator wrote:
| Enforceability of EULAs has always been a rather open-ended
| question.
| ValdikSS wrote:
| Oh!
|
| Take a look at EPSON printer driver, which prohibits you from:
|
| 1. Sharing the printer you own with anyone else unless they
| agree to the license of the driver (incl. business setup)
|
| 2. Sharing the printer over the internet unconditionally,
| because this allows to use the driver for people who did not
| agree to the license
|
| 3. Incorporating the driver in any "revenue generating product
| or service"
|
| https://download.ebz.epson.net/la/linux/inkjet_for_linux.htm...
|
| 1. Grant of License.
|
| [...] provided that the Software is used (i) only in a single
| location (e.g., a home or office or place of business), or in
| the case of a mobile device, on a Device owned or otherwise
| controlled by you, and (ii) only in connection with Epson
| Hardware owned by you. You may allow other users of the Epson
| Hardware connected to your network to use the Software,
| provided that you shall ensure that such users use the Software
| only in accordance with this Agreement. You agree to be
| responsible for and indemnify Epson for liabilities incurred as
| a consequence of use by such users.
|
| 3. Other Rights and Limitations.
|
| [...] Further, you agree not to place the Software onto or into
| a shared environment accessible via a public network such as
| the Internet or otherwise accessible by others outside the
| single location referred to in Section 1 above.
|
| You may not rent, lease, distribute, lend the Software to third
| parties or incorporate the Software into a revenue generating
| product or service.
| ValdikSS wrote:
| >Unfortunately, CUPS sends us grayscale values and our printer
| only supports pixels that are either fully black or white. Since
| we do not want to drop grayscale values compeltely, we want to
| apply Dither.
|
| CUPS can send black-and-white 1 bit data, dithered. It's just a
| matter of proper option in a PPD file. It could also handle
| rotation by itself.
|
| Other than that, pretty good and accurate article! I bet you can
| write the driver (filter) even in <50 lines of Python code :P
| dale_huevo wrote:
| This is great.
|
| Until now I thought CUPS drivers had to be written in C in order
| to link against its internal APIs.
|
| Most inexpensive Chinese thermal printers ship with blatantly GPL
| violating drivers and they are precompiled binaries. Which means
| half the time they won't work in your situation, assuming you
| trust their probable malware in the first place.
___________________________________________________________________
(page generated 2025-05-25 23:00 UTC)