
Numworks userlands!
just some info on how to get them working (partially for me to remember)
September 1, 2025
Numworks is a cool brand of calculators and I have one!
Making your software personalized is quite fun so I tried to adapt the open source
epsilon software with some cool stuff following the doc on it
At that time the doc wasn’t up to date so I had to figure out things by myself! Here’s some info if you want to do the same :)
Getting started
- Fork the epsilon repo! (Numworks license specifies you shouldn’t redistribute it modified, but github tos should still allow you to make a fork?)
- Clone and install the dependencies as specified in the doc BUT MAKE SURE THAT YOU’RE USING arm-none-eabi-gcc 12.2.1 (some other versions might work too, but the default one on a lot of linux distros won’t work)
- Make some modifications!
try modifying the colors in/escher/include/escher/palette.h
- Now you just have to compile it for your calculator.
For a n0120 (the most common one):
make clean
make -j10 userland.B.dfu MODEL=n0120 TARGET=device.n0120
(if you need to build for a N0115, jut change the args, and just remove them for a N0110)
(you might need to build the A userland if running python3 build/device/dfu.py -l | grep '0x90000000'
returns something, just build the B one if it doesn’t)
- Flash it to your calculator!
For an A userland:
python3 build/device/dfu.py -s 0x90010000:leave -D output/release/device/n0110/userland/userland.A.dfu
For a B userland:
python3 build/device/dfu.py -s 0x90410000:leave -D output/release/device/n0120/userland/userland.B.dfu
Github action!
I made a github action that does all of this for you if you want :)
https://gist.github.com/espcaa/f6f9be7e20cd47cbd2b1aea7c5ec4ca8