ddvk / remarkable2-framebuffer

remarkable2 framebuffer reversing
MIT License
272 stars 22 forks source link

Does not work with my version of Xochitl #18

Open raisjn opened 3 years ago

raisjn commented 3 years ago

This issue is for when rm2fb's server process fails to find the signature it needs.

Please respond with which binary was being used and what its md5sum is, thank you!

NOTE: this issue is specifically for if rm2fb server or client prints out an error referencing issue #18. The error message means that the signatures we use are no longer valid in the version of xochitl being used. Please open separate threads for other issues.

matteodelabre commented 3 years ago

Great, thanks a lot! I’ll push a new release with those addresses.

deanhuff commented 2 years ago

Thanks for putting that link in systemctl. It lead me here and I found your new release. I just got a rm2, put Toltec on and was dead in the water post reboot (stuck on starting screen). I downloaded your latest libs and replaced the files in my /opt/lib and now I'm back in action.

hunt529 commented 2 years ago

I am a linux neopyhte; but am trying to soak up as much as I can. I am trying to getting my KO reader back working again. I had installed KO reader several RM versions ago and successfully got KO Reader working after the subsequent RM upgrades.

In the most recent upgrade 2.9.1.217 I must have done something different and I can't seem to get KOreader functioning again.

When I try to start KO reader via SSH systemctl start koreader screen flashes but then restarts Remarkable When I install the koreader swipe up toggle -- it sucessfully installs but when I perform the swipe up the screen flashes but then restarts Remarkable.

So what I do next is try to reinatall everything. My current version of Remarkable software version 2.9.1.217. When I install Toltec to reinatall rm2fb stuff -- I brick (stuck on starting screen) -- I've figured out now how to revert by downgrading to 2.7 and then re-upgrading to 2.9.1.217 (thanks DDVK for the remarkable-update instructions).

So I am suspecting that the I am missing rm2fb.conf ? or something?

Should I be trying to log the issue with some kind of journalctl command? Should I be reinstalling everything in a perfered sequence to get KO reader working again.

Any help would be apprecaited --

Eeems commented 2 years ago

When rm2fb is running, what is it outputting? journalctl -u rm2fb. What version of rm2fb were you installing? The latest version is available in the toltec testing repo, but not stable.

If you are on the "reMarkable is starting" screen, you likely aren't soft bricked, you likely can still ssh in over usb if you have an ssh key installed, or remember your ssh password. In which case you can just uninstall rm2fb without needing to downgrade.

jdkruzr commented 2 years ago

I'm also getting a lot of this after upgrading to the latest reMarkable software version. I tried toltecctl switch-branch testing and then opkg update to see if I could get a new version of rm2fb-client, but it says I'm already on the latest version.

Sep 02 16:35:00 reMarkable systemd[1]: Started reMarkable 2 Framebuffer Server.
Sep 02 16:35:01 reMarkable xochitl[190]: BIN FILE: /usr/bin/xochitl
Sep 02 16:35:01 reMarkable xochitl[190]: COULDNT LOCATE SIGNATURE IN /usr/bin/xochitl
Sep 02 16:35:01 reMarkable xochitl[190]: PLEASE SEE https://github.com/ddvk/remarkable2-framebuffer/issues/18
Sep 02 16:35:01 reMarkable xochitl[190]: STARTING RM2FB
Sep 02 16:35:01 reMarkable systemd[1]: rm2fb.service: Succeeded.

I'm also stuck on "reMarkable is starting." I can get in via usb and even via WiFi if I manually mess with wpa_supplicant.

deanhuff commented 2 years ago

i was able to get myself unstuck by doing this: https://github.com/toltec-dev/toltec/issues/418

Eeems commented 2 years ago

@jdkruzr what does /etc/version contain? What version of display do you have installed?

jdkruzr commented 2 years ago
reMarkable: ~/ opkg info display
Package: display
Version: 1:0.0.7-1
Depends: xochitl, rm2fb-client
Replaces: rm2fb
Conflicts: rm2fb
Status: unknown ok not-installed
Section: devel
Architecture: rm2
Maintainer: raisjn of.raisjn@gmail.com
Size: 19121
Filename: display_1_0.0.7-1_rm2.ipk
Description: Interface to the reMarkable framebuffer

