NetSurf on reMarkable 2

Posted on 2025-08-31

One thing I always have wished that my reMarkable 2 had was web browser. It wouldn't need to be very efficient nor the best browser out there. Just something simple I can use to read definitions for words or other small knowledge when I'm reading articles I've sent to the device.

Well, seems with some elbow grease it's possible. And a lot of help from reMarkable discord.

reMarkable 2 running Netsurf

In this post I'm documenting the steps for setting it up.

I am not responsible if anything goes wrong with your reMarkable device when following this guide.

SSH connection and passcode

You will have to have SSH connection to your device. Also turning off the passcode during the process will make things easier.

You can find out what address you need to connect to use SSH from Settings -> Help -> Copyrights and licenses. There's a little blurb in the end of it with the password and username, and the address.

Install XOVI + extensions and apploader

XOVI is the tool that makes all this at all possible on reMarkable devices with version 3.20 or higher.

Note that reMarkable 2 is the arm32 version.

You will also need extensions that allow apploader to work, which is what we use to load netsurf.

Follow this guide on how-to install XOVI: https://github.com/asivery/rm-xovi-extensions/blob/master/INSTALL.MD

And when I say follow it, follow it to-the-letter!

Then, install the qt-resource-rebuilder extension by following the above guide as well.

When that is done, install appload, by downloading it's newest version. Place appload.so into /home/root/xovi/extensions.d/ and the shim files into /home/root/shims/.

If folders do not already exist, create them.

Make sure that everything runs correctly by running xovi/start when you're inside /home/root folder, and then open sidebar. You should see a new button called "AppLoad."

Install Netsurf

Netsurf is a smol browser that doesn't do much, and has very limited Javascript support. But it's brilliant for very lightweight web-browsing, especially when using FrogFind.

Now this is a bit fiddly part, since there's no premade package for it that just works on XOVI.

First, download the newest release from here: https://github.com/alex0809/netsurf-reMarkable/releases/

Get the nsfb.tar.gz file. It has a folder called resources which we will need later.

Then, copy the insides of this file: https://github.com/alex0809/netsurf-reMarkable/blob/main/example/Choices. In reMarkable tablet, place paste the contents inside /home/root/.netsurf/Choices file. You can use Vim on reMarkable 2 by the way!

Open the /home/root/xovi/exthome/appload/ folder, and create new folder called netsurf there. If any paths do not exist yet, create them.

In that folder, you want to place this json snippet, and save it as external.manifest.json.

{
  "name": "Netsurf",
  "application": "nsfb",
  "environment": {
    "LD_LIBRARY_PATH": ".",
    "LD_PRELOAD": "/home/root/shims/qtfb-shim.so"
  },
  "qtfb": true
}

You will also need an icon. Any png file will do, I just searched for "netsurf logo" and found some small icon. Save this in the same folder as icon.png.

Then place the nsfb file from that tarball you downloaded in the same folder.

After that, we also need a libevdev.so.2 file. You can get that by manually compiling it with the rM2 toolchain: https://developer.remarkable.com/documentation/sdk

You can also download the file I got from the reMarkable Discord from here: libevdev.so.2 It has worked fine for me at least. Downloading random libraries over the internets is always a security problem, so be careful, of course.

Place it next to the nsfb file. This is what your /home/root/xovi/exthome/appload/netsurf/ folder should look like:

external.manifest.json
icon.png
libevdev.so.2
nsfb

Important: Make sure to run chmod a+x nsfb in that folder. I also ran chmod a+x libevdev.so.2 but I'm not sure if that is necessary.

We now have the app there and if you refresh AppLoad or run cd && xovi/start, you should see netsurf there! Hooray! Alas, it wont work yet and will crash at boot: We still lack the resource files and the fonts!

Resources and fonts

Last step is to place the contents of the resources folder you downloaded inside this path: /opt/usr/share/netsurf/. If the path doesn't exist, create them.

Then, download DejaVu fonts and place all the TTF files in /opt/share/fonts/ttf-dejavu/. Again, create paths if they do not exist.

And that's it!

That's it, should be good to go. I still ran cd && xovi/start one more time, let the device reboot and then I could launch netsurf from the appload menu!

Usage tips

  • Swipe from the top of the screen around the address bar ~1cm down to open a window menu bar,
    • This lets you close or even turn the app into small window you can drag around!
  • To open the onscreen keyboard, press the tiny a in the bottom-right of the screen.
  • If you want to add bookmarks, you will have to edit the /opt/usr/share/netsurf/welcome.html and write them in HTML.
  • In /home/root/.netsurf/Choices file..
    • You can change the homepage with modifying the homepage_url:about:welcome key.
    • You can enable very simple support for javascript with enable_javascript:1.
      • It's not perfect though.
  • Logins do not seem to save. I could login to lobste.rs but if I restarted the browser, the cookies are gone.

Last thing is that you can make xovi/start autorun at boot with a systemd-unit file, since otherwise whenever you reboot your device, the appload menu disappears since it's not loaded.

However, I decided against that because if XOVI starts acting up after an update, I don't want it to make my device act up every boot. So whenever I reboot the device, I manually run it over SSH.


And that's it!

Thank you so much to asivery in the reMarkable Discord, who helped me to figure out how to get this running. They are also the person behind XOVI and I'm super intrigued what else they can make reMarkable do over time! Thank you also to the people who have made Netsurf running on remarkable. :)

I hope this helps others to run Netsurf on their remarkable 2 tablet as well. I do not know if the guide works with rM1 or reMarkable paper pro, though. You may have to adapt some bits, like use 64 libraries for remarkable paper pro; I am not sure.

Anyways, thanks for reading, and happy hacky browsing!