Native printing to reMarkable.
Go to file
Evan Widloski 8e07c1eb9f
Merge pull request #13 from cherti/socketactivation
socket-activate printer
2024-03-17 21:06:16 -05:00
.gitignore add download_prebuilt target 2020-07-12 18:26:11 -05:00
go.mod Add metadata for v3 software 2023-01-05 21:06:32 -06:00
go.sum add .sum file 2023-03-10 18:55:02 -06:00
img.jpg add image 2020-10-20 18:37:42 -05:00
install.sh Update the install script to ensure it works with recent project state 2024-01-15 14:46:30 -05:00
LICENSE Create LICENSE 2021-02-25 18:56:44 -06:00
main.go re-arrange for better maintainability 2023-12-30 00:05:50 +01:00
Makefile implement socket-activation and manual activation besides each other 2023-12-29 21:51:34 +01:00
notes.md add notes file 2021-09-24 12:14:23 -05:00
printer.service Remove WantedBy from service file because it's socket activated 2024-01-15 15:29:08 -05:00
printer.socket listen on 0.0.0.0 2024-03-17 21:01:00 -05:00
README.md Change the wording in README.md to correctly describe functionality 2024-01-15 14:49:47 -05:00
remarkable.ppd add rmfilter cups fitler 2021-03-28 23:38:51 -05:00
rmfilter simplify rmfilter 2021-06-18 17:15:29 -05:00

remarkable_printer

Print natively to your reMarkable wirelessly with no extensions or reMarkable cloud.

Quick Start

Connect the reMarkable via USB and make sure it has internet access.

Connect to the reMarkable with SSH and execute

wget -O - http://raw.githubusercontent.com/Evidlo/remarkable_printer/master/install.sh | sh

Then configure your OS to print to the reMarkable, shown below.

Adding the reMarkable as a printer

Linux/OSX (easy)

make install_config host=10.11.99.1

Linux (manual)

We will add the reMarkable as an Appsocket/JetDirect printer and use the PDF printer driver.

$ sudo system-config-printer
# Add > Network Printer > AppSocket/HP JetDirect
# Enter the address/hostname of the device (10.11.99.1 for USB connected device)
# Forward > Generic > Forward > PDF > Forward
# Set the printer name and save

You may need to install system-config-printer first.

OSX (manual)

See Add a network printer by its IP address. Use 10.11.99.1 for the address and HP Jetdirect for the protocol.

Windows (manual)

See here

Caveats

No authentication, so keep WiFi off while not in use.

How it works

Virtually all network printers accept raw Postscript/PDF data on TCP port 9100 via the Appsocket/HP Jetdirect protocol. Sometimes this data is preceded by a few plaintext lines telling the printer information such as the print job name and print settings.

This setup simply listens on TCP 9100 and upon data sent waits for a PDF header, then begins saving data to a pdf file (while also creating the accompanying .metadata file) and then exits again, waiting for the next connection on the port to repeat the procedure. The output filename is extracted from the print job name line, if it exists.

Testing on host

$ make printer.x86
$ ./printer.x86 -h
Usage of ./printer.x86:
  -debug
        enable debug output
  -host string
        override bind address (default "0.0.0.0")
  -port string
        override bind port (default "9100")
  -restart
        restart xochitl after saving PDF
  -test
        use /tmp as output dir

Debugging

On the reMarkable (via SSH)

journalctl --unit printer -f

Then try to print a document.