Reviving a four year old reMarkable 2

Hacker News Top News

Summary

A technical guide on reviving an old reMarkable 2 tablet that has been unused for years, covering fixing the clock, applying software updates, re-enabling SSH over Wi-Fi, and importing files via the built-in web server.

No content available
Original Article
View Cached Full Text

Cached at: 08/09/26, 02:26 PM

# Reviving a four year old reMarkable 2 Source: [https://oskrim.github.io/hardware/2026/08/09/remarkable-over-ssh.html](https://oskrim.github.io/hardware/2026/08/09/remarkable-over-ssh.html) I found my old reMarkable 2 paper tablet, bought in 2021, it had sat unused for ~4 years or so\. The device was in a sorry state: - Cloud sync failing\. The only thing showing was a cryptic`error 0`\. - Software update didn’t work\. This post details how you might be able to bring your tablet back to working order if you find yourself in a similar situation\. ## The clock Googling the error I found a forum post with what its author called “the fast solution”, SSH in, set the clock: ``` ssh [email protected] # USB. over wifi: the tablet's LAN IP # password: on the tablet, Settings → Help → Copyrights and licenses → General info # (username root, password, IPs all listed there) timedatectl # confirm how far off it is timedatectl set-ntp 0 # disable auto time first, or set-time errors out timedatectl set-time '2026-07-15' timedatectl set-ntp 1 ``` After setting the time, I was able to download a software update\. ## Software update After the first software update, cloud sync now gave me a different error:**HTTP 400**\. I found the actual error message in the journal:*“Unable to sync\. Please update this application to continue using the reMarkable cloud\.”* ``` journalctl -u rm-sync.service --since '-45 min' --no-pager ``` The cloud was rejecting my obsolete system version\. Turns out the first update only brought the tablet to**3\.11\.2\.5**and wouldn’t update further\. `journalctl`for`swupdate\.service`showed`Couldn't resolve host name`\(after the post\-update reboot, the updater had started before wifi/DNS was up and never retried\)\. Restarting the update services made the Settings screen offer**3\.27\.3\.0**, and a second update brought the tablet to the latest available software version\. ``` systemctl restart swupdate.service update-engine.service systemctl is-active swupdate.service update-engine.service journalctl --since '-1 min' -u swupdate.service -u update-engine.service ``` Starting with version 3\.22 of the software,**SSH over wifi is now silently disabled**by the update, so port 22 refuses on the LAN\. SSH in to the tablet via USB \(e\.g\.`10\.11\.99\.1`\) instead\. Re\-enable network SSH with`rm\-ssh\-over\-wlan on`, or drop the marker file`rm\_enable\_ssh\_wifi\_marker`\(the`dropbear\-wlan\.socket`unit is already enabled, just inactive\) ``` rm-ssh-over-wlan on systemctl is-active dropbear-wlan.socket systemctl is-enabled dropbear-wlan.socket test -e /home/root/.config/remarkable/rm_enable_ssh_wifi_marker && echo present ip -4 -brief address show wlan0 ss -lntp | grep ':22 ' || true ``` ## Importing files over SSH For whatever reason, cloud sync still appeared to be broken, it wouldn’t pull any of my new uploads\. Instead of debugging this further \(by now I was done dealing with the cloud sync\), I found that the tablet has an optional web server that can be turned on, to allow you to upload and export files from the device\. I backed up the xochitl config before toggling it on \(`WebInterfaceEnabled=true`\): ``` conf=/home/root/.config/remarkable/xochitl.conf cp -p "$conf" "$conf.codex-backup-before-usb-web" if grep -q '^WebInterfaceEnabled=' "$conf"; then sed -i 's/^WebInterfaceEnabled=.*/WebInterfaceEnabled=true/' "$conf" else sed -i '/^\[General\]$/a WebInterfaceEnabled=true' "$conf" fi systemctl restart xochitl.service grep '^WebInterfaceEnabled=' "$conf" systemctl is-active xochitl.service ``` Inspect and upload PDFs: ``` curl --max-time 30 -sS http://10.11.99.1/documents/ | jq -r '.[].VisibleName' set -e for file in ./my-pdf-files/*.pdf; do name=${file##*/} status=$(curl --max-time 300 -sS -o /dev/null -w '%{http_code}' \ -F "file=@${file};type=application/pdf" http://10.11.99.1/upload) printf '%s\t%s\n' "$status" "$name" test "$status" = 201 done ``` After this, you should be able to find and read the new files in the My Files view\. I never did fix the cloud sync, I find uploading files over SSH to be more convenient anyway\.

Similar Articles

Bringing the modern web to the original iPad mini

Lobsters Hottest

A developer resurrects an original iPad mini by jailbreaking it to iOS 6 and building a custom remote browser called Surf that streams modern web content via a headless Chromium backend.