UP  |  HOME

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.

(I use keychain as my ssh agent, adjust accordingly)
ssh-keygen -t ecdsa -C "remarkable2"
keychain ~/.ssh/remarkable2
ssh-copy-id -i ~/.ssh/remarkable2 root@10.11.99.1

Manually add key

(on remarkable)
mkdir -m 700 ~/.ssh
(on computer)
scp ~/.ssh/remarkable2.pub root@10.11.99.1:~/.ssh/authorized_keys
(on remarkable)
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 Dependencies
    sudo 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 of yarn, and for some reason it crashes when --cwd is used so I worked around that:

    Listing 1: Modify the Makefile
    diff --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.go
    diff --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:

    1. install the binary (pick the appropriate arch from dist/)
    2. install the systemd service file (other/rmfakecloud.service)
    3. configure rmfakecloud (/etc/rmfakecloud.conf)
    4. 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