Remora NucleoF446RE w/ W5500 Ethernet interface fork
Open-source Remora firmware ported to STM32 Nucleo-F446RE with WIZnet W5500 Ethernet. Step-gen, digital I/O & HW PWM verified for LinuxCNC over TCP/IP.

Project Overview:
This port brings the Remora real-time motion-control firmware to the STM32 Nucleo-F446RE and WIZnet W5500 Ethernet chip. By replacing USB with deterministic TCP/IP, a LinuxCNC PC can drive motors over a single Ethernet cable, reducing noise and simplifying wiring.
Key Features:
• Verified modules — step-generation, digital I/O and hardware PWM confirmed on F446RE.
• Single-file pin re-mapping — edit “platformio.ini” to change W5500 CS/RST or UART pins.
• Fully open-source (GPL-3.0) — easy to adapt for custom boards.
Hardware Setup – Default W5500 Pin-map:
SCK → PA5
MISO → PA6
MOSI → PA7
RST → PB5 (configurable)
CS → PB6 (configurable)
Note: The SPI interrupt line is not used in this firmware.
Software Implementation (code snippet):
#include <Ethernet/W5500.h>
void netInit() {
W5500.begin(PB6 /*CS*/, PB5 /*RST*/);
}
Build & Flash:
pio run -e nucleo_f446re
pio run -e nucleo_f446re -t upload
Network Architecture:
LinuxCNC PC → (Ethernet Switch) → W5500 @ 100 Mbps → Remora core → Step/Dir drivers
Note: the MCU waits for an Ethernet link before finishing boot.
Known Limitations & Roadmap:
- Software-PWM, encoder and analog-input modules are not yet ported.
- Support for the larger Nucleo-F446ZE (144-pin) is in progress.
- Performance metrics (max step rate, CPU load) await formal measurement.
Lessons Learned:
Using W5500’s hardware TCP/IP stack off-loads networking from the MCU, keeping real-time jitter low even while LinuxCNC streams motion commands.
Future Improvements:
- Implement analog inputs and quadrature encoder capture.
- Add web-based config upload to replace the current TFTP script.
DOCUMENTS
- Name: Main Application Code | Link: GitHub repo | Comment: Firmware & PlatformIO project
- Name: Example LinuxCNC Config | Link: LinuxCNC_Configs/NucleoHat | Comment: 3-axis demo
- Name: Nucleo Hat PCB (optional) | Link: https://github.com/ben-jacobson/RemoraNucleoHatPCB | Comment: Break-out board design