How to build a printer

(nishantjosh.dev)

161 points | by cat-whisperer 5 hours ago

11 comments

  • ValdikSS 1 hour 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 50 minutes 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 29 minutes 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.

    • cat-whisperer 55 minutes ago
      lovely, this would save me a bunch of memory during transformation and dithering. Will do!
  • alternativeworl 46 minutes 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 2 hours ago
    Good job, but I’m left wanting to know how to build a printer.
  • jarboot 3 hours ago
    This is amazing!!! It just makes sense. And its just how you would want to use a e reader.
  • greazy 2 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 2 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 2 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 51 minutes ago
        It's an e-reader. According to the specs it has native support for PDF.
        • mrheosuper 34 minutes 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 2 hours ago
    I love the concept, but I wonder why he wasn’t printing to PDF. Can this device not render PDFs?
    • ValdikSS 1 hour 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 2 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 2 hours ago
      Probably not. It doesn't appear to have enough ram. I'm not sure the CPU is up to that either.
  • NDlurker 2 hours ago
    Very cool. I'll be updating to this fork
    • cat-whisperer 1 hour 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 3 hours ago
    We finally have PADDs from Star Trek!
  • sho_hn 2 hours ago
    This is a fantastic idea!
  • stavros 3 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 2 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 2 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 2 hours ago
        What about the back light? Are they otherwise identical?
        • cat-whisperer 2 hours ago
          X3 isn't backlit, but the battery lasts 7 days. So, it's pretty good for me
    • hamaluik 1 hour 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 4 hours ago
    Outstanding! This is so...correct.