ReMapper DevLog
September 29, 2025
The initial plan this week was to mostly work on the nodal program. I did get started on this and made some decent progress, but ultimately decided to cut it off. Theres an image of the idea in the appendix of this log.
The reason I cut it off is I realized how much work/support it would require to allow the user to be truly expressive with the nodal program. Things like loops, arrays, branches, storage, all seemed essential for the ideas I had in mind and the expressiveness I wanted the user to have, but they all seemed like a lot of effort to create and it felt like I was re-creating the wheel. This isn't a project about remaking geometry nodes or blueprints, rather it was about making my first open source hardware product!
I decided instead that I would support the LUA programming language, users desiring to create custom behaviours would be able to load their own lua scripts, and for those that simply want something that works, I would write and preload a bunch of scripts within the firmware. This seems like a great middle ground to me, I don't need to recreate programming primitives and the users can still get the expressiveness they desire, albiet at a higher bar of entry. Hopefully with good docs and good examples this can be lowered.
For those curious, the initial attempt of the nodes on the front end was done using the LiteGraph.js library. It's the same one used with ComfyUI, and was plenty good for what I was aiming at.
Oct 10, 2025
Progress Summary
This week has been busy, but I was able to get some stuff done, the todo list boils down to this:
- I have a fully solered ReMapper now, all inputs and all outputs are on it.
- I tried to make many many iteration of a cast, most attempts mostly ended up failing (primarily due to the buttons, I couldn't figure out how to mount ones that are as small as I'd like)
- It now cycles LUA code! Woow!
- I added a display_task that owns the LVGL context
- This display task can be interfaced via a callback queue. Im not sure about this design decision, but it the most sensible
- I tested the display task with animations/images in the programming task.
Images/Videos of the updates can be found in the appendix!
Issues / Changes
Unfortunately due to the buttons, I have come to the conclusion that another itteration of the PCB needs to happen. This new iteration needs to have the SMD buttons in the correct spots, this allowing me to build a case around the PCB. The buttons I want to use are too small to find in panel mounted form at an affordable cost.
This does open the door to decreasing the cost! Some part of me wants to uses ESP32 without the Antenna (basically punting on wifi/bluetooth capabilities), I want to try and place most things on the top layer, I think I can get rid of a lot of bypass caps (maybe? Ill ask around my circles to see!)
I think the next itteration will also be self assembled. There's going to be a large software effort right now, which means I can also spend time waiting on delivies for the various components.
Challenges
I'm going to share some of the pitfalls that ailed me this week, in hopes that anyone reading might be able to avoid them!
- Firstly, ESP-IDF toolchain dirent and other unix like file libraries do not null terminate the strings. I'm not sure if this is typical for embedded systems, but it gave me a hell of a time till I found out I can't use any str functions on that data
- It seems the ESP-IDF toolchain is a little too trigger happy on the optimizations? I've had a few cases where adding volatile before a variable fixed segfaults. It might indicate a worse issue in the software and this might be moot, but for now things seem to run consistently.
- I needed a mode that would erase the EMMC fully (takes about 2 min for me), because I often ended up bricking it in my testing
Oct 18, 2025
Today marks another mileston in the develepement, here are some milestones hit this week:
- I am getting more comfortable with the GUI and have a little file browser in "run mode" working
- Found and fixed a pesky bug in sharing the qspi bus between tasks (should not have beena thing)
- More sensible stack sizes (IDK what I was thinking before)
- Input manager, now tasks can hook into a callback to listen into hardware events (which the LUA task now does)
- Putting off case re-design until I remake the PCB and can think of the whole process holistically
Some of the issues and ToDo items:
- Need to start working on the LUA API and testing that portion, I think this is going to be a large software effort compared to the rest of the project thus far.
- Need to fix some issues when you press buttons really fast, something causes a restart. I have not attempted to chase it yet.
- I had the remapper plugged in, in run mode, for a while on my computer and it dodn't show up as a joystick. I reboot fixed it, but this is something to pay attention to
Appendix