SuperLongBoard
SuperLongBoard: Why a CNC Shop Tired of EMI Chose W5500 Ethernet Over USB
Summary
The SuperLongBoard (SLB) is a $165 32-bit grblHAL controller that Canada's Sienci Labs built for its LongMill desktop CNC router. To stop the mid-job disconnects its older board suffered from shop electrical noise (EMI), Sienci put a WIZnet W5500 Ethernet port directly on the board alongside USB-C. Following the code shows that the W5500 does not run as a hardware TCP/IP engine (TOE). It runs in MACRAW mode, and lwIP on the STM32F412 handles TCP/IP. That makes the SLB a notable case: a CNC controller chose the W5500 not as "a TCP engine in a chip" but as "an Ethernet MAC+PHY on SPI."
Overview
Sienci Labs is a CNC maker based in Waterloo, Ontario, Canada. It says it has built about 15,000 CNC machines over roughly ten years, and that its free G-code sender gSender has more than 60,000 users. Its main products are the kit-style LongMill desktop router and the larger AltMill.
The SLB replaced the LongMill's brain. Sienci first showed it in April 2023, opened pre-orders in December 2023, and shipped the first batch of 500 in April 2024. Sienci says development took more than 1.5 years and over $200k in R&D. The hardware is released under CERN-OHL-S v2, schematics included, and was designed together with Expatria Technologies, the maker of the FlexiHAL grblHAL boards.
→ About Sienci: https://sienci.com/about/
→ SLB Welcome (development timeline): https://resources.sienci.com/view/slb-welcome/
→ Product page: https://sienci.com/product/slb/
Why It Matters
Sales — Confirmed
- First shipment of 500 units (April 2024, firmware 5.0.3), and about 700 sold as of the Welcome page
- Standard equipment on the LongMill MK2.5
- Not a personal DIY build but a commercial controller the maker ships in its own machines
→ sienciHAL firmware changelog: https://github.com/Sienci-Labs/sienciHAL
Motivation — EMI-Driven Disconnects
Sienci says its older LongBoard (Arduino-based) dropped connections mid-job and had settings corrupted because of EMI, and names this as the reason for developing the SLB. A CNC router runs a trim router or spindle, a dust collector, and stepper motors all at once, which makes for a noisy electrical environment. The USB cable between the PC and the controller becomes the weak link.
User reports point the same way. One SLB product review says:
"Fixed my static issues, but only after switching to the ethernet jack."
→ SLB product reviews: https://sienci.com/product/slb/
Industry Trend
Commercial grblHAL boards are increasingly offering wired Ethernet, built in or as an option.
- Expatria FlexiHAL 2350 — an RP2350 grblHAL board with W5500 Ethernet
- Ooznest — adopted the W5500 on its ESP32-S3 grblHAL board
- Sienci SLB — W5500 mounted directly on the board
All three are controller makers for the hobby and small-shop CNC market. Wired links, long standard in industrial controllers, appear to be moving down into hobby CNC boards [Inferred].
→ FlexiHAL 2350 (WIZnet Makers): https://maker.wiznet.io/scott/resellers/flexihal-2350-cnc-controller/
Product Breakdown
| Item | Detail |
|---|---|
| MCU | STM32F412VGT6 (Cortex-M4, 100MHz, 1MB Flash, 256KB SRAM) |
| Ethernet | WIZnet W5500 on board (U11, dedicated 25MHz crystal), HanRun HR911105A RJ45 |
| USB | USB-C (required for initial setup and firmware updates) |
| Motor drivers | 4 × TMC2660C (X, Y1, Y2, Z); the fourth rotary axis (A) is an external-driver output |
| Other I/O | RS485 (Modbus VFD), spindle and laser PWM, tool length sensor, touch probe, E-stop, 3 macro buttons, microSD, CANBUS jack, RGB status light |
| Power | 24V DC (product page says 12.5A; manual and board silkscreen say 10A. Adapter sold separately) |
| Firmware | grblHAL (Sienci fork sienciHAL; upstream grblHAL has also had an SLB board definition since March 2024) |
| License | Hardware CERN-OHL-S v2 |
| Price | $165 (currently out of stock) |
The SLB schematics are public, so you can see exactly how the W5500 is wired. The Ethernet_Interface sheet (B6.1, 2024-01-30) shows the W5500 (U11), a 25MHz crystal, the HR911105A RJ45 jack with integrated magnetics, and the SPI_CS_JOG_SW, W5500_INTn, and W5500_RSTn signals running to the MCU.
→ SLB schematic (B6.1): https://github.com/Sienci-Labs/SuperLongBoard/blob/master/Project%20Outputs%20for%20Longboard_32bit/Schematic%20and%203D%20Prints/Longboard_32bit_Schematic_B6.1_FULL_PLACE.PDF
Sibling Model: SLB-EXT
The SLB-EXT Closed-Loop Controller ($175) is a sibling board for the larger AltMill. It has no on-board motor drivers and instead drives external drivers such as closed-loop steppers. It offers the same USB-C plus Ethernet setup as the SLB. We will cover the SLB-EXT in detail in a separate article.
→ SLB-EXT product page: https://sienci.com/product/slb-ext-closed-loop-controller/
Architecture
Here is what happens when gSender on the PC sends a line of G-code over Ethernet.
- gSender opens a TCP connection to the SLB's default address 192.168.5.1 and sends G-code
- The Ethernet frame enters through the RJ45, the HR911105A isolation transformer, and into the W5500. The W5500 holds the frame in its on-chip buffer and signals the STM32 over IRQ (PA10)
- The STM32 reads the whole frame over SPI1 and hands it to lwIP. lwIP handles ARP, IP, TCP, and the ACK reply
- The G-code string that lwIP extracts enters grblHAL's input stream and flows to the motion planner, step generation, and the TMC2660C drivers
- Replies such as status reports go the other way: lwIP builds the frame, and the STM32 writes it to the W5500 for transmission
Sienci's manual says to connect the PC directly instead of through a router, and to give the PC a static IP in the same subnet (for example 192.168.5.5). The required bandwidth is only 1–2 Mbps.
→ SLB technical manual: https://resources.sienci.com/view/slb-manual/
Technology Background
grblHAL — One Motion Core, Many Boards
grblHAL rewrites grbl 1.1, the Arduino CNC firmware, for 32-bit MCUs. Its key idea is a hardware abstraction layer (HAL). The core, which holds G-code parsing and motion planning, never mixes with MCU-specific code. Each MCU driver exposes GPIO, timers, and communications to the core through function pointers. Features such as SD card support, Trinamic drivers, and networking attach as plugins.
- A core bug fix reaches every board at once
- A board maker can add its board with a single board map file
The SLB follows this structure exactly. The STM32F4xx driver contains a board map called longboard32_map.h, and the networking plugin handles Ethernet. Because board differences live in one board-map file, Sienci's plan to drop its own fork and return to upstream seems to have been feasible [Inferred].
→ grblHAL core wiki: https://github.com/grblHAL/core/wiki
Shop EMI and Ethernet Isolation
USB ties the PC's ground directly to the controller's ground through the cable. In general, when a spindle or stepper kicks in and the two grounds shift, the difference can ride on the signal lines as common-mode noise and briefly drop the USB device [Inferred]. The SLB's USB circuit does include a common-mode choke and ESD protection (schematic USB_Connector sheet), but it has no galvanic isolator, so the grounds stay tied.
Ethernet works differently. The isolation transformer inside the RJ45 jack electrically separates the cable side from the chip side. The datasheet for the SLB's HR911105A lists:
- 1500Vrms isolation (0.5mA, 60 seconds, cable side to chip side)
- At least −30dB common-mode rejection (1–50MHz)
So choosing Ethernet on the SLB removes the direct ground connection between the PC and the controller. Sienci's manual says to use Ethernet if the PC is far away or disconnects occur, and this isolation appears to be the reason [Inferred]. Still, Sienci says the USB side also has shielding and ferrites, so Ethernet is not the only fix but the more reliable alternative.
→ HR911105A datasheet: https://core-electronics.com.au/attachments/localcontent/cc11be56d66bb63d5f1eeb85492439c0_335950a6d06.pdf
Technical Highlights
- EMI countermeasures by default — Sienci says both USB and Ethernet have shielding and ferrites, and explicitly lists Ethernet as a "communication alternative"
- Separate roles for each link — Ethernet for everyday jobs, USB-C for initial setup and firmware updates. Firmware cannot be updated over Ethernet
- Direct link and static IP by default — default IP
192.168.5.1, netmask255.255.255.0, static mode. Standard grblHAL builds default to DHCP. Sienci's static default pairs with the manual's direct-link recommendation [Inferred] - Bundled network services — the SLB's shipping firmware enables the grblHAL networking plugin's Telnet (sender connection), WebSocket (WebUI), and FTP (job file transfer) (sienciHAL
platformio.inilines 71–73). The plugin itself also supports HTTP, mDNS, SSDP, and more - From fork to upstream — Sienci forked grblHAL in February 2023 (sienciHAL) to develop the SLB, and upstream grblHAL has had an SLB board definition since 2024-03-19. Sienci says it intends to merge its changes back upstream, and sienciHAL is now intentionally not under active development. Whether the merge is complete is unverified
→ grblHAL core #731 (static vs. DHCP defaults): https://github.com/grblHAL/core/issues/731
Where WIZnet Fits
TOE: No — MACRAW + lwIP
The SLB's W5500 is not used as a hardware TCP/IP (TOE) engine. It opens a single socket, socket 0, in MACRAW mode to pass raw Ethernet frames, and lwIP on the STM32 handles TCP/IP. The evidence is right in the code.
| Evidence | Location | Content |
|---|---|---|
| lwIP glue code | grblHAL Plugin_networking wiznet/enet.c line 2 |
"lwIP driver glue code for WizNet breakout boards" |
| Opening the MACRAW socket | Same file, line 461 (master) | socket(SOCKET_MACRAW, Sn_MR_MACRAW, …) |
| Frame hand-off | wiznet/port/w5x00_lwip.c |
recv_lwip() / send_lwip() move frames to and from the lwIP netif |
| Buffer allocation | sienciHAL Src/w5x00_ll_driver.c line 133 |
Socket 0 gets TX 8KB / RX 8KB, all other sockets 0KB (16KB of the W5500's 32KB in use) |
| Maintainer comment | grblHAL core #830 (an SLB-EXT issue) | Terje Io: "I reduced the MEM_SIZE … it is allocated for the lwIP stack" |
| Board definition | grblHAL STM32F4xx boards/longboard32_map.h lines 30–31 |
Enabling Ethernet fails to compile unless _WIZCHIP_=5500 |
sienciHAL's build config (platformio.ini) also includes lwip and networking/wiznet along with -D _WIZCHIP_=5500. Including WIZnet's socket.h does not make it TOE. Here that API is used only to open one MACRAW socket.
→ grblHAL Plugin_networking: https://github.com/grblHAL/Plugin_networking
→ grblHAL core #830: https://github.com/grblHAL/core/issues/830
Division of Labor Between the W5500 and the STM32
| Task | Who |
|---|---|
| Physical layer (PHY), link negotiation, Ethernet MAC | W5500 |
| Receive frame buffering (RX 8KB), arrival notice (IRQ) | W5500 |
| ARP, IP, TCP, retransmission, ACK | lwIP on the STM32 |
| Telnet, WebSocket, FTP (SLB shipping config) | grblHAL networking plugin on the STM32 |
| G-code parsing, motion planning, step generation | grblHAL core on the STM32 |
Think of the W5500 here not as "a mailbox with a translator" but as "a sturdy mailbox." It keeps the letters (frames) safe from the weather (electrical noise) and rings a bell (IRQ) when mail arrives. Opening the letters and writing replies (TCP/IP) is done by the homeowner (the STM32). That contrasts with products that run the W5500 in TOE mode (for example ZenoLAN0505, [Inferred] TOE), where the W5500 also plays the "counter clerk."
→ ZenoLAN0505 (WIZnet Makers): https://maker.wiznet.io/scott/resellers/ip-ethernet-wifi-zenolan0505/
Why Not TOE? [Inferred]
We found no official document explaining why grblHAL chose MACRAW. The code structure suggests two reasons.
- Socket count — the networking plugin can run Telnet, WebSocket, FTP (control and data), HTTP, mDNS, SSDP, and MQTT at the same time. Add multiple clients and the W5500's 8 hardware sockets may not be enough
- Code sharing — grblHAL already has an lwIP path (
enet.c) for MCUs with a built-in Ethernet MAC, such as the STM32F407. Putting the W5500 under lwIP too lets all the upper-layer service code run unchanged
→ W5500 official documentation (8 sockets, 32KB buffer): https://docs.wiznet.io/Product/Chip/Ethernet/W5500
So Why the W5500?
The SLB's MCU, the STM32F412, has no Ethernet MAC. Ethernet is absent from the peripheral list on ST's product page, while the STM32F407 in the same F4 family lists a "10/100 Ethernet MAC." So for Ethernet, the SLB has to bring in both the MAC and the PHY externally.
The W5500 packs MAC + PHY + a 32KB buffer into one chip on four SPI lines. That advantage holds even in MACRAW mode. A second reason adds to it: the W5500 is a chip upstream grblHAL already supports, so one line, _WIZCHIP_=5500, plus the pin numbers in a board map unlocks the whole networking plugin.
→ STM32F412VG product page: https://www.st.com/en/microcontrollers-microprocessors/stm32f412vg.html
→ STM32F407VG product page: https://www.st.com/en/microcontrollers-microprocessors/stm32f407vg.html
The Cost of MACRAW
- RAM — lwIP needs
MEM_SIZE 16K(wiznet/lwipopts.h). That is manageable on the F412's 256KB of SRAM - Shared SPI — on the SLB, the W5500 shares SPI1 with the SD card (sienciHAL
Inc/longboard32_map.hlines 373–389). In grblHAL STM32F4xx #208, "Board hangs when network connection is used" (January 2025), Terje Io ran long tests under shared-SPI conditions but could not reproduce the hang. A participant from Expatria pointed out that a second W5500 IRQ arriving right after the first could be missed, and Terje replied thatenet.chad already been refactored, so that change was likely no longer needed. The reporter confirmed on 2025-01-17 that the issue was fixed in the new firmware
→ grblHAL STM32F4xx #208: https://github.com/grblHAL/STM32F4xx/issues/208
Similar Projects on WIZnet Makers
- FlexiHAL 2350 CNC Controller — a grblHAL board from Expatria, the SLB's design partner, that generates steps with RP2350 PIO and connects to the network through a W5500. When Ethernet is enabled, grblHAL's RP2040/RP2350 driver pulls in the same
networking/wiznetcode as the SLB along withpico_lwip(CMakeLists.txtlines 139–151), and the FlexiHAL 2350 board map assigns the WIZnet CS pin (boards/flexihal2350_map.hlines 201–204). In other words, the FlexiHAL 2350 is also MACRAW + lwIP
→ Project link: https://maker.wiznet.io/scott/resellers/flexihal-2350-cnc-controller/
→ grblHAL RP2040 build config: https://github.com/grblHAL/RP2040/blob/master/CMakeLists.txt - Why Did CNC Vendor Ooznest Choose W5500 Ethernet for Its grblHAL ESP32-S3 Board? — an ESP32-S3 grblHAL board from UK CNC vendor Ooznest. It attaches the W5500 through the ESP-IDF
esp_ethdriver, and lwIP handles TCP. The MCU and driver path differ, but the conclusion (W5500 = MAC+PHY, TCP = lwIP) matches the SLB
→ Project link: https://maker.wiznet.io/Benjamin/projects/why-did-cnc-vendor-ooznest-choose-w5500-ethernet-for-its-grblhal-esp32-s3-board/ - STM32F4xx grblHAL driver — covers the very driver family that holds the SLB board map. It explains the driver's two network paths (built-in MAC + lwIP, and W5500). This article confirms in code that the W5500 path is in fact MACRAW
→ Project link: https://maker.wiznet.io/matthew/projects/stm32f4xx-grblhal-driver/
The three cases and the SLB all share one structure: a grblHAL-family CNC controller gets wired networking from a W5500. Whether the MCU is an STM32, an RP2350, or an ESP32-S3, the grblHAL side converges on using the W5500 as a MAC+PHY under lwIP.
| Item | SuperLongBoard | FlexiHAL 2350 | Ooznest ESP32-S3 | STM32F4xx driver |
|---|---|---|---|---|
| Type | Commercial (Canada) | Commercial (Canada, Expatria) | Commercial (UK) | Open-source driver |
| MCU | STM32F412 | RP2350 | ESP32-S3 | STM32F4 family |
| W5500 connection | On board, SPI1 | W5500 | W5500, SPI | Per board |
| TCP/IP | lwIP (MACRAW) | lwIP (MACRAW) | lwIP (esp_eth) | Built-in MAC: lwIP / W5500: lwIP (MACRAW) |
| Motor drivers | 4 × TMC2660C on board | Unknown | Unknown | Per board |
| Price | $165 | Unknown | Unknown | Free (open source) |
The shared design philosophy is "motion on the MCU, connectivity on the W5500, protocols in lwIP." The SLB stands out by packing this structure, plus four motor drivers, into a $165 finished board sold as the standard controller for the maker's own machines.
Business Value
External View — Customers and Market
- No more mid-job drops — when a multi-hour carving job stops on a USB disconnect, both material and time are wasted. Ethernet's isolation transformer removes the direct ground connection between the PC and the controller, reducing that risk
- Distance between PC and machine — the machine can sit deep in a dusty, noisy shop while the PC stays outside
- File transfer and remote control — upload job files to the SD card over FTP, and run the machine from a browser through the WebUI
- Open hardware — public schematics let users and other makers learn from the design
Internal View — WIZnet
- The W5500 is now the default in upstream grblHAL — the upstream SLB board map requires the W5500 when Ethernet is enabled. As Sienci drops its fork and moves to upstream firmware, every user running upstream firmware on an SLB will take this path
- The W5500 wins even without TOE — when an MCU lacks an Ethernet MAC, the W5500 competes as "a MAC+PHY on a single SPI bus." It remains a default choice even in designs that do not use hardware TCP/IP
- Repeat adoption in the CNC controller market — Sienci, Expatria, and Ooznest have all chosen the W5500 for their commercial grblHAL boards. Because the adoption spreads within one firmware ecosystem rather than one company, demand is likely to continue [Inferred]
Limitations and Future Improvements
The SLB is a rare case of a maker tackling EMI head-on, publishing the result as open hardware, and working to return it to upstream grblHAL. What follows is not criticism but room to grow into the next generation.
Current Limitations
- Firmware updates over USB only — firmware cannot be flashed over Ethernet, so a USB connection is still needed at least once
- Direct link recommended — the manual recommends a direct connection without a router. Forum posts report failures to reconnect over a direct link
- Shared-SPI history — the W5500 and SD card share SPI1, and there was a hang issue, which is now confirmed fixed
- Conflicting product page text — the body and the FAQ disagree on AltMill compatibility
- Out of stock and a successor — the board is out of stock, and a review mentions it was "replaced by a completely redesigned SLB." The successor's design is unverified
→ Forum "SLB Ethernet connection issues": https://forum.sienci.com/t/12071
Improvements
- Ethernet firmware updates — a bootloader with network update support would remove the need for USB entirely. The W5500 makes such a bootloader easy to add in either MACRAW or TOE mode [Inferred]
- Separate SPI — the STM32F412 has five SPIs, so giving the W5500 its own bus would eliminate any chance of contention with the SD card [Inferred]
- Integrated chips — to shrink the board further, options such as the W55RP20, which combines an MCU and the W5500 in one package, are available. grblHAL already has an RP2040-family driver [Inferred]
FAQ
Q1. Can I update the firmware over Ethernet? No. According to Sienci's manual, initial setup and firmware updates require USB-C. Ethernet is for communication during jobs.
Q2. Can I go through a router or switch? It works. However, the manual recommends a direct connection to the PC with static IPs (SLB default 192.168.5.1, PC in the same subnet). The required bandwidth is small, at 1–2 Mbps.
Q3. Why is Ethernet more stable than USB? The SLB's USB has a common-mode choke and ESD protection, but the PC and controller grounds are still tied together. With Ethernet, the transformer inside the RJ45 jack separates the two sides with 1500Vrms isolation.
Q4. Does the W5500 handle TCP?
Not on the SLB. The W5500 passes raw Ethernet frames in MACRAW mode, and lwIP on the STM32 handles TCP/IP. You can confirm this in enet.c in the grblHAL networking plugin.
Q5. How do the SLB and SLB-EXT differ? The SLB is a LongMill controller with four motor drivers on board, while the SLB-EXT is an AltMill controller with no drivers that controls external closed-loop steppers. Both have the same USB-C and Ethernet setup. We cover the SLB-EXT in a separate article.
요약
SuperLongBoard(SLB) 는 캐나다 Sienci Labs 가 데스크톱 CNC 라우터 LongMill 용으로 만든 $165 짜리 32비트 grblHAL 컨트롤러입니다. 구형 보드가 작업장 전기 잡음(EMI) 때문에 작업 도중 끊기던 문제를 풀려고, USB-C 와 함께 WIZnet W5500 Ethernet 포트를 보드에 직접 넣었습니다. 코드를 따라가 보면 W5500 은 하드웨어 TCP/IP(TOE)가 아니라 MACRAW 모드로 쓰이고, TCP/IP 는 STM32F412 위의 lwIP 가 처리합니다. CNC 컨트롤러가 W5500 을 "칩 안의 TCP 엔진"이 아니라 "SPI 로 붙는 Ethernet MAC+PHY" 로 고른 사례라는 점에서 주목할 만합니다.
개요
Sienci Labs 는 캐나다 온타리오주 워털루의 CNC 제조사입니다. 약 10년 동안 CNC 기계 약 15,000대를 만들었고, 무료 G-code 송신 프로그램 gSender 사용자는 6만 명 이상이라고 밝힙니다. 주력 제품은 조립식 데스크톱 라우터 LongMill 과 대형 라우터 AltMill 입니다.
SLB 는 LongMill 의 두뇌를 바꾼 제품입니다. 2023-04 에 처음 공개됐고, 2023-12 에 사전주문을 받아 2024-04 첫 물량 500대가 출하됐습니다. Sienci 는 개발에 1.5년 이상, R&D 비용 $200k 이상이 들었다고 밝혔습니다. 하드웨어는 CERN-OHL-S v2 로 회로도까지 공개됐고, 설계는 grblHAL 보드 FlexiHAL 을 만든 Expatria Technologies 와 함께 했습니다.
→ Sienci 소개: https://sienci.com/about/
→ SLB Welcome(개발 연표): https://resources.sienci.com/view/slb-welcome/
→ 제품 페이지: https://sienci.com/product/slb/
도입 배경: 왜 필요한가
판매 실적 — 확인됨
- 첫 출하분 500대(2024-04, 펌웨어 5.0.3), Welcome 페이지 작성 시점까지 약 700대 판매
- LongMill MK2.5 에 기본 탑재됩니다
- 개인 DIY 가 아니라 제조사가 자기 기계에 넣어 파는 상용 컨트롤러입니다
→ sienciHAL 펌웨어 변경 이력: https://github.com/Sienci-Labs/sienciHAL
개발 동기 — EMI 로 인한 연결 끊김
Sienci 는 구형 LongBoard(Arduino 기반)가 EMI 때문에 작업 도중 연결이 끊기고 설정이 손상되는 문제를 겪었다고 밝히며, 이것을 SLB 개발 동기로 꼽습니다. CNC 라우터는 트리머나 스핀들 모터, 집진기, 스테퍼 모터가 한꺼번에 돌아 전기 잡음이 심한 환경입니다. 그 속에서 PC 와 컨트롤러를 잇는 USB 선이 약한 고리가 됩니다.
실사용자 증언도 같은 방향입니다. SLB 제품 리뷰 가운데 하나는 이렇게 적었습니다.
"Fixed my static issues, but only after switching to the ethernet jack."
→ SLB 제품 리뷰: https://sienci.com/product/slb/
산업 트렌드 통찰
grblHAL 을 쓰는 상용 CNC 보드들이 잇달아 유선 Ethernet 을 내장하거나 옵션으로 제공하고 있습니다.
- Expatria FlexiHAL 2350 — RP2350 grblHAL 보드. W5500 으로 Ethernet 연결
- Ooznest — ESP32-S3 grblHAL 보드에 W5500 채택
- Sienci SLB — W5500 을 보드에 직접 실장
세 회사 모두 취미·소규모 CNC 시장의 컨트롤러 제조사입니다. 산업용 컨트롤러에서는 당연하던 유선 연결이 취미용 CNC 보드로 내려오는 흐름으로 볼 수 있습니다 [추정].
→ FlexiHAL 2350 (WIZnet Makers): https://maker.wiznet.io/scott/resellers/flexihal-2350-cnc-controller/
제품 구성
| 항목 | 내용 |
|---|---|
| MCU | STM32F412VGT6 (Cortex-M4, 100MHz, Flash 1MB, SRAM 256KB) |
| Ethernet | WIZnet W5500 보드 실장(U11, 전용 25MHz 크리스털), HanRun HR911105A RJ45 |
| USB | USB-C (초기 설정·펌웨어 업데이트 필수) |
| 모터 드라이버 | TMC2660C × 4 (X, Y1, Y2, Z), 4번째 회전축(A)은 외부 드라이버 출력 |
| 기타 I/O | RS485(Modbus VFD), 스핀들·레이저 PWM, 툴 길이 센서, 터치 프로브, E-stop, 매크로 버튼 3개, microSD, CANBUS 잭, RGB 상태등 |
| 전원 | DC 24V (제품 페이지는 12.5A, 매뉴얼과 보드 실크는 10A 로 표기. 어댑터 별매) |
| 펌웨어 | grblHAL (Sienci 포크 sienciHAL. 2024-03 부터 grblHAL 본가에도 SLB 보드 정의가 있음) |
| 라이선스 | 하드웨어 CERN-OHL-S v2 |
| 가격 | $165 (현재 품절) |
SLB 의 회로도는 공개돼 있어서 W5500 이 어떻게 붙었는지 직접 볼 수 있습니다. Ethernet_Interface 시트(B6.1, 2024-01-30)에는 W5500(U11)과 25MHz 크리스털, 자석 내장 RJ45 잭 HR911105A, 그리고 MCU 쪽으로 가는 SPI_CS_JOG_SW·W5500_INTn·W5500_RSTn 신호가 그려져 있습니다.
형제 모델 SLB-EXT
SLB-EXT Closed-Loop Controller($175)는 대형 라우터 AltMill 용 형제 보드입니다. 보드에 모터 드라이버가 없고 폐루프 스테퍼 같은 외부 드라이버를 제어합니다. USB-C 와 Ethernet 을 함께 제공하는 구성은 SLB 와 같습니다. SLB-EXT 는 별도 글에서 자세히 다룹니다.
→ SLB-EXT 제품 페이지: https://sienci.com/product/slb-ext-closed-loop-controller/
아키텍처
PC 에서 gSender 가 G-code 한 줄을 Ethernet 으로 보낼 때 흐름은 다음과 같습니다.
- gSender 가 SLB 의 기본 주소 192.168.5.1 로 TCP 연결을 열고 G-code 를 보냅니다
- 이더넷 프레임이 RJ45 → HR911105A(절연 트랜스포머) → W5500 으로 들어옵니다. W5500 은 프레임을 칩 안의 버퍼에 담고 IRQ(PA10) 로 STM32 에 알립니다
- STM32 가 SPI1 로 프레임을 통째로 읽어 lwIP 에 넘깁니다. ARP·IP·TCP 처리와 ACK 응답은 lwIP 가 합니다
- lwIP 가 꺼낸 G-code 문자열이 grblHAL 의 입력 스트림으로 들어가 모션 플래너 → 스텝 생성 → TMC2660C 로 이어집니다
- 상태 보고 같은 응답은 반대 방향으로, lwIP 가 만든 프레임을 STM32 가 W5500 에 써서 내보냅니다
Sienci 매뉴얼은 공유기를 거치지 말고 PC 와 직결하고, PC 쪽에도 같은 대역의 고정 IP(예: 192.168.5.5)를 주라고 안내합니다. 필요한 대역폭은 1~2Mbps 수준입니다.
→ SLB 기술 매뉴얼: https://resources.sienci.com/view/slb-manual/
기술 배경
grblHAL — 하나의 모션 코어, 여러 보드
grblHAL 은 Arduino 용 CNC 펌웨어 grbl 1.1 을 32비트 MCU 용으로 다시 쓴 프로젝트입니다. 핵심은 하드웨어 추상화 계층(HAL) 입니다. G-code 해석과 모션 플래닝을 담은 core 는 어떤 MCU 코드와도 섞이지 않고, MCU 별 driver 가 GPIO·타이머·통신을 함수 포인터로 core 에 알려 줍니다. SD 카드, Trinamic 드라이버, 네트워킹 같은 기능은 plugin 으로 붙습니다.
- core 의 버그 수정은 모든 보드에 바로 반영됩니다
- 보드 제조사는 보드 정의(board map) 파일 하나로 자기 보드를 추가할 수 있습니다
SLB 는 이 구조를 그대로 탔습니다. STM32F4xx driver 에 longboard32_map.h 라는 보드 정의가 있고, Ethernet 은 networking plugin 이 맡습니다. 보드 차이가 보드 정의 파일 하나에 모이는 구조라, Sienci 가 자체 포크를 접고 본가로 돌아가려는 계획도 가능했던 것으로 보입니다 [추정].
→ grblHAL core 위키: https://github.com/grblHAL/core/wiki
CNC 작업장의 EMI 와 Ethernet 절연
USB 는 PC 와 컨트롤러의 접지(GND)를 선 하나로 직접 잇습니다. 일반적으로 스핀들이나 스테퍼가 도는 순간 두 기기의 접지 전위가 흔들리면, 그 차이가 공통 모드 잡음이 되어 신호선에 실리고 USB 장치가 순간적으로 끊기는 원인이 될 수 있습니다 [추정]. SLB 의 USB 회로에도 공통 모드 초크와 ESD 보호 소자가 있지만(회로도 USB_Connector 시트), 갈바닉 절연기는 없어 접지는 직결됩니다.
Ethernet 은 구조가 다릅니다. RJ45 잭 안의 절연 트랜스포머가 케이블 쪽과 칩 쪽을 전기적으로 떼어 놓습니다. SLB 가 쓰는 HR911105A 는 데이터시트에 다음 값을 적고 있습니다.
- 절연 1500Vrms (0.5mA, 60초, 케이블 쪽 ↔ 칩 쪽)
- 공통 모드 제거 −30dB 이상 (1~50MHz)
즉 SLB 에서 Ethernet 을 고르면 PC 와 컨트롤러 사이의 직접 접지 연결이 사라집니다. Sienci 매뉴얼은 "PC 를 멀리 두거나 끊김이 생기면 Ethernet 을 쓰라"고 안내하는데, 이 절연 구조가 그 배경으로 보입니다 [추정]. 다만 SLB 는 USB 쪽에도 차폐와 페라이트를 넣어 두었다고 밝히므로, Ethernet 은 유일한 해법이 아니라 더 확실한 대안입니다.
→ HR911105A 데이터시트: https://core-electronics.com.au/attachments/localcontent/cc11be56d66bb63d5f1eeb85492439c0_335950a6d06.pdf
기술 특징
- EMI 대책을 기본값으로 — USB·Ethernet 모두 차폐와 페라이트를 넣었다고 밝히며, Ethernet 을 "통신 대안"으로 명시합니다
- 통신 경로 분리 — 일상 작업은 Ethernet, 초기 설정과 펌웨어 업데이트는 USB-C 입니다. Ethernet 으로는 펌웨어를 올릴 수 없습니다
- 직결·고정 IP 기본값 — 기본 IP
192.168.5.1, 넷마스크255.255.255.0, static 모드입니다. 표준 grblHAL 빌드의 기본값은 DHCP 입니다. Sienci 의 static 기본값은 매뉴얼의 직결 권장과 짝을 이룹니다 [추정] - 네트워크 서비스 묶음 — SLB 출하 펌웨어는 grblHAL networking plugin 의 Telnet(송신 프로그램 연결), WebSocket(WebUI), FTP(작업 파일 전송)를 켭니다(sienciHAL
platformio.ini71–73행). 플러그인 자체는 HTTP·mDNS·SSDP 등도 지원합니다 - 포크에서 본가로 — Sienci 는 2023-02 에 grblHAL 을 포크(sienciHAL)해 SLB 를 개발했고, 2024-03-19 부터 grblHAL 본가에 SLB 보드 정의가 들어가 있습니다. Sienci 는 변경 사항을 본가에 다시 합치겠다고 밝혔고, sienciHAL 은 지금 일부러 개발을 멈춘 상태입니다. 병합이 모두 끝났는지는 확인되지 않았습니다
→ grblHAL core #731 (static 과 DHCP 기본값): https://github.com/grblHAL/core/issues/731
W5500 이 이 보드에서 하는 일
TOE 사용: 아니오 — MACRAW + lwIP
SLB 의 W5500 은 하드웨어 TCP/IP(TOE)로 쓰이지 않습니다. W5500 의 소켓 0 하나를 MACRAW 모드로 열어 이더넷 프레임만 주고받고, TCP/IP 는 STM32 위의 lwIP 가 처리합니다. 근거는 코드에 그대로 있습니다.
| 근거 | 위치 | 내용 |
|---|---|---|
| lwIP 연결 코드 | grblHAL Plugin_networking wiznet/enet.c 2행 |
"lwIP driver glue code for WizNet breakout boards" |
| MACRAW 소켓 열기 | 같은 파일 461행 (master) | socket(SOCKET_MACRAW, Sn_MR_MACRAW, …) |
| 프레임 전달 | wiznet/port/w5x00_lwip.c |
recv_lwip() / send_lwip() 로 프레임을 받아 lwIP netif 로 넘김 |
| 버퍼 배분 | sienciHAL Src/w5x00_ll_driver.c 133행 |
소켓 0 에 TX 8KB · RX 8KB 를 주고 나머지 소켓은 0KB (W5500 의 32KB 중 16KB 사용) |
| 관리자 발언 | grblHAL core #830 (SLB-EXT 이슈) | Terje Io: "I reduced the MEM_SIZE … it is allocated for the lwIP stack" |
| 보드 정의 | grblHAL STM32F4xx boards/longboard32_map.h 30–31행 |
Ethernet 을 켜면 _WIZCHIP_=5500 이 아니면 컴파일 오류 |
sienciHAL 의 빌드 설정(platformio.ini)도 -D _WIZCHIP_=5500 과 함께 lwip·networking/wiznet 을 포함합니다. WIZnet 의 socket.h 가 들어 있다고 TOE 인 것은 아닙니다. 여기서는 그 API 로 MACRAW 소켓 하나를 여는 데만 씁니다.
→ grblHAL Plugin_networking: https://github.com/grblHAL/Plugin_networking
→ grblHAL core #830: https://github.com/grblHAL/core/issues/830
W5500 과 STM32 의 분업
| 일 | 누가 |
|---|---|
| 물리 계층(PHY), 링크 협상, 이더넷 MAC | W5500 |
| 수신 프레임 버퍼링(RX 8KB), 도착 알림(IRQ) | W5500 |
| ARP·IP·TCP·재전송·ACK | STM32 의 lwIP |
| Telnet·WebSocket·FTP (SLB 출하 설정) | STM32 의 grblHAL networking plugin |
| G-code 해석·모션 플래닝·스텝 생성 | STM32 의 grblHAL core |
비유하자면 W5500 은 "번역가가 딸린 우편함"이 아니라 "튼튼한 우편함"입니다. 편지(프레임)를 비바람(전기 잡음)에서 지키고, 편지가 오면 벨(IRQ)을 울려 줍니다. 편지를 뜯어 읽고 답장을 쓰는 일(TCP/IP)은 집주인(STM32)이 직접 합니다. W5500 을 TOE 로 쓰는 제품(예: ZenoLAN0505 [추정] TOE)이 W5500 에 "창구 직원" 역할까지 맡기는 것과 대조됩니다.
→ ZenoLAN0505 (WIZnet Makers): https://maker.wiznet.io/scott/resellers/ip-ethernet-wifi-zenolan0505/
왜 TOE 를 쓰지 않았나 [추정]
grblHAL 이 MACRAW 를 고른 이유를 밝힌 공식 문서는 찾지 못했습니다. 코드 구조로 보면 이유는 두 가지로 추정됩니다.
- 소켓 수 — networking plugin 은 Telnet·WebSocket·FTP(제어·데이터)·HTTP·mDNS·SSDP·MQTT 를 동시에 띄울 수 있습니다. 여기에 여러 클라이언트까지 붙으면 W5500 의 하드웨어 소켓 8개로는 모자랄 수 있습니다
- 코드 공유 — grblHAL 에는 STM32F407 처럼 Ethernet MAC 이 내장된 MCU 용 lwIP 경로(
enet.c)가 이미 있습니다. W5500 도 lwIP 아래에 두면 위쪽 서비스 코드를 그대로 쓸 수 있습니다
→ W5500 공식 문서(소켓 8개, 버퍼 32KB): https://docs.wiznet.io/Product/Chip/Ethernet/W5500
그렇다면 왜 W5500 인가
SLB 의 MCU STM32F412 에는 Ethernet MAC 이 없습니다. ST 제품 페이지의 주변장치 목록에 Ethernet 이 없고, 같은 F4 계열의 STM32F407 은 "10/100 Ethernet MAC" 을 명시합니다. 따라서 SLB 가 Ethernet 을 쓰려면 MAC 과 PHY 를 모두 외부에서 가져와야 합니다.
W5500 은 MAC + PHY + 32KB 버퍼를 한 칩에 담고 SPI 네 가닥으로 붙습니다. MACRAW 로 쓰더라도 이 장점은 그대로입니다. 여기에 두 번째 이유가 더해집니다. W5500 은 grblHAL 본가가 이미 지원하는 칩이어서, 보드 정의에 _WIZCHIP_=5500 한 줄과 핀 번호만 넣으면 networking plugin 전체를 쓸 수 있습니다.
→ STM32F412VG 제품 페이지: https://www.st.com/en/microcontrollers-microprocessors/stm32f412vg.html
→ STM32F407VG 제품 페이지: https://www.st.com/en/microcontrollers-microprocessors/stm32f407vg.html
MACRAW 의 대가
- RAM — lwIP 에
MEM_SIZE 16K를 떼어 줘야 합니다(wiznet/lwipopts.h). 256KB SRAM 인 F412 에는 감당할 만한 크기입니다 - SPI 공유 — SLB 에서 W5500 은 SD 카드와 SPI1 을 함께 씁니다(sienciHAL
Inc/longboard32_map.h373–389행). 2025-01 grblHAL STM32F4xx #208 "네트워크를 쓰면 보드가 멈춤" 이슈에서 Terje Io 는 SPI 를 공유하는 조건으로 장시간 테스트했지만 재현하지 못했습니다. Expatria 쪽 참여자는 W5500 IRQ 가 연달아 오면 두 번째를 놓칠 수 있다고 지적했고, Terje 는enet.c가 이미 리팩터링돼 그 수정이 필요 없을 것이라고 답했습니다. 신고자는 2025-01-17 새 펌웨어에서 해결됐다고 확인했습니다
→ grblHAL STM32F4xx #208: https://github.com/grblHAL/STM32F4xx/issues/208
WIZnet Makers 유사 사례
- FlexiHAL 2350 CNC Controller — SLB 설계 협업사 Expatria 의 grblHAL 보드로, RP2350 PIO 로 스텝을 만들고 W5500 으로 네트워크를 연결합니다. grblHAL 의 RP2040/RP2350 드라이버는 Ethernet 을 켜면 SLB 와 같은
networking/wiznet코드와pico_lwip을 함께 넣고(CMakeLists.txt139–151행), FlexiHAL 2350 보드 정의도 WIZnet CS 핀을 잡습니다(boards/flexihal2350_map.h201–204행). 즉 FlexiHAL 2350 도 MACRAW + lwIP 입니다
→ 프로젝트 링크: https://maker.wiznet.io/scott/resellers/flexihal-2350-cnc-controller/
→ grblHAL RP2040 빌드 설정: https://github.com/grblHAL/RP2040/blob/master/CMakeLists.txt - Why Did CNC Vendor Ooznest Choose W5500 Ethernet for Its grblHAL ESP32-S3 Board? — 영국 CNC 업체 Ooznest 의 ESP32-S3 grblHAL 보드입니다. W5500 을 ESP-IDF
esp_eth드라이버로 붙이고 TCP 는 lwIP 가 맡습니다. MCU 와 드라이버 경로는 달라도 결론(W5500 = MAC+PHY, TCP = lwIP)은 SLB 와 같습니다
→ 프로젝트 링크: https://maker.wiznet.io/Benjamin/projects/why-did-cnc-vendor-ooznest-choose-w5500-ethernet-for-its-grblhal-esp32-s3-board/ - STM32F4xx grblHAL driver — SLB 보드 정의가 들어 있는 바로 그 드라이버 계열을 다룬 글입니다. 드라이버 전체의 두 가지 네트워크 경로(내장 MAC + lwIP, W5500)를 설명합니다. 이번 글은 그중 W5500 경로가 실제로 MACRAW 라는 점을 코드로 확인했습니다
→ 프로젝트 링크: https://maker.wiznet.io/matthew/projects/stm32f4xx-grblhal-driver/
세 사례와 SLB 는 모두 grblHAL 계열 CNC 컨트롤러가 W5500 으로 유선 네트워크를 얻는 구조입니다. MCU 가 STM32 든 RP2350 이든 ESP32-S3 든, grblHAL 쪽에서는 W5500 을 lwIP 아래의 MAC+PHY 로 쓰는 쪽으로 모입니다.
| 항목 | SuperLongBoard | FlexiHAL 2350 | Ooznest ESP32-S3 | STM32F4xx driver |
|---|---|---|---|---|
| 구분 | 상용(캐나다) | 상용(캐나다, Expatria) | 상용(영국) | 오픈소스 드라이버 |
| MCU | STM32F412 | RP2350 | ESP32-S3 | STM32F4 계열 |
| W5500 연결 | 보드 실장, SPI1 | W5500 | W5500, SPI | 보드별 선택 |
| TCP/IP | lwIP (MACRAW) | lwIP (MACRAW) | lwIP (esp_eth) | 내장 MAC: lwIP / W5500: lwIP (MACRAW) |
| 모터 드라이버 | TMC2660C × 4 내장 | 미상 | 미상 | 보드별 |
| 가격 | $165 | 미상 | 미상 | 무료(오픈소스) |
공통 설계 철학은 "모션은 MCU, 연결은 W5500, 프로토콜은 lwIP" 입니다. SLB 의 차별점은 이 구조를 $165 완제품에 모터 드라이버 4개까지 넣어 자사 기계의 기본 컨트롤러로 판다는 데 있습니다.
비즈니스 가치
외부 관점 — 고객·시장
- 작업 중 끊김 해소 — 몇 시간짜리 조각 작업이 USB 끊김으로 중단되면 재료와 시간이 함께 버려집니다. Ethernet 은 절연 트랜스포머로 PC 와 컨트롤러의 직접 접지 연결을 없애 이 위험을 줄입니다
- PC 와 기계의 거리 — 먼지와 소음이 나는 작업장 안쪽에 기계를, 바깥쪽에 PC 를 둘 수 있습니다
- 파일 전송과 원격 조작 — FTP 로 작업 파일을 SD 에 올리고, WebUI 로 브라우저에서 기계를 다룰 수 있습니다
- 오픈 하드웨어 — 회로도가 공개돼 있어 사용자와 다른 제조사가 설계를 참고할 수 있습니다
내부 관점 — WIZnet
- grblHAL 본가에 W5500 이 기본으로 들어갔다 — 본가의 SLB 보드 정의는 Ethernet 을 켜면 W5500 을 요구합니다. Sienci 가 포크를 접고 본가 펌웨어로 옮겨 가면, 본가 펌웨어로 SLB 를 쓰는 사용자는 모두 이 경로를 쓰게 됩니다
- TOE 가 아니어도 W5500 이 선택된다 — MCU 에 Ethernet MAC 이 없을 때 W5500 은 "SPI 한 줄로 얻는 MAC+PHY" 로도 경쟁력이 있습니다. 하드웨어 TCP/IP 를 쓰지 않는 설계에서도 W5500 이 기본 선택지라는 뜻입니다
- CNC 컨트롤러 시장의 반복 채택 — Sienci, Expatria, Ooznest 까지 grblHAL 계열 상용 보드들이 W5500 을 고르고 있습니다. 한 회사가 아니라 같은 펌웨어 생태계 안에서 퍼지는 채택이라는 점에서 수요가 이어질 가능성이 큽니다 [추정]
한계 및 개선 방향
SLB 는 제조사가 EMI 문제를 정면으로 풀고, 그 결과를 오픈 하드웨어로 공개하고 grblHAL 본가로 되돌리려는 드문 사례입니다. 아래는 비판이 아니라 다음 세대로 갈 개선 기회입니다.
현재 한계
- 펌웨어 업데이트는 USB 로만 — Ethernet 으로는 펌웨어를 올릴 수 없어, 결국 USB 연결이 한 번은 필요합니다
- 직결 권장 — 매뉴얼은 공유기 없이 직결하라고 권합니다. 포럼에는 직결 상태에서 재연결이 안 된다는 보고가 있습니다
- SPI 공유 이력 — W5500 과 SD 카드가 SPI1 을 공유해 멈춤 이슈가 있었고, 지금은 해결된 것으로 확인됩니다
- 제품 페이지 표기 모순 — AltMill 호환 여부가 본문과 FAQ 에서 다르게 적혀 있습니다
- 품절과 후속 제품 — 현재 품절이고, 리뷰에는 "완전히 재설계된 SLB 로 대체됐다"는 언급이 있습니다. 후속 제품의 구성은 확인 불가입니다
→ 포럼 "SLB Ethernet connection issues": https://forum.sienci.com/t/12071
개선 방향
- Ethernet 펌웨어 업데이트 — 부트로더가 네트워크 업데이트를 지원하면 USB 를 완전히 뺄 수 있습니다. W5500 은 MACRAW·TOE 어느 쪽이든 이런 부트로더를 붙이기 쉬운 칩입니다 [추정]
- SPI 분리 — STM32F412 는 SPI 가 다섯 개라, W5500 에 SPI 버스를 따로 주면 SD 카드와의 충돌 여지가 사라집니다 [추정]
- 일체형 칩 검토 — 보드를 더 줄이려면 MCU 와 W5500 을 한 패키지에 담은 W55RP20 같은 선택지도 있습니다. grblHAL 은 이미 RP2040 계열 드라이버를 갖고 있습니다 [추정]
FAQ
Q1. Ethernet 으로 펌웨어도 업데이트할 수 있나요? 아니요. Sienci 매뉴얼에 따르면 초기 설정과 펌웨어 업데이트에는 USB-C 가 필요합니다. Ethernet 은 작업 중 통신용입니다.
Q2. 공유기나 스위치를 거쳐도 되나요? 연결은 됩니다. 다만 매뉴얼은 PC 와 직결하고 고정 IP(SLB 기본 192.168.5.1, PC 는 같은 대역)를 쓰라고 권합니다. 필요한 대역폭은 1~2Mbps 로 작습니다.
Q3. 왜 USB 보다 Ethernet 이 안정적인가요? SLB 의 USB 에도 공통 모드 초크와 ESD 보호가 있지만 PC 와 컨트롤러의 접지는 직결됩니다. Ethernet 은 RJ45 잭 안의 트랜스포머가 1500Vrms 절연으로 양쪽을 떼어 놓습니다.
Q4. W5500 이 TCP 를 처리하나요?
SLB 에서는 아닙니다. W5500 은 MACRAW 모드로 이더넷 프레임만 주고받고, TCP/IP 는 STM32 위의 lwIP 가 처리합니다. grblHAL networking plugin 의 enet.c 에서 확인할 수 있습니다.
Q5. SLB 와 SLB-EXT 는 무엇이 다른가요? SLB 는 모터 드라이버 4개를 보드에 내장한 LongMill 용 컨트롤러이고, SLB-EXT 는 드라이버 없이 외부 폐루프 스테퍼를 제어하는 AltMill 용 컨트롤러입니다. USB-C 와 Ethernet 구성은 같습니다. SLB-EXT 는 별도 글에서 다룹니다.

