Kernel

July 10, 2026 · View on GitHub

The device runs a vendor fork of Linux 6.12.49 (NXP i.MX BSP base).

Sourcegithub.com/reMarkable/linux-imx-rm, branch rmpp_6.12.49_v3.26.x
Release tarballlinux-imx-rel-5.6-vc-3.26.0.68-122eda1b63d9.tar.gz (git-lfs)
Configconfig-remarkable-chiappa.aarch64
Out-of-tree driversall included in the vendor tarball under 3rdparty/ (IW61x WiFi, LIS2DW12, reMarkable platform modules)

The config

config-remarkable-chiappa.aarch64 is a complete kernel config: the vendor's chiappa_defconfig plus a handful of deltas (VKMS enabled, CONFIG_USB_ETH=n so a configfs USB gadget can own the UDC, etc.).

⚠️ Do not reduce it to a fragment. Feeding a fragment to olddefconfig standalone silently drops CONFIG_ARCH_MXC — and with it the entire i.MX platform (clocks, pinctrl, eMMC, power domains). The resulting kernel is a generic arm64 build that dies instantly with no output. A correctly built kernel produces ~156 modules, not ~75.

Patches

PatchWhy
0001-…-select-VIDEOMODE_HELPERSvendor Kconfig for DRM_PANEL_REMARKABLE_CUMULUS is missing a select; the panel driver fails to link without it
0002-drm-vkms-set-default-mode-954x1696VKMS defaults to 1024×768; the panel is 954×1696 portrait. Makes compositors on the virtual display see the native resolution
0003-drm-vkms-allow-cloning-…-encodersVKMS never sets possible_clones, so an atomic modeset with both the virtual output and the writeback connector on the CRTC fails the valid-clone check with EINVAL. Required for the writeback-based display bridge (compositor → VKMS → e-ink)

Apply order: 0001 → 0002 → 0003 (0003 is generated against a 0002-patched tree).

Known driver quirks

  • elants_spi (touch): runtime-PM autosuspend disables the touch IRQ and idles the controller; the resume path does not reliably restore scanning, after which no touch/pen events are delivered until the controller is re-poked. Workaround: pin runtime PM on via udev — see ../eink/60-chiappa-touch.rules.

Boot image

The kernel boots as a FIT (fitImage.ahab) loaded by U-Boot from the active rootfs slot — format and build procedure in ../docs/fitimage.md. Kernel load/entry address 0x80400000; DTBs for hardware revisions F–K are byte-identical in current firmware (see ../dtb/).