Numwork custom userlands
just some info on how to get them working (mostly for me to remember)
1 September 2025
Numworks is a cool brand of calculators and I have one!
Customizing the software on the hardware you own is quite fun so I tried to make some modifications to the open source
epsilon software (see the doc on it)
When I tried to do this, the doc wasn’t updated for a while so I had to figure out things by myself :(
Here’s some notes for you to do the same thing and for me to not forget it again.
Getting started
-
Fork the epsilon repo! (Numworks license specifies that you shouldn’t redistribute a modified version, 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 -
Compile it!
make clean make -j10 userland.B.dfu MODEL=n0120 TARGET=device.n0120(change MODEL according to your numwork’s model, the exact number can be found on the back and should be something like N0110, N0115 or N0120)
(you might need to build the A userland if runningpython3 build/device/dfu.py -l | grep '0x90000000'while your calculator is connected returns something, just build the B one if you get nothing.) -
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.dfuFor 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 (should) do all of this for you!!
https://gist.github.com/espcaa/f6f9be7e20cd47cbd2b1aea7c5ec4ca8
(update: it might be broken :sob:)