How to build a printer

(nishantjosh.dev)

200 points | by cat-whisperer 6 hours ago

12 comments

  • ValdikSS 2 hours ago
    >penguin would shrink the result to fit its screen. >I declared A5 and Letter paper, media type stationery, and an output bin called face-up.

    You can (and should!) define exact dimensions of your screen in `media-size-supported`. It will probably be a non-standard IPP name, that's why you should define that in `media-supported` as `om_NNNmmxYYYmm` or `oe_NNNinxYYYin`

    That way you don't need to scale the incoming data, the PC will format it exactly to the dimensions of the screen.

    Both PWG Raster and Apple Raster support 1-bit-per-pixel mode (instead of 8-bit-per-pixel you use), that's why the input could be 8 times less in size. Use `print-color-mode-{supported,default}=bi-level` instead of `monochrome` for that. And also tune `urf-supported`'s `W` option, use `W1` for this case.

    The screen/dithering could be ass in 1-bit mode, see https://github.com/OpenPrinting/libcupsfilters/pull/160 where I added more dithering options (Linux-only though, Apple seems to abandon their CUPS).

    • Neywiny 2 hours ago
      This is why I like it here. Somebody does irrefutably incredible work outside of their comfort zone, and somebody else goes "yeah actually I was born in that zone. Moulded by it. Here's how to improve it" (in a positive way)
      • ValdikSS 2 hours ago
        Oh no, I wasn't, and that's definitely not my comfort zone. I mess with the printers and printing stack due to anger, not because I like it.

        It's bugs on bugs, with bugs chasing bugs! So little developers, so complex stack with 25 years of technical debt, and little community around because it's not a sexy technology to be involved in.

        That's why I have to dive deep and fix my bugs myself if I want to make it work properly as I would like it to. I also ended up making my own print server device, because China did not make a proper one for some reason for all these years.

        • edoceo 2 minutes ago
          That's even cooler
    • cat-whisperer 2 hours ago
      lovely, this would save me a bunch of memory during transformation and dithering. Will do!
  • alternativeworl 2 hours ago
    Very cool. I was expecting to learn about the ins and outs of ink, printheads etc but instead learned "How to build a paper that acts like a printer" which turned out much more entertaining.
  • ks2048 3 hours ago
    Good job, but I’m left wanting to know how to build a printer.
  • jarboot 4 hours ago
    This is amazing!!! It just makes sense. And its just how you would want to use a e reader.
  • greazy 3 hours ago
    I don't understand the purpose. What am I missing?

    The author "prints" to the eink display. Why not load say the pdf directly?

    • stdatomic 3 hours ago
      From the 4th line in the article:

      > But getting stuff onto it was tedious. I had to join its hotspot and open a little upload website in my browser. Yuck.

      Anyway, very creative, I like the idea a lot.

    • cat-whisperer 3 hours ago
      > I was thinking of this, but rendering PDF takes a lot out of a 400KB RAM'd device. It also needs a ton of things to actually work which the ROM can't hold.

      > Kindles have a ton of RAM, this one didn't.

      • ghostly_s 2 hours ago
        It's an e-reader. According to the specs it has native support for PDF.
        • mrheosuper 2 hours ago
          It's an esp32 MCU, even if it can somehow run the PDF render pipeline, it won't be more ideal than just accept the raw byte stream and display.
  • joshmarinacci 3 hours ago
    I love the concept, but I wonder why he wasn’t printing to PDF. Can this device not render PDFs?
    • ValdikSS 2 hours ago
      PDF is very, very complicated standard which can't be handled properly on tiny MCUs with reasonable performance and spec conformance:

          - 4 font formats
          - 9 image formats
          - blending with transparency
          - different colorspaces, each image could use its own on the page
          - different dithering algorithms, each image with its own
          - the page can have elements from another pages (global elements)
      
      This is only a small part from the top of my head.

      Common simple home printers absolutely should not accept regular PDF as an input: thanks to Apple and IETF we now have Apple Raster and PWG Raster for printers, as a part of AirPrint and IPP Everywhere/Mopria driverless printing standards, which are very similar but have slightly different options and headers. It's a simple raster input for printers specifically.

      Some companies, such as HP, invented a "raster PDF": PCLm / PCLms. Don't be confused by the name, it's a regular standard-conforming PDF which contain nothing but a full-page JPEG on each page, and don't use any other features. It's created only to be able to open "printed page" (driver output) in a standard PDF viewer on a PC for debugging or business logging needs, but otherwise it's like a regular JPEG with additional per-page metadata.

    • cat-whisperer 3 hours ago
      I was thinking of this, but rendering PDF takes a lot out of a 400KB RAM'd device. It also needs a ton of things to actually work which the ROM can't hold.

      Kindles have a ton of RAM, this one didn't.

    • bluGill 3 hours ago
      Probably not. It doesn't appear to have enough ram. I'm not sure the CPU is up to that either.
  • NDlurker 3 hours ago
    Very cool. I'll be updating to this fork
    • cat-whisperer 3 hours ago
      Thanks. It's rough around the edges, so PRs are open, and there's a recipe in the repo if you want to build your own apps.
  • andyfilms1 4 hours ago
    We finally have PADDs from Star Trek!
  • sho_hn 4 hours ago
    This is a fantastic idea!
  • stavros 4 hours ago
    I've been seeing the Xteink a lot lately. Should I get an X3 or an X4? I don't really know why I want it, but I have an eInk addiction, so I just need it.
    • a2dam 4 hours ago
      I've owned all of them and the answer is the X4 Pro IMO. It has a backlight, which is the only thing I really missed on the others.
    • cat-whisperer 4 hours ago
      It's funny that X3 is a successor of X4. Only downside is that X4 has a USB-C port and X3 doesn't
      • stavros 4 hours ago
        What about the back light? Are they otherwise identical?
        • cat-whisperer 3 hours ago
          X3 isn't backlit, but the battery lasts 7 days. So, it's pretty good for me
    • hamaluik 3 hours ago
      I bought an x4 a month or so ago, zero regrets. It sounds hyperbolic but it’s finally been the thing to actually decouple me from my phone. Whenever I’m out and about, bored, I just slide it out and pick up where I left off reading last. It’s a nicer reading experience on my kobo but the portability and.. frankly charm just can’t be beat.
  • Brian_K_White 5 hours ago
    Outstanding! This is so...correct.
  • phoenixtao 44 minutes ago
    [dead]