rekoit is a toolkit designed to enable Korean input using the Type Folio and Bluetooth keyboards on the reMarkable Paper Pro and Paper Pro Move. It is optimized to minimize CPU and battery consumption.
⚠️ Disclaimer
- This tool is not official software from reMarkable AS.
- Modifying your device's software may lead to issues, data loss, or voided warranties. You assume all responsibility for any consequences.
- Developers and contributors are not liable for any changes or damages to your device.
- Korean Display Support: Configures Korean fonts on the system to ensure Korean text is displayed correctly without broken characters.
- Support for Various Input Devices: Supports Korean input on both the official Type Folio and external Bluetooth Low Energy (BLE) keyboards.
- Performance Optimization: Provides a fast typing experience comparable to English input.
- Language Switching: Supports switching between Korean and English using
Shift + Spaceand the rightAltkey. - Special Symbols and Shortcuts: Full support for brackets (
[,]), braces ({,}), backticks (`), and tildes (~) regardless of the input mode. For the Type Folio, standard layout brackets and braces take precedence over the printed symbols (´,`,~,¨). In addition to the physicalGravekey on external keyboards,Ctrl + Shift + [(backtick`) andCtrl + Shift + ](tilde~) shortcuts are available on all keyboards. - Key Mapping Optimization: Offers a feature to swap the positions of the left
CapsLockandCtrlkeys for more efficient typing.
- Enhanced Connection Stability: Complements and extends reMarkable's unfinished Bluetooth stack to ensure stable connections with modern Bluetooth devices.
- Intelligent Auto-Reconnection: Uses IRK (Identity Resolving Key) based tracking logic to resolve reconnection issues with modern keyboards that periodically rotate their MAC addresses for security.
- Resource Optimization: Minimizes battery consumption through exponential backoff and device state detection. It completely stops checks when the device is in Sleep mode and resets the interval immediately upon wake-up to ensure fast reconnection.
- Integrated Management: Provides step-by-step support for device scanning, pairing, and connection logs via a web browser.
- Automatic Recovery: Automatically detects firmware updates upon reboot and reconfigures the Korean input environment.
- Persistent Settings: User settings (key mapping, Bluetooth pairing, etc.) are maintained even after reboots.
- Provides an intuitive web UI for installation, Bluetooth pairing, font uploads, and device diagnostics.
| Device | Codename | Status |
|---|---|---|
| Paper Pro | Ferrari | Supported |
| Paper Pro Move | Chiappa | Supported |
| reMarkable 2 | - | Not Supported |
- No Binary Modification: Does not directly modify or patch the
xochitlbinary, which is the core executable of the device. - Non-destructive System Extension: Utilizes Linux Bind Mount technology. Instead of overwriting original files on the physical disk, it "overlays" files prepared in virtual memory (
tmpfs). - Verified Safety: No changes are made to the actual original file system, ensuring zero risk of physical damage. Removing the installation immediately releases these virtual connections, returning the device to its pure stock state without any recovery process.
- Secure Persistence: User settings and the Korean input environment are safely maintained through a dedicated service (
rekoit-restore) that automatically reconstructs these virtual connections at boot. A factory reset will completely wipe this service and all configuration data.
Ensure the following tools are installed on your host PC (macOS / Linux / WSL):
- Node.js: Version 18 or higher
- Required Tools:
ssh,scp,sshpass,zstd,go,zig - Package Managers: macOS (
Homebrew), Linux (apt,dnf,pacman,zypper,apk, etc.)
- macOS: The most recommended environment. If
Homebrewis installed, the web app can automatically install the required tools. - Linux: If a supported package manager is available and non-interactive
sudois possible, automatic installation will be attempted. Otherwise, use the manual installation commands provided. - WSL: Same as Linux, but tools must be installed inside the WSL environment. Access the web UI by opening
http://localhost:3000in your Windows browser.
# macOS
brew install hudochenkov/sshpass/sshpass zstd go zig
# Debian / Ubuntu / WSL
sudo apt-get update && sudo apt-get install -y openssh-client sshpass zstd golang-go
sudo snap install zig --classic --beta- Delete Existing ko-remark (Required): If you are already using the ko-remark (by bncedgb-glitch) project, you must perform a "Full Uninstall" of ko-remark or a "Factory Reset" before installing rekoit.
- Recommended Installation Options:
- Type Folio Only: Installing only the "Korean Input Engine" is sufficient.
- With External Keyboard: It is strongly recommended to include the "Bluetooth Helper" in your installation.
- Reinstallation and Recovery: While using rekoit, you can reinstall at any time to update settings or recover a damaged environment without removing the existing installation.
- Enable Developer Mode: Go to
Settings > General settings > Software > Advanced > Developer modeand set it toEnabled. - Check SSH Password: Find your device's password in
Settings > Help > Copyrights and licenses > General Information > GPLv3 Compliance. - Disable Lock Screen: It is recommended to temporarily disable your passcode as restarts may occur during installation.
- Connection: Connect via USB-C cable (Default IP:
10.11.99.1). For wireless connections, you might need to run therm-ssh-over-wlan oncommand on the device.
- Run Web App: Run
npm installand thennpm run devin the source root. - Step 1. Information Input: Enter the IP address and SSH password and verify the connection.
- Step 2. Prerequisites: Check the installation status of required tools on the host PC and install them if necessary.
- Step 3. Device Verification: Final check of the device connection and model support.
- Step 4. Menu Selection: Choose whether to install the Korean Input Engine and Bluetooth Helper. (Existing users select "Device Management")
- Step 5. Execute Installation: The installation will proceed, followed by the Bluetooth pairing stage.
- Select
Device ManagementinStep 4. Menu Selectionof the web app. - Select the desired item (Full Uninstall, Partial Removal, etc.) in the
Recovery and Removalsection at the bottom. - Actions performed during Full Uninstall:
- Stops the
rekoit-daemonservice and removes runtime files. - Cleans up Bluetooth services and pairing data.
- Unmounts system libraries (
libepaper.so). - Removes post-update hooks for firmware update compatibility.
- Stops the
Performing a factory reset from the device settings will delete all traces of installation, runtime services, and pairing data. You will need to check the newly generated SSH password if you connect via SSH after a reset.
rekoit is designed to recover automatically after a firmware update. When the device reboots after an update, the rekoit-restore service detects it and reconstructs the environment. If automatic recovery fails, please run the installation again via the web app.
- SSH Connection Failure: Double-check the USB cable, developer mode status, and the SSH password (case-sensitive).
- Bluetooth Device Not Found: Ensure your keyboard is in pairing mode and within range. Older "Classic" Bluetooth models that are non-compliant with standard pairing may have issues.
- Package Installation Error: If
sshpassorzstdfails to install, refer to Section 3.1 for manual installation. - Bluetooth Passkey Not Appearing: Put the keyboard back into pairing mode or delete existing pairing info in "Device Management" and try again.
This project is distributed under the MIT License.
This project is an improved version based on the ideas and prototypes of the ko-remark (by bncedgb-glitch) project. It has been redesigned for stability and polished for production use. We express our deep gratitude to the original author for the creative inspiration.
If you find this tool helpful, please consider supporting its development. Your contributions help maintain the project and add new features.