What it is
An LG-G2-style knock unlock for your Paper Pro. knockCode lays an invisible 2×2 tap grid over the stock unlock screen and maps each quadrant to a digit:
TL = 1 TR = 2
BL = 3 BR = 4
Tap the quadrants in your pattern; when the sequence matches, the device unlocks. There is no per-tap feedback — that's a security property, not a bug.
It doesn't replace your passcode — it maps onto it
knockCode does not re-implement reMarkable's security. A knock is your
native numeric passcode, typed by quadrant. The passcode 33142323 is the knock
BL, BL, TL, BR, TR, BL, TR, BL. Because of that:
- Your pattern is stored and hashed by reMarkable's own passcode system.
knockCode writes no config file — the two
.qmdpatches are its entire footprint on the device. - reMarkable's attempt-limit / lockout and the built-in "Forgot passcode?" recovery-code flow all keep working underneath.
- Uninstalling instantly restores the digit keypad; your passcode is unchanged.
Setting your pattern
There's no custom setup screen. Use the stock passcode UI:
Settings → Security → Passcode → Eight digits, and type your knock using only
the digits 1 2 3 4 (e.g. 33142323). To change it later, change the passcode
the same way. (4- or 6-digit codes work too; the grid submits when your tap count
reaches the passcode length.)
Wrong knocks, and sleep/wake
- A wrong sequence is rejected by the native verifier and the buffer clears silently. reMarkable's own attempt-backoff applies, and the native "final attempt before reset" warning is shown, so you never blindly knock into a device wipe.
- There's no backspace — a brief power-button tap (screen off→on) clears a half-entered knock and flashes the faint guide cross to confirm. An idle auto-sleep clears a partial knock too.
🔓 Locked out? Here's exactly how you get back in
Selling a lock screen honestly means telling you how to recover — so here it is, up front. The lock screen and SSH are independent: your USB SSH session works regardless of the lock. If a knock ever fails to unlock you, connect the Paper Pro by USB and run:
ssh root@10.11.99.1 '
cd /home/root/xovi/exthome/qt-resource-rebuilder &&
rm -f knockCode-page.qmd knockCode-devicelock.qmd knockCode-doclock.qmd &&
systemctl reset-failed xochitl && bash /home/root/xovi/start
'
Wait ~35 s: the native digit keypad returns and your (unchanged) passcode
unlocks it. That's the whole recovery — delete the patches, restart. There's no
plugin state to clear. Prepare in advance: enable SSH and note your device's
root SSH password (Settings → General → Help / "Copyrights and licenses") while
the device is unlocked — you can't open Settings while it's locked. reMarkable's
own recovery-code flow is still intact as a fallback, though its button is hidden
behind the overlay while knock is active, so SSH-revert is first-line. The full
lockout-recovery walkthrough ships in the README.
Requirements
- reMarkable Paper Pro, firmware 3.26.0.68. Built for firmware 3.26.0.68 exactly.
- xovi + the qt-resource-rebuilder extension (free; links in the README).
- SSH over USB enabled (your recovery hatch) and an 8-digit (1–4) passcode set via the stock UI before activating.
- No other paid item required.
Install
Two plaintext patches copy into qt-resource-rebuilder's directory:
knockCode-page.qmd (the grid overlay — inert on its own) and
knockCode-devicelock.qmd (switches the grid on for the device-unlock screen).
Install the page file first and confirm normal unlock still works, then the
devicelock file to go live — exact commands in the README. An optional third
patch (knockCode-doclock.qmd) extends the knock to individually locked
notebooks. Uninstall = delete the files, restart. No system files are modified on
disk.
How this product changes your device
This product modifies the on-device user interface at runtime via qmldiff. It contains no reMarkable software; the INSERT-only patches add the author's own QML on top of files already present on your device, and are fully removed by deleting them and restarting. The passcode backend is never touched.
Honest caveats
- This is a lock screen — the highest-stakes thing you can change. Install with a USB SSH session open, stage the page file first, and verify an actual unlock before trusting it. Know the recovery above before you start.
- No per-tap feedback is by design. If you dislike knocking blind, this isn't for you.
- Every injected QML id is namespaced (
knock_*) so it won't collide with other installed qmd tweaks. Both.qmdfiles are plaintext — read every line first. - qmldiff patches are firmware-sensitive; built and run on 3.26.0.68, re-run the install after a firmware update. Future-firmware support is best-effort.
