8.9 KiB
rMview: a fast live viewer for reMarkable 1 and 2
Features
- Demo 🚀 here
- Fast streaming of the screen of your reMarkable to a window in your computer
- Support for reMarkable 1 and 2
- UI for zooming, panning, rotating
- Pen tracking: a pointer follows the position of the pen when hovering on the reMarkable
- Clone a frame into separate window for reference
- Save screenshots as PNG
📢 Volunteers needed: if you have experience with producing binary bundles with pyQt, and feel like contributing to the project, drop me a line!
Check the releases page for executable bundles. If there is no bundle for your operating system then follow the installation instructions below.
Installation
As a basic prerequisite you will need Python3 on your computer.
⚠️ Please make sure
pip
is pointing to the Python3 version if your system has Python2 as well. If not, usepip3
instead ofpip
in what follows.
⚠️ WARNING ⚠️: If you use Anaconda, please install the dependencies via
conda
(and notpip
) then runpip install .
.
Semi-automatic installation
The easiest installation method is by using pip
, from the root folder of this repository:
pip install .
(please note the command ends with a dot)
which will install all required dependencies and install a new rmview
command.
Then, from anywhere, you can execute rmview
from the command line.
The tool will ask for the connection parameters and then ask permission to install the VNC server on the tablet.
Press Auto install to proceed.
Manual installation
Install the dependencies (PyQt5, Paramiko, Twisted) with pip
or conda
manually:
pip pyqt5 paramiko twisted
Then you can run the program with python -m rmview
.
On the reMarkable itself you need to install rM-vnc-server by copying the relevant binary from the bin
folder:
# For reMarkable 1
scp rM1-vnc-server-standalone REMARKABLE_ADDRESS:rM-vnc-server-standalone
# For reMarkable 2
scp rM2-vnc-server-standalone REMARKABLE_ADDRESS:rM-vnc-server-standalone
Usage and configuration
Suggested first use:
after installing run rmview
, insert when prompted the IP of your tablet and the password,
as found in the Menu / Settings / Help / Copyright and Licences menu of the tablet.
Then, optionally, select "Settings..." from the context menu (or the error dialog) to open
the default configuration file which you can edit according to the documentation below.
More generally, you can invoke the program with
rmview [config]
the optional config
parameter is the filename of a json configuration file.
If the parameter is not found, the program will look for a rmview.json
file in the current directory, or, if not found, for the path stored in the environment variable RMVIEW_CONF
.
If none are found, or if the configuration is underspecified, the tool is going to prompt for address/password.
Configuration files
The supported configuration settings are below.
Look in file example.json
for an example configuration.
All the settings are optional.
Setting key | Values | Default |
---|---|---|
ssh |
Connection parameters (see below) | {} |
orientation |
"landscape" , "portrait" , "auto" |
"landscape" |
pen_size |
diameter of pointer in px | 15 |
pen_color |
color of pointer and trail | "red" |
pen_trail |
persistence of trail in ms | 200 |
background_color |
color of window | "white" |
hide_pen_on_press |
if true, the pointer is hidden while writing | true |
show_pen_on_lift |
if true, the pointer is shown when lifting the pen | true |
Connection parameters are provided as a dictionary with the following keys (all optional):
Parameter | Values | Comments |
---|---|---|
address |
IP of remarkable | tool prompts for it if missing |
auth_method |
Either "password" or "key" |
defaults to password if key not given |
username |
Username for ssh access on reMarkable | default: "root" |
password |
Password provided by reMarkable | not needed if key provided |
key |
Local path to key for ssh | not needed if password provided |
timeout |
Connection timeout in seconds | default: 1 |
insecure_auto_add_host |
Ignores the check on the fingerprint | default: false |
The address
parameter can be either:
- a single string, in which case the address is used for connection
- a list of strings, which will be presented at launch for selection
To establish a connection with the tablet, you can use any of the following:
- Leave
auth_method
,password
andkey
unspecified: this will ask for a password - Specify
"auth_method": "key"
to use a SSH key. In case an SSH key hasn't already been associated with the tablet, you can provide its path with thekey
setting. - Provide a
password
in settings
If auth_method
is password
but no password is specified, then the tool will ask for the password on connection.
⚠️ Connecting after an update: An update to the reMarkable tablet would change its "fingerprint" i.e. the identifier that signals we are connecting to the expected device (and not somebody impersonating it). When this happens you may get an error message upon connection. There are two main ways to fix this:
- Change your
~/.ssh/known_hosts
file to match the new fingerprint (you can get instructions by connecting manually via ssh). - Set the
insecure_auto_add_host
setting totrue
, which will make rmview ignore the check. This is not recommended unless you are in a trusted network.
⚠️ Key format error:
If you get an error when connect using a key, but the key seems ok when connecting manually with ssh, you probably need to convert the key to the PEM format (or re-generate it using the -m PEM
option of ssh-keygen
). See here for details.
To Do
- Settings dialog
- About dialog
- Pause stream of screen/pen
- Binary bundles for Window, Linux and MacOs (PyInstaller?)
- Add interaction for Lamy button? (1 331 1 down, 1 331 0 up)
- Remove dependency to Twisted in
vnc
branch
Legacy reStreamer-like version
There are two versions of rMview, presenting the same interface but using different back-ends (thus requiring different setups on the reMarkable):
- The "VNC-based" version, in the
vnc
branch (default) - The "reStreamer-like" version, in the
ssh
branch
In my tests, the VNC version is a clear winner.
The ssh
branch of this repo hosts the reStreamer-like version for those who prefer it, but it should be considered unmaintained.
Credits
I took inspiration from the following projects:
- QtImageViewer
- remarkable_mouse
- reStream
- rM-vnc-server
- VNC client originally written by Chris Liechti
Icons adapted from designs by Freepik, xnimrodx from www.flaticon.com
Thanks to @adem amd @ChrisPattison for their PRs.
Disclaimer
This project is not affiliated to, nor endorsed by, reMarkable AS. I assume no responsibility for any damage done to your device due to the use of this software.
Licence
GPLv3