Package: display
Version: 1.0.1-7
Depends: rm2fb-client, xochitl
Replaces: rm2fb
Conflicts: rm2fb
Status: install user installed
Architecture: rm2
Installed-Time: 1629874759

^-- not sure how to read that.

As of five minutes ago I can't get in via USB, but the version started with 20200812, I think.

jdkruzr commented 2 years ago

@Eeems 20210812195523 for /etc/version.

jdkruzr commented 2 years ago

ftr, I am now somehow in a situation where the USB networking device no longer shows up. if you restart it you can watch the screen flash, do the "reMarkable is starting" thing, the interface shows up as enxetc.etc.etc., does not acquire an IP address and then disappears, all in the span of about 15 seconds.

jdkruzr commented 2 years ago

anyone have any ideas how to troubleshoot this?

Eeems commented 2 years ago

anyone have any ideas how to troubleshoot this?

If you can manage to ssh into the device I'd recommend trying to disable xochitl and rm2fb to avoid it rebooting too many times.

jdkruzr commented 2 years ago

what if I can't? is there some kind of hard-reset option?

Eeems commented 2 years ago

what if I can't? is there some kind of hard-reset option?

https://github.com/ddvk/remarkable2-recovery

rotech commented 2 years ago

Just got the new beta version 2.10.0.295, xochitl offsets below.

!20210908132913 version str 2.10.0.295 update addr 0x396ea4 updateType str QRect create addr 0x3992b8 shutdown addr 0x39925c wait addr 0x3987dc getInstance addr 0x38d78c

rotech commented 2 years ago

Latest beta version offsets.

!20210923144714 version str 2.10.0.324 update addr 0x397ff4 updateType str QRect create addr 0x39a408 shutdown addr 0x39a3ac wait addr 0x39992c getInstance addr 0x38e8dc

rotech commented 2 years ago

Another new version. Also, just wanted to check that this is the right place to be putting this for others to update their rm2fb.conf files.

!20210929140057 version str 2.10.1.332 update addr 0x397ff4 updateType str QRect create addr 0x39a408 shutdown addr 0x39a3ac wait addr 0x39992c getInstance addr 0x38e8dc

Eeems commented 2 years ago

Also, just wanted to check that this is the right place to be putting this for others to update their rm2fb.conf files.

You might just want to open a PR to update https://github.com/ddvk/remarkable2-framebuffer/blob/master/src/shared/config.cpp

rotech commented 2 years ago

Yeah I thought about that, but I was worried that might trick people into thinking their version was supported when that hadn't been compiled as a release yet. Especially now it is mentioned in the README as a place to look.

Eeems commented 2 years ago

Yeah I thought about that, but I was worried that might trick people into thinking their version was supported when that hadn't been compiled as a release yet. Especially now it is mentioned in the README as a place to look.

In that case I guess we'll never release any new updates ;) Honestly we should be reporting what is supported with a better mechanism. Probably #69

ClashTheBunny commented 2 years ago

How are these found? Could it be part of the package to objdump the new addresses and detect the location on run instead of at compile time?

Is it possible to make this fail more gracefully? Could we start xochitl on error?

Witos commented 2 years ago

The auto-update idea is good one, but maybe let's start with something simpler, like a plain-text config, so that the binary itself doesn't have to be recompiled every time.

matteodelabre commented 2 years ago

@Witos This part is already implemented. In addition to the hardcoded config, rm2fb reads its config from the following locations: https://github.com/ddvk/remarkable2-framebuffer/blob/90b3b756a916b92f0b91ffb1c67ae138bd9f6001/src/shared/config.cpp#L178-L184

urv commented 2 years ago

Another new version. Also, just wanted to check that this is the right place to be putting this for others to update their rm2fb.conf files.

!20210929140057 version str 2.10.1.332 update addr 0x397ff4 updateType str QRect create addr 0x39a408 shutdown addr 0x39a3ac wait addr 0x39992c getInstance addr 0x38e8dc

@rotech how do you extract those offsets? I got another update 20211014151303. Thanks

rotech commented 2 years ago

@urv Using a disassembler to find the function offsets, the main README explains what to look for. Here is the latest that I have.

!20211014151303 version str 2.10.2.356 update addr 0x398aac updateType str QRect create addr 0x39aec0 shutdown addr 0x39ae64 wait addr 0x39a3e4 getInstance addr 0x38f394

urv commented 2 years ago

@urv Using a disassembler to find the function offsets, the main README explains what to look for. Here is the latest that I have.

Thanks I've found the description indeed in the README couple of minutes ago and was about to extract the offsets :)

!20211014151303 version str 2.10.2.356 update addr 0x398aac updateType str QRect create addr 0x39aec0 shutdown addr 0x39ae64 wait addr 0x39a3e4 getInstance addr 0x38f394

Thanks a lot for the effort

cmhe commented 2 years ago

@rotech it seems to me that the offset of the update function (0x398aac) is not correct for the version 20211014151303.

cmhe commented 2 years ago

I have thrown ghidra on it, at it seems like function 0x003989f8 uses the Unable to complete update: invalid waveform ( string, but the signature does not match. Its (void*)(int, QString *)... But I am not used to reverse engineering, so maybe someone else can check?

cmhe commented 2 years ago

Nevermind, I think my xochitl binary got corrupted...

LinusCDE commented 2 years ago

Nevermind, I think my xochitl binary got corrupted...

I put @rotech's changes into /opt/etc/rm2fb.conf and it worked. So your assumption seems correct.

Maybe this helps to ensure it:

reMarkable: ~/ cat /etc/version 
20211014151303
reMarkable: ~/ sha256sum /usr/bin/xochitl 
4e0f7498adf3482d1c5d55f3236cf67d74c316723770bd088285c8d155956163  /usr/bin/xochitl
Eeems commented 2 years ago

Is 20211014151303 a non-beta version?

luclu commented 2 years ago

Yes, cat /etc/version == 20211014151303 on my 2.10.2.356.

Eeems commented 2 years ago

Yes, cat /etc/version == 20211014151303 on my 2.10.2.356.

Alright, would someone be willing to open a PR to add this to the default configuration?

rotech commented 2 years ago

!20211102143141 version str 2.10.3.379 update addr 0x398acc updateType str QRect create addr 0x39aee0 shutdown addr 0x39ae84 wait addr 0x39a404 getInstance addr 0x38f3b4

murchu27 commented 2 years ago

!20211102143141 version str 2.10.3.379 update addr 0x398acc updateType str QRect create addr 0x39aee0 shutdown addr 0x39ae84 wait addr 0x39a404 getInstance addr 0x38f3b4

So I'm on 2.10.3.379, and I want to test this out, but I'm not totally clear on the steps. I uninstalled rm2fb-client with toltec, then added the contents of your comment to /opt/etc/rm2fb.conf, and reinstalled with toltec.

xochitl has restarted successfully, and systemctl logs for rm2fb as below:

● rm2fb.service - reMarkable 2 Framebuffer Server
     Loaded: loaded (/lib/systemd/system/rm2fb.service; enabled; vendor preset: disabled)
     Active: active (running) since Tue 2021-11-16 21:44:58 UTC; 4min 59s ago
   Main PID: 416 (rm2fb-server)
     CGroup: /system.slice/rm2fb.service
             └─416 rm2fb-server

Nov 16 21:44:58 reMarkable systemd[1]: Started reMarkable 2 Framebuffer Server.
Nov 16 21:44:58 reMarkable xochitl[416]: STARTING RM2FB
Nov 16 21:44:58 reMarkable xochitl[416]: getInstance() at address: 0x38f3b4
Nov 16 21:44:58 reMarkable xochitl[416]: REPLACING THE IMAGE with shared memory
Nov 16 21:45:00 reMarkable xochitl[416]: Reading waveforms from /usr/share/remarkable/320_R299_AFC421_ED103TC2U2_VB3300-KCD_TC.wbf
Nov 16 21:45:00 reMarkable xochitl[416]: Running INIT (135 phases)
Nov 16 21:45:00 reMarkable xochitl[416]: 1404 1872 16

Does that mean this is working fine? I had a near miss with bricking my device (dixonary/draft-reMarkable#32), so I want to be absolutely sure I've got this right before installing anything else that uses this.

Eeems commented 2 years ago

rm2fb-client is just the client binaries, the server binaries are under the display package. It does look like it loaded your configuration though. After it's running does xochitl display when you start it?

murchu27 commented 2 years ago

rm2fb-client is just the client binaries, the server binaries are under the display package. It does look like it loaded your configuration though. After it's running does xochitl display when you start it?

Ah gotcha, well toltec automatically installed display anyway so that should be all good! And yes, xochitl is displaying fine, tablet works as normal, and both xochitl and rm2fb services are running.

Eeems commented 2 years ago

Looks like someone should open a PR to get https://github.com/ddvk/remarkable2-framebuffer/blob/master/src/shared/config.cpp#L13 updated so that a new version can be spun up and merged into toltec.

murchu27 commented 2 years ago

Assuming all is good and the PR can be merged, is the version on toltec automatically updated?

Eeems commented 2 years ago

Assuming all is good and the PR can be merged, is the version on toltec automatically updated?

No, another PR would be required for that, after a release has been tagged in this repo. I'll likely jump on that as soon as it happens.

murchu27 commented 2 years ago

Assuming all is good and the PR can be merged, is the version on toltec automatically updated?

No, another PR would be required for that, after a release has been tagged in this repo. I'll likely jump on that as soon as it happens.

Cool beans, happy to help if needed :+1:

jtraulle commented 2 years ago

Hello,

Forgotten to disable beta release since previously activated (I have now opted out from them).

So I just got the 2.11.0.442 update 😕

reMarkable: ~/ cat /etc/version 
20211208075454
reMarkable: ~/ md5sum /usr/bin/remarkable-shutdown /usr/bin/xochitl
44ec524ac3f396b685fa422a6aa981d4  /usr/bin/remarkable-shutdown
2b1db19120244cbccfa9f1a4f11cd946  /usr/bin/xochitl
LinusCDE commented 2 years ago

You can use https://github.com/ddvk/remarkable-update/blob/main/switch.sh to return to the previous rootfs/version. I don't think that it's allowed to post these binaries here. But maybe download them first just in case.

jtraulle commented 2 years ago

You can use https://github.com/ddvk/remarkable-update/blob/main/switch.sh to return to the previous rootfs/version. I don't think that it's allowed to post these binaries here. But maybe download them first just in case.

Thats great, thanks, it worked perfectly :)

Eeems commented 2 years ago

2.11.0.442 just came out. /etc/version: 20211208075454 md5sum /usr/bin/remarkable-shutdown: 44ec524ac3f396b685fa422a6aa981d4 md5sum /usr/bin/xochitl: 11d48ba43329e93490f7501913e93e44

seanatcesa commented 2 years ago

2.11.0.442 just came out. /etc/version: 20211208075454 md5sum /usr/bin/remarkable-shutdown: 44ec524ac3f396b685fa422a6aa981d4 md5sum /usr/bin/xochitl: 11d48ba43329e93490f7501913e93e44

+1. I just received my device and am waiting for this same signature update.

Eeems commented 2 years ago

+1. I just received my device and am waiting for this same signature update.

It's already out and in toltec stable.

seanatcesa commented 2 years ago

+1. I just received my device and am waiting for this same signature update.

It's already out and in toltec stable.

Ah! I'm sorry I missed that. Thank you.

scarpentier commented 2 years ago

2.12.1.527 just hit my device!

/etc/version: 20220202133838 md5sum /usr/bin/remarkable-shutdown: 44ec524ac3f396b685fa422a6aa981d4 md5sum /usr/bin/xochitl: ad471473b3b8aa9ee132c1253ffa8b34

EntrixIII commented 2 years ago

@scarpentier:

2.12.1.527 just hit my device!

The open PR #91 adds support for 2.12.1.527. You can just put it into one of the many config files (see README.md)