remarkable_printer/README.md
2021-06-22 15:05:34 -05:00

76 lines
2.4 KiB
Markdown

# remarkable_printer
Print natively to your reMarkable wirelessly with no extensions or reMarkable cloud.
![](img.jpg)
## Quick Start
Connect the reMarkable via USB and make sure it has internet access.
Connect to the reMarkable with [SSH](https://remarkablewiki.com/tech/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](https://support.apple.com/guide/mac-help/add-a-printer-on-mac-mh14004/mac). Use `10.11.99.1` for the address and `HP Jetdirect` for the protocol.
#### Windows (manual)
See [here](https://github.com/Evidlo/remarkable_printer/wiki/Windows-Setup)
#### 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 script simply listens on TCP 9100 and waits for a PDF header, then begins saving data to a pdf file (while also creating the accompanying .metadata file). 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](https://remarkablewiki.com/tech/ssh))
journalctl --unit printer -f
Then try to print a document.