{"id":33182959,"url":"https://github.com/rmitchellscott/rm-version-switcher","last_synced_at":"2026-01-15T03:22:27.177Z","repository":{"id":301673410,"uuid":"1009978340","full_name":"rmitchellscott/rm-version-switcher","owner":"rmitchellscott","description":"An interactive interface for switching between installed reMarkable OS versions.","archived":false,"fork":false,"pushed_at":"2026-01-10T17:49:15.000Z","size":128,"stargazers_count":16,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-11T05:21:54.716Z","etag":null,"topics":["remarkable-tablet"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rmitchellscott.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":"FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"buy_me_a_coffee":"rmitchellscott"}},"created_at":"2025-06-28T04:57:11.000Z","updated_at":"2026-01-10T17:48:29.000Z","dependencies_parsed_at":"2025-06-28T06:25:09.396Z","dependency_job_id":"d8cf420e-b8a6-4d7b-ba09-e2ac8e51091f","html_url":"https://github.com/rmitchellscott/rm-version-switcher","commit_stats":null,"previous_names":["rmitchellscott/rm-version-switcher"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/rmitchellscott/rm-version-switcher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmitchellscott%2Frm-version-switcher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmitchellscott%2Frm-version-switcher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmitchellscott%2Frm-version-switcher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmitchellscott%2Frm-version-switcher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rmitchellscott","download_url":"https://codeload.github.com/rmitchellscott/rm-version-switcher/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmitchellscott%2Frm-version-switcher/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28442268,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-15T00:55:22.719Z","status":"online","status_checked_at":"2026-01-15T02:00:08.019Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["remarkable-tablet"],"created_at":"2025-11-16T04:00:32.509Z","updated_at":"2026-01-15T03:22:27.167Z","avatar_url":"https://github.com/rmitchellscott.png","language":"Go","funding_links":["https://buymeacoffee.com/rmitchellscott"],"categories":["Device Tools"],"sub_categories":["Template Builders"],"readme":"# reMarkable Version Switcher\n[![rm1](https://img.shields.io/badge/rM1-supported-green)](https://remarkable.com/store/remarkable)\n[![rm2](https://img.shields.io/badge/rM2-supported-green)](https://remarkable.com/store/remarkable-2)\n[![rmpp](https://img.shields.io/badge/rMPP-supported-green)](https://remarkable.com/products/remarkable-paper/pro)\n[![rmppm](https://img.shields.io/badge/rMPPM-supported-green)](https://remarkable.com/products/remarkable-paper/pro-move)\n\nA beginner-friendly application for switching between currently installed reMarkable OS versions with an interactive interface.\n\nSupports reMarkable 1, 2, Paper Pro, and Paper Pro Move. \n\nTested up to OS version 3.24.\n\n## Features\n\n- **TUI interface** - Clean, boxed layout with color-coded partitions\n- **Interactive version switching** - Select which version to boot next with arrow keys\n- **Real-time status display** - Shows current active partition and next boot selection\n- **Smart partition mapping** - Consistent A/B labeling (A=p2, B=p3)\n- **Integrated reboot option** - Choose to reboot immediately or defer to next restart\n\n\u003cdiv align=\"center\"\u003e\n  \u003cvideo src=\"https://github.com/user-attachments/assets/941202e1-67c5-45c2-8df2-b66b6a084a61\"\u003e\u003c/video\u003e\n\u003c/div\u003e\n\n## Installation\n\n### Automatic Installation (Recommended)\n\n\u003e [!CAUTION]\n\u003e 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.\n\nThe easiest way to install is using the installation script that automatically detects your device architecture:\n\n```bash\nwget -O - https://raw.githubusercontent.com/rmitchellscott/rm-version-switcher/main/install.sh | bash\n```\n\nThis will:\n- Detect your device architecture (reMarkable 1/2 or Paper Pro)\n- Download the correct binary for your device\n- Extract and make it executable as `rm-version-switcher`\n\n### Manual Installation\n\n#### For reMarkable 1 \u0026 2 (ARMv7):\n```bash\nwget https://github.com/rmitchellscott/rm-version-switcher/releases/latest/download/rm-version-switcher-armv7.tar.gz\ntar -xzf rm-version-switcher-armv7.tar.gz\nmv rm-version-switcher-armv7 rm-version-switcher\nchmod +x rm-version-switcher\n```\n\n#### For reMarkable Paper Pro \u0026 Paper Pro Move (AArch64):\n```bash\nwget https://github.com/rmitchellscott/rm-version-switcher/releases/latest/download/rm-version-switcher-aarch64.tar.gz\ntar -xzf rm-version-switcher-aarch64.tar.gz\nmv rm-version-switcher-aarch64 rm-version-switcher\nchmod +x rm-version-switcher\n```\n\n### Copy to Device\n\nAlternatively, copy the binary directly to your reMarkable device:\n\n```bash\n# Copy to reMarkable (replace with your device IP)\nscp rm-version-switcher root@10.11.99.1:~/\n```\n\n## Usage\n\n### Interactive Mode\n```bash\n./rm-version-switcher\n```\n\nShows the overview, allows you to change the next boot partition, and optionally reboot immediately.\n\n### View Only Mode\n```bash\n./rm-version-switcher --show-only\n```\n\nDisplay current partition status without any interactive options.\n\n## Building\n\n### Prerequisites\n- Go 1.21 or later\n\n### Install Dependencies\n```bash\ngo mod tidy\n```\n\n### Build for reMarkable Devices\n\n#### reMarkable 1 \u0026 reMarkable 2 (ARMv7)\n```bash\nGOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=0 go build -o rm-version-switcher-armv7 .\n```\n\n#### reMarkable Paper Pro \u0026 Paper Pro Move (AArch64)\n```bash\nGOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -o rm-version-switcher-aarch64 .\n```\n\n### Build for Development/Testing\n```bash\n# Current platform (for testing with --dry-run)\ngo build -o rm-version-switcher .\n```\n\n## Interface\n\n### Overview Display\n```\n┌──────────────────────────────────────────────────┐\n│         reMarkable OS Version Switcher           │\n└──────────────────────────────────────────────────┘\n┌──────────────────────────────────────────────────┐\n│ Partition  A: 3.20.0.92 [NEXT BOOT]              │\n│ Partition  B: 3.18.2.3  [ACTIVE]                 │\n└──────────────────────────────────────────────────┘\n```\n\n### Color Coding\n- **Green**: Active partition version numbers and [NEXT BOOT] when on active partition\n- **Blue**: Fallback partition version numbers  \n- **Yellow**: [NEXT BOOT] when on fallback partition\n\n### Labels\n- **[ACTIVE]**: Currently running partition\n- **[NEXT BOOT]**: Partition that will boot after next reboot\n\n## How It Works\n\nThe application follows the same proven logic as the reference [switch.sh](https://github.com/ddvk/remarkable-update/blob/main/switch.sh):\n\n1. **Detects current state** using `rootdev` and `fw_printenv`\n2. **Reads version information** from `/usr/share/remarkable/update.conf`\n3. **Updates boot environment** using `fw_setenv` commands:\n   - `upgrade_available=1`\n   - `bootcount=0`\n   - `fallback_partition={old_partition}`\n   - `active_partition={new_partition}`\n\n## Dependencies\n\n- [charmbracelet/huh](https://github.com/charmbracelet/huh) - TUI forms and interactions\n- [charmbracelet/lipgloss](https://github.com/charmbracelet/lipgloss) - Terminal styling\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frmitchellscott%2Frm-version-switcher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frmitchellscott%2Frm-version-switcher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frmitchellscott%2Frm-version-switcher/lists"}