Skip to content

"codexctl restore" fails on RM2 3.20.0.92 #138

@daisyUniverse

Description

@daisyUniverse

I recently picked up a used RM2 which arrived with the latest firmware, I wanted to explore some of the cool projects people have made, so I wanted to downgrade in order to explore, to this end I followed the instructions depicted in #95

Downloading the target firmware...

$ ./codexctl download --out . 3.11.2.5 --hardware rm2

Extracting the firmware...

$ ./codexctl extract --out 3.11.2.5.img 3.11.2.5_reMarkable2-qLFGoqPtPL.signed
/private/var/folders/0b/xbwnxg6x0ml13nwwl2qxbn940000gn/T/onefile_80808_1752867910_64129/codexctl/analysis.py:26: RuntimeWarning: Public key missing

I noticed the warning, but it DID create a .img of substance, so I risked it and moved forward...

% ssh root@10.11.99.1
% mount
/dev/mmcblk2p3 on / type ext4 (rw,relatime)
% dd if=/home/root/3.11.2.5.img of=/dev/mmcblk2p2
552960+0 records in
552960+0 records out

After this I exited back to my local computer...

$ ./codexctl restore
Would you like to use a password to connect? (Y/n): Y
Enter RM SSH password: [[ REDACTED ]]
Success: Connected to device
Device restored to previous version [True]
Traceback (most recent call last):
  File "/private/var/folders/0b/xbwnxg6x0ml13nwwl2qxbn940000gn/T/onefile_80848_1752868372_230637/main.py", line 12, in <module>
  File "/private/var/folders/0b/xbwnxg6x0ml13nwwl2qxbn940000gn/T/onefile_80848_1752868372_230637/codexctl/__init__.py", line 480, in main
  File "/private/var/folders/0b/xbwnxg6x0ml13nwwl2qxbn940000gn/T/onefile_80848_1752868372_230637/codexctl/__init__.py", line 221, in call_func
AttributeError: 'DeviceManager' object has no attribute 'reboot_device'

I had a bad feeling, but hoped that the mechanism for restarting had maybe become depricated, so I noted the IP and PW and rebooted it myself, it thankfully DID come back on, but the firmware was unchanged

% ./codexctl status    
Would you like to use a password to connect? (Y/n): Y
Enter RM SSH password: [[ REDACTED ]]
Success: Connected to device

Current version: 3.20.0.92
Old update engine: True
Beta active: Release
Version id: 20250613122401

I also tried to manually use switch on the remarkable itself, but as I've read it's simply not on the system in this version...
So, is there a way to downgrade such a new version? or has the upgrade mechanism changed so much that it's no longer an option? Or does restoring from the fallback partition now explicitly require the use of the pogo pin / jumper method as detailed in https://github.com/ddvk/remarkable2-recovery ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions