Skip to content

Stream and Screenshot your reMarkable Tablet over TCP

License

Notifications You must be signed in to change notification settings

cloudsftp/reView

Repository files navigation

reView

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.

Prequisites

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

Ubuntu

sudo apt install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good

openSUSE

sudo zypper install gstreamer gstreamer-plugins-base gstreamer-plugins-good

Usage

Server

The 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-server

And then start it manually.

ssh root@${REMARKABLE_IP}
RUST_LOG=trace ./review-server

Note: 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'

Client

Options for the client can be set as command line options or environment variables. Command line options override the environment variables.

Command Line Options

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

Environment Variables

Corresponding keys:

  • REMARKABLE_IP
  • REMARKABLE_TCP_PORT
  • REMARKABLE_SSH_KEY_PATH
  • REMARKABLE_FRAMERATE

Building

Client

Just build it

cargo build --release --bin review-client

Or with dagger

dagger call build-client --source . export --path review-client

Server

With dagger

dagger call build-server --source . export --path review-server.arm.static

Development

Additional Dependencies

openSUSE

sudo zypper in gstreamer-devel gstreamer-plugins-base-devel

SSH

SSH is only used for authorization, not encryption.

Authentification

  1. The server send a randomly generated 256 byte authorization token to the client.
  2. 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.
  3. 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.

About

Stream and Screenshot your reMarkable Tablet over TCP

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published