Live stream and take snapshots of the contents of your reMarkable tablet. Based on reStream.
Please note that this project is still under heavy development. The server will open a port (6680 per default) on your reMarkable tablet. It authorizes incoming connections via SSH. I am no cybersecurity expert, so please DON’T rely on the correctnes of the implementation. Also, the content of the connection is NOT encrypted. Please refer to the SSH section for further details.
On the reMarkable you need
- The server installed and running as a service or manually. Please refer to the Usage section for setup instructions.
- An authorized public SSH key. Please follow this manual.
On your PC you need
- Gstreamer
- Gstreamer Plugins Base
- Gstreamer Plugins Good
sudo apt install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-goodsudo zypper install gstreamer gstreamer-plugins-base gstreamer-plugins-goodThe server must be running.
To install it, first build (see later in this document) and then copy it to your reMarkable.
scp review-server.arm.static root@${REMARKABLE_IP}:review-serverAnd then start it manually.
ssh root@${REMARKABLE_IP}
RUST_LOG=trace ./review-serverNote: server does not exit when you run it as an SSH command directly and then abort it with Control+C.
You can also install it as a service.
scp review.service root@${REMARKABLE_IP}:/etc/systemd/system
ssh root@${REMARKABLE_IP} 'systemctl enable --now review'Options for the client can be set as command line options or environment variables. Command line options override the environment variables.
Usage: review-client [OPTIONS]
Options:
--remarkable-ip <remarkable-ip> IP of the reMarkable tablet (default: 10.11.99.1)
--tcp-port <tcp-port> TCP port for video stream (default: 6680)
--ssh-key <ssh-key> Private SSH key file path. If not specified, attempting all keys in the SSH directory
--framerate <framerate> Framerate (default: 50)
-h, --help Print help
-V, --version Print version
Corresponding keys:
REMARKABLE_IPREMARKABLE_TCP_PORTREMARKABLE_SSH_KEY_PATHREMARKABLE_FRAMERATE
Just build it
cargo build --release --bin review-clientOr with dagger
dagger call build-client --source . export --path review-clientWith dagger
dagger call build-server --source . export --path review-server.arm.staticsudo zypper in gstreamer-devel gstreamer-plugins-base-develSSH is only used for authorization, not encryption.
- The server send a randomly generated 256 byte authorization token to the client.
- The client signs this token with either the explicitly specified private SSH key,
or all the private SSH keys in the default SSH directory (
~/.ssh). Then it sends the signatures to the server. - The server verifies each one of the signatures with each authorized keys in the default authorized keys file (
/home/root/.ssh/authorized_keys), until one of the authorized keys matches the signature.
You can explicitly set the private SSH key to be used via a command line option or an environment variable.