reMarkable 2
Table of Contents
Setting up an ssh key
Generate an ssh key on your computer. Add the public key to the authorized keys on the remarkable. https://web.archive.org/web/20230606163556/https://remarkablewiki.com/tech/ssh
Supposedly ed25519
keys are not supported on the remarkable, so you should use ecdsa
or rsa
. It was recommended to use ssh-copy-id
, but mine failed so I resorted to manually transferring the key.
ssh-keygen -t ecdsa -C "remarkable2" keychain ~/.ssh/remarkable2 ssh-copy-id -i ~/.ssh/remarkable2 root@10.11.99.1
Manually add key
mkdir -m 700 ~/.ssh
scp ~/.ssh/remarkable2.pub root@10.11.99.1:~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
toltec package manager
Check your device software version is supported before installing. Note that you should not use the factory reset feature with it installed. It seems to allow for automatic updates, but requires toltecctl reenable
to be run afterwards.
To install run the bootstrap script as described at the Toltec Site
Install packages with opkg install
. It seems common for many packages to require extra steps after install. Be sure to read the output.
Installed packages
ddvk-hacks
Binary patches for the reMarkable. https://github.com/ddvk/remarkable-hacks
Useful for extra gestures, quick settings toggles, and additional navigation features.
reMarkable defaults to UTC, but if you want the patch time display to be local set your timezone:
timedatectl set-timezone "America/Chicago"
remux launcher
Launcher / App switcher. https://rmkit.dev/apps/remux
On reMarkable 2 swipe up on the right side of the screen. Note that tapping the memory usage of an app KILLS it.
plato and koreader
Document readers (epub, pdf, …) https://github.com/LinusCDE/plato https://github.com/koreader/koreader
Plato looks for documents in /home/root/plato-media
.
koreader can browse the filesystem.
Haven't used them enough to differentiate features yet.
restream
Local screen sharing over SSH (usb network interface by default). https://github.com/rien/reStream
restream uses an executable on the remarkable and a shell script for the client. The tablet display gets streamed over ssh
using ffmpeg
and lz4
. This works even for third party apps.
The script has no capacity for entering passwords so it requires an ssh key set up.
wikipedia
A simple wikipedia browser. Might come in handy.
rmfakecloud / rmfakecloud-proxy
- TODO Setting up the docker image + certs
- Building the rmfakecloud daemon on Debian 11
I had trouble with getting the docker image to work initially. (I think my STORAGE_URL was set wrong). Anyway I resorted to building rmfakecloud and running it as a local service, but even this process took a bit so I'll note some things here.
Install Dependenciessudo apt install yarnpkg nodejs golang-1.16
I used advice an setting up alternatives to change my
go
symlink to the 1.16 version.Modify go symlink (using alternatives)sudo update-alternatives --install /usr/bin/go go /usr/lib/go-1.16/bin/go 50 --slave /usr/bin/gofmt gofmt /usr/lib/go-1.16/bin/gofmt sudo update-alternatives --config go go version
go version go1.16.13 linux/amd64
Debian has a
yarnpkg
executable instead ofyarn
, and for some reason it crashes when--cwd
is used so I worked around that:Listing 1: Modify the Makefilediff --git a/Makefile b/Makefile index fe01f25..3bd5ae7 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ UIFILES := $(shell find ui/src) UIFILES += $(shell find ui/public) UIFILES += ui/package.json TARGETS := $(addprefix $(OUT_DIR)/$(BINARY)-, x64 armv6 armv7 arm64 win64 docker) -YARN = yarn --cwd ui +YARN = yarnpkg .PHONY: all run runui clean test testgo testui @@ -44,19 +44,19 @@ run: $(ASSETS) go run $(CMD) $(ASSETS): $(UIFILES) ui/yarn.lock - $(YARN) build + cd ui && $(YARN) build @#remove unneeded stuff, todo: eject @rm ui/build/service-worker.js ui/build/precache-manifest* ui/build/asset-manifest.json 2> /dev/null || true ui/yarn.lock: ui/node_modules ui/package.json - $(YARN) + cd ui && $(YARN) @touch -mr $(shell ls -Atd $? | head -1) $@ ui/node_modules: mkdir -p $@ runui: ui/yarn.lock - $(YARN) start + cd ui && $(YARN) start clean: rm -f $(OUT_DIR)/* @@ -65,7 +65,7 @@ clean: test: testui testgo testui: - CI=true $(YARN) test + cd ui && CI=true $(YARN) test testgo: go test ./...
Then go complained about a go:build comment without a +build comment so I added one of those:
Listing 2: ui/assets.godiff --git a/ui/assets.go b/ui/assets.go index ebe7103..3b0865f 100644 --- a/ui/assets.go +++ b/ui/assets.go @@ -1,4 +1,5 @@ //go:build !ci +// +build !ci package rmfakecloud
From here you can run
make all
and follow the steps in the official docs on setup from source. A quick rundown is:- install the binary (pick the appropriate arch from dist/)
- install the systemd service file (other/rmfakecloud.service)
- configure rmfakecloud (
/etc/rmfakecloud.conf
) - enable and start it
Keep the last page visible on suspend
ddvk-hacks disables the screen clearing so you just need to add a transparent png.
Modify /usr/share/remarkable/suspended.png
. Add an alpha transparency layer. Magic wand the white away. I shift the stamp down 775 pixels.
Updating the ReMarkable release version
As long as the new release is supported (specifically ddvk-hacks) everything should be able to recover from the upgrade process without removal/reinstall.
Enable updates from the on-device settings. The device will update and reboot.
Log back in over ssh
. The ssh
host key can change after an upgrade. ssh
provides a command to remove the old one if you need. After logging back in over ssh, reenable toltec:
toltecctl reenable
Follow any directions printed out. In my last attempt I just needed to re-enable rmfakcloud:
rmfakecloudctl enable
Then from on-device settings reconnect to rmfakecloud (generate a new code from the webui).
Stop remux:
systemctl stop remux
Reinstall ddvk hacks:
opkg install ddvk-hacks
Restart remux:
systemctl stop xochitl systemctl start remux
There should be only one xochitl
process left running (started by remux) if everything is correct.
If remux isn't starting automatically re-enable it's service:
systemctl enable remux
Restore your transparent suspended.png
scp suspended.png root@10.11.99.1:/usr/share/remarkable/suspended.png