{
  "id": 6368523,
  "title": "How to build a printer",
  "url": "https://urgent.news/2026/09/08/how-to-build-a-printer",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-08T21:22:11.000Z",
  "source": {
    "name": "Hacker News",
    "slug": "hacker-news",
    "url": "https://nishantjosh.dev/blogs/how-to-build-a-fking-printer/"
  },
  "original_language": "en",
  "account": "On an ordinary day, a writer pondered the concept of crafting a printer. Curiosity led them to stumble upon the Xteink X3, an e-ink display. Intrigued, they noticed the device's programmable nature, prompting them to customize it further. They began altering the CrossPoint firmware, introducing features like distinct boot animations, dice shaking for random outcomes, and a LinkedIn QR code for professional networking.\n\nThe writer realized that if the Xteink resembled paper, it ought to function like paper. This notion sparked the idea of utilizing the Internet Printing Protocol (IPP), which enables computers to interact with printers. Following this, they determined the printer's capabilities, such as monochrome output, 300 dpi resolution, one-sided printing, and accepting Apple raster and PWG raster formats.\n\nTo facilitate communication between the MacBook and the Xteink, the writer designated the printer with the name \"penguin,\" employing Bonjour to broadcast an _ipp._tcp service. They incorporated universal subtype support to allow macOS to automatically discover the printer. Transmitting a page to the Xteink proved to be just one aspect of the task; receiving it was equally crucial.\n\nAn A5 or Letter page at 300 dpi equated to approximately 8.4 MB of grayscale pixels. Given the Xteink's limited resources, with only 400 KB of RAM, the writer devised a solution. They opted to use memory mapping on the SD card, effectively simulating additional RAM. This allowed the Xteink to act as a storage device, with the incoming page undergoing transformation and directly written to the display.\n\nThe writer executed this process row by row, utilizing the display's reserved RAM as working space. The decoded pixels were then arranged on the screen, with each completed page saved as a BMP on the SD card. The printer server ran on the Xteink itself, enabling it to join a Wi-Fi network or create its own hotspot. Saved printouts could be accessed on the reader through a folder on the SD card.\n\nThrough tireless effort, the writer successfully printed a manga page from Mushoku Tensei, experiencing a significant improvement in visual quality. The printer server, developed within the CrossPoint framework, was integrated into the Xteink, ensuring seamless functionality. With this creation, the writer had effectively built a printer capable of printing documents directly onto an e-ink display.",
  "summary": null,
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 2,
    "also_reported_by": [
      {
        "outlet": "Hacker News Best",
        "title": "How to build a printer",
        "url": "https://urgent.news/2026/09/08/how-to-build-a-printer-6397363",
        "published": "2026-09-08T21:22:11.000Z"
      }
    ]
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}