{"id":13558493,"url":"https://github.com/ddvk/remarkable-hacks","last_synced_at":"2025-04-05T13:07:32.339Z","repository":{"id":37405769,"uuid":"175836692","full_name":"ddvk/remarkable-hacks","owner":"ddvk","description":"additional functionality via binary patching","archived":false,"fork":false,"pushed_at":"2023-12-09T00:17:18.000Z","size":15061,"stargazers_count":1701,"open_issues_count":181,"forks_count":84,"subscribers_count":130,"default_branch":"master","last_synced_at":"2025-03-29T12:06:22.621Z","etag":null,"topics":["remarkable-tablet"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/ddvk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/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},"funding":{"github":"ddvk"}},"created_at":"2019-03-15T14:35:15.000Z","updated_at":"2025-03-26T06:41:10.000Z","dependencies_parsed_at":"2024-01-17T05:28:21.219Z","dependency_job_id":"549ec4a9-077e-4795-bf44-a7f3189deca0","html_url":"https://github.com/ddvk/remarkable-hacks","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddvk%2Fremarkable-hacks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddvk%2Fremarkable-hacks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddvk%2Fremarkable-hacks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddvk%2Fremarkable-hacks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ddvk","download_url":"https://codeload.github.com/ddvk/remarkable-hacks/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247339158,"owners_count":20923014,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":"2024-08-01T12:04:59.045Z","updated_at":"2025-04-05T13:07:32.287Z","avatar_url":"https://github.com/ddvk.png","language":"Shell","funding_links":["https://github.com/sponsors/ddvk"],"categories":["Shell","others","remarkable-tablet"],"sub_categories":[],"readme":"# Binary patches for the rM\n\nThose are features that I find useful/wanted for me to have. If someone else would like to try them, they are welcome.\n\n\n## Supported devices and firmware versions\n\nLatest version supported:\n\n- rm1: 2.15.1.1189\n- rm2: 2.15.1.1189\n\n## Disclaimer\n*The files are offered without any warranty and you will be violating the reMarkable AS EULA by using them.\nThere may be bugs, you may lose data, your device may crash, etc.*\n\n*The only guarantee is, that there is no ill intended code*\n\nI am not affiliated with reMarkable AS in anyway\n\n## Demo\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"docs/images/screenshot_25027_bookmarks.png\" alt=\"Screenshot with bookmarks\" width=\"300\"/\u003e\n    \u003cimg src=\"docs/images/screenshot_25027_numpad.png\" alt=\"Screenshot with numpad\" width=\"300\"/\u003e\n    \u003cimg src=\"docs/images/screenshot_25027_share.png\" alt=\"Screenshot with extended options\" width=\"300\"/\u003e\n    \u003cimg src=\"docs/images/screenshot_recent_files.png\" alt=\"Screenshot with recent files\" width=\"300\"/\u003e\n    \u003cimg src=\"docs/images/ddvk_hacks_cheat_sheet.png\" alt=\"cheat-sheet showing gestures\" width=\"300\"\n/\u003e\n\u003c/p\u003e\n\n\n## Changes\n- rm2 [2.15.0.1067](patches/21501067_rm2/readme.md)\n- rm1 [2.15.0.1067](patches/21501067_rm2/readme.md)\n- rm2 [2.14.3.1005](patches/21431005_rm2/readme.md)\n- rm1 [2.14.3.1005](patches/21431005_rm2/readme.md)\n- rm2 [2.14.3.977](patches/2143977_rm2/readme.md)\n- rm1 [2.14.3.977](patches/2143977_rm2/readme.md)\n- rm2 [2.14.1.866](patches/2141866_rm2/readme.md)\n- rm1 [2.14.1.866](patches/2141866_rm2/readme.md)\n- rm2 [2.14.0.861](patches/2140861_rm2/readme.md)\n- rm2 [2.12.3.606](patches/2123606_rm2/readme.md)\n- rm1 [2.12.3.606](patches/2123606_rm2/readme.md)\n- rm1 [2.12.2.573](patches/2122573_rm2/readme.md)\n- rm2 [2.12.2.573](patches/2122573_rm2/readme.md)\n- rm2 [2.12.1.527](patches/2121527_rm2/readme.md)\n- rm1 [2.12.1.527](patches/2121527_rm2/readme.md)\n- rm2 [2.11.0.442](patches/2110442_rm2/readme.md)\n- rm1 [2.11.0.442](patches/2110442_rm1/readme.md)\n\n## Quick Doc\n\nNote: the reMarkable 2 does not have buttons\n\n#### Gestures\n- pinch to zoom in/out (has to be enabled first in the Share menu)\n- swipe down in the middle of the screen, to toggle side-menu\n- swipe down from the top edge to close document (existing rM gesture, not a hack)\n- two finger swipe down to switch to previous document\n- two finger swipe up *or* long press home button for recent files\n    - long press on a recent file that was deleted but not synced to restore it\n- swipe up, top menu corner: switch between eraser/pen\n- swipe down, top menu corner: switch between last 2 pens\n- swipe up, top bookmark corner: cycle pen colors\n- swipe left, top middle: undo\n- swipe right, top middle: redo\n\n#### Bookmarks\n- tap upper right (or left for lefthanders) corner to bookmark a page\n- long press on bookmark to edit its description (also works in bookmark list in side-menu)\n\n#### Zen Mode\n- Enter/Exit: left \u0026 right buttons simultaneously *or* long press on the \"toggle menu\" (uppermost)\n- Gestures (swipe gestures work in a small area under the \"toggle menu\" icon)\n    - left button (or right button for lefthanders) *or* swipe up toggles eraser\n    - right button (or left button for lefthanders) *or* swipe down toggles last tool\n    - long press left button (or right button for lefthanders) or swipe left to undo\n    - swipe right to redo\n\n#### Reading Mode\n- Enter: home \u0026 right buttons simultaneously *or* tap M in the side-menu \"Document Menu\" (bottommost)\n- Exit: left \u0026 right buttons simultaneously *or* open side-menu and long press on the \"toggle menu\" (uppermost)\n- Gestures:\n    - tap left or right side of screen to change pages\n\n## Extras\n- email and hwr for scribbles on pdfs\n- extract scribbles from pdfs into new notebook (PDF page overview -\u003e Select pages, tap Move, tap Move Out, tap New Notebook. Note that the scribble \"pages\" are literally removed from the PDF, but the PDF pages are not - so if you extract page 5, page 6 of your scribbles will now be on page 5 of your PDF. Probably not what you want! Make a backup copy first.)\n- clock (check the Timezones)\n- support for transparent pixels in suspended.png (only when using no lock passcode) and sleeping.png (after reboot)\n\n# Installation\nFind the ssh password (**write it down and keep it safe**)  \n\nin the newest version:\n\nSettings-\u003eHelp-\u003eCopyright and Licenses (under GPLv3 Compliance)\n\t\nversions \u003c 2.3:\n\nSettings-\u003eAbout-\u003eCopyright-\u003eGeneral Information\n\n\n**It is really important to have the password somewhere, in case something goes wrong**\n\n\n## Linux\nYou got this\n\n## Windows 10\n- open a command line prompt (Win-R, type cmd, enter)\n- ssh root@10.11.99.1 \n- type the password\n- paste the automagic line\n\n_or_\n\n- install Putty and enter 10.11.99.1 as address and root for username\n- paste the automagic line\n\n## macOS\n- open Spotlight (Cmd-Space) type Terminal, enter\n- ssh root@10.11.99.1\n- type the password\n- paste the automagic line\n\n# Automagic\n\n**Make sure the device has Internet connectivity i.e. Wifi is ON and connected**\n\nPaste the following and press enter:\n```\nsh -c \"$(wget https://raw.githubusercontent.com/ddvk/remarkable-hacks/master/patch.sh -O-)\" \n```\nto try a different patch:\n\n```\nsh -c \"$(wget https://raw.githubusercontent.com/ddvk/remarkable-hacks/master/patch.sh -O-)\" _ patch_xxx \n```\nwhere xxx is the patch number\n\nThe app should start, play with it, but press **CTRL-C** (Hold the Control key and press C) to stop it when done **DON'T LEAVE IT JUST RUNNING** and follow the instructions after pressing **CTRL-C**\n\n**Should Press 'Y' and then Enter when asked to make it permanent**\n\n# Notes\npatches are cumulative (the last one contains all previous changes and gets updated with bugfixes)\na patch can be applied more than once, it's more of a snapshot really, you can go back to a previous version\n\n## Installation with oxide, draft or remux\nThe installation starts an instance of xochitl, but isn't aware of oxide, draft or remux running,\nwhich needs xochitl to be started in a different way. \nExecute this before the installation if you've got oxide or draft running:\n```shell\nsystemctl stop tarnish # only if you're using oxide\nsystemctl stop draft # only if you're using draft\nsystemctl stop remux # only if you're using remux\n```\nAnd this after the installation:\n```shell\nsystemctl stop xochitl\nsystemctl start tarnish # only if you're using oxide\nsystemctl start draft # only if you're using draft\nsystemctl start remux # only if you're using remux\n```\nIf you forget to do this, you'll have two xochitls, and the screen will be garbled.\n\n\n## Timezones\nThe time is in UTC. In order to have the right time, the right timezone should be set (which has things like Daylight Saving Time, utc offsets etc).\n\nCheck the list of timezones in [Timezones](docs/timezones.md)  \nTo set a timezone, run this on the device, by setting one that matches your location e.g.  \n`timedatectl set-timezone \"Europe/Paris\"` or  \n`timedatectl set-timezone \"America/Denver\"`\n\nThe device doesn't have all possible timezones. If yours is missing from the list, find a linux distro and copy the missing time zone to `/usr/share/zoneinfo/` then execute the above command with the new zone.\n\n## Extra fonts (e.g. Japanese)\nThe rootfs doesn't have enough space, so you can do this (copy paste in the rm terminal)  \n```\nmv /usr/share/fonts/ttf ~/ttf\nln -sf /home/root/ttf /usr/share/fonts/ttf\nwget https://github.com/tony/dot-fonts/raw/master/Hanazono/HanaMinA.ttf -O ~/ttf/HanaMinaA.ttf\nwget https://github.com/tony/dot-fonts/raw/master/Hanazono/HanaMinB.ttf -O ~/ttf/HanaMinaB.ttf\n```\nfor japanese: HanaMinA.ttf and HanaMinB.ttf seem ok  \nput new fonts in `/home/root/ttf`,  do `fc-cache` and restart xochitl\n\n\n## Making it permanent\nYou should have typed 'Y' when asked\n\n## Uninstall / Removal\n```\nsh -c \"$(wget https://raw.githubusercontent.com/ddvk/remarkable-hacks/master/patch.sh -O-)\" _ purge\n\nor if offline\n\nsh /home/rmhacks/patch.sh purge\n```\n\n\n## Revert in case things go terribly wrong\n# **DON'T DO FACTORY RESET!**\n(this will regenerate the root password, unless there is no free space on the root partition)  \nExcept when everything is working normally and you want to really remove all your documents.\n\nssh into your device and execute:\n```\nsystemctl stop xochitl\nrm -fr .cache/remarkable/xochitl/qmlcache/*\ncp /home/rmhacks/xochitl.version /usr/bin/xochitl #where version is the current device version\nsystemctl start xochitl\n```\n\n## Troubleshooting\n\n### Not enough space\nCan happen if you added additional sleep screens or templates to the root partition, also used to be a bug a long time ago. \n \nRemove those.\n\n### SSH REMOTE HOST IDENTIFICATION CHANGED, something nasty blah blah\nThe device regenerates the ssh host keys after every update.  \n\nRemove the offending line from `~/.ssh/known_hosts` or just delete the whole file.\n\n\n# [Features compiled by u/TheTomatoes2](docs/features.md)\n\n\n## FAQ\n\n#### How do you make the patches?\nI wrote some tools, I change the code, I patch\n\n#### Why is this not open source?\nI don't own the source, the legality is dubious, not in reMarkable AS's best interest due to various reasons, etc\n\n#### Can you add this or that feature?\nSome things are hard, very time consuming or even impossible for my skill level. I prefer to take a more pragmatic approach and add things that are easy, but from which most users can benefit.  \n\n\n#### What happens when a new offical version comes out? \nYou lose the hacks when the device auto updates (If you want to prevent this disable auto updates). When the patches have been ported, you can install them again (bookmarks stay on the device and will reappear) \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fddvk%2Fremarkable-hacks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fddvk%2Fremarkable-hacks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fddvk%2Fremarkable-hacks/lists"}