Skip to content

rmitchellscott/rm-version-switcher

Repository files navigation

reMarkable Version Switcher

rm1 rm2 rmpp rmppm

A beginner-friendly application for switching between currently installed reMarkable OS versions with an interactive interface.

Supports reMarkable 1, 2, Paper Pro, and Paper Pro Move.

Tested up to OS version 3.24.

Features

  • TUI interface - Clean, boxed layout with color-coded partitions
  • Interactive version switching - Select which version to boot next with arrow keys
  • Real-time status display - Shows current active partition and next boot selection
  • Smart partition mapping - Consistent A/B labeling (A=p2, B=p3)
  • Integrated reboot option - Choose to reboot immediately or defer to next restart
rm-version-switcher.mp4

Installation

Automatic Installation (Recommended)

Caution

Piping code from the internet directly into bash can be dangerous. Make sure you trust the source and know what it will do to your system.

The easiest way to install is using the installation script that automatically detects your device architecture:

wget -O - https://raw.githubusercontent.com/rmitchellscott/rm-version-switcher/main/install.sh | bash

This will:

  • Detect your device architecture (reMarkable 1/2 or Paper Pro)
  • Download the correct binary for your device
  • Extract and make it executable as rm-version-switcher

Manual Installation

For reMarkable 1 & 2 (ARMv7):

wget https://github.com/rmitchellscott/rm-version-switcher/releases/latest/download/rm-version-switcher-armv7.tar.gz
tar -xzf rm-version-switcher-armv7.tar.gz
mv rm-version-switcher-armv7 rm-version-switcher
chmod +x rm-version-switcher

For reMarkable Paper Pro & Paper Pro Move (AArch64):

wget https://github.com/rmitchellscott/rm-version-switcher/releases/latest/download/rm-version-switcher-aarch64.tar.gz
tar -xzf rm-version-switcher-aarch64.tar.gz
mv rm-version-switcher-aarch64 rm-version-switcher
chmod +x rm-version-switcher

Copy to Device

Alternatively, copy the binary directly to your reMarkable device:

# Copy to reMarkable (replace with your device IP)
scp rm-version-switcher [email protected]:~/

Usage

Interactive Mode

./rm-version-switcher

Shows the overview, allows you to change the next boot partition, and optionally reboot immediately.

View Only Mode

./rm-version-switcher --show-only

Display current partition status without any interactive options.

Building

Prerequisites

  • Go 1.21 or later

Install Dependencies

go mod tidy

Build for reMarkable Devices

reMarkable 1 & reMarkable 2 (ARMv7)

GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=0 go build -o rm-version-switcher-armv7 .

reMarkable Paper Pro & Paper Pro Move (AArch64)

GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -o rm-version-switcher-aarch64 .

Build for Development/Testing

# Current platform (for testing with --dry-run)
go build -o rm-version-switcher .

Interface

Overview Display

┌──────────────────────────────────────────────────┐
│         reMarkable OS Version Switcher           │
└──────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────┐
│ Partition  A: 3.20.0.92 [NEXT BOOT]              │
│ Partition  B: 3.18.2.3  [ACTIVE]                 │
└──────────────────────────────────────────────────┘

Color Coding

  • Green: Active partition version numbers and [NEXT BOOT] when on active partition
  • Blue: Fallback partition version numbers
  • Yellow: [NEXT BOOT] when on fallback partition

Labels

  • [ACTIVE]: Currently running partition
  • [NEXT BOOT]: Partition that will boot after next reboot

How It Works

The application follows the same proven logic as the reference switch.sh:

  1. Detects current state using rootdev and fw_printenv
  2. Reads version information from /usr/share/remarkable/update.conf
  3. Updates boot environment using fw_setenv commands:
    • upgrade_available=1
    • bootcount=0
    • fallback_partition={old_partition}
    • active_partition={new_partition}

Dependencies

About

An interactive interface for switching between installed reMarkable OS versions.

Topics

Resources

License

Stars

Watchers

Forks