This comprehensive guide documents all the differences between Smoothieboard V2 and V1, including hardware specifications, firmware architecture, configuration changes, and migration considerations.
| Feature | V1 (LPC1769) | V2 (STM32H745) | Improvement |
|---|---|---|---|
| CPU Clock | 120 MHz | 480 MHz | 4x faster |
| Flash | 512 KB | 2 MB | 4x more |
| RAM | 64 KB | 1 MB | 16x more |
| Step Rate | 100 kHz | 200 kHz | 2x faster |
| Microstepping | 1/32 | 1/256 | 8x finer |
| SD Card Speed | 0.4-0.5 MB/s | 10-25 MB/s | 20-50x faster |
| Stepper Drivers | A5984 (basic) | TMC2660/2590 (SpreadCycle) | SPI-configurable drivers |
| Expansion GPIO | Limited | 90 pins (Gadgeteer) | Extensive |
| Price | $100-150 | $230 | Higher |
| Specification | Value |
|---|---|
| Core | ARM Cortex-M3 |
| Clock | 100-120 MHz |
| Flash | 512 KB |
| RAM | 64 KB (32 KB local + 32 KB AHB SRAM) |
| FPU | None (software emulation) |
| Cache | None |
| Specification | Value |
|---|---|
| Core | Dual-core: Cortex-M7 (480MHz) + Cortex-M4 (240MHz) |
| Flash | 2 MB |
| RAM | 1 MB total (DTCM: 128KB, ITCM: 128KB, AXI SRAM: 512KB, SRAM1-4: 352KB) |
| FPU | Double-precision (M7), single-precision (M4) |
| Cache | 16KB I-cache + 16KB D-cache |
| Package | 265-pin BGA |
V2 Prime (In Production):
V2 Mini (Development Postponed):
V2 Pro (Cancelled):
| Dimension | V1 | V2 |
|---|---|---|
| Length | 129 mm | ~140-150 mm |
| Width | 105 mm | ~120-130 mm |
| Mounting | 4 corner M3 holes | 4 corner M3 holes |
This comparison covers the P11 Prime2660 and P12 Prime2590 designs, whose driver schematics specify TMC2660 and TMC2590 respectively. Both chips provide SpreadCycle, StallGuard2 and CoolStep, but neither provides StealthChop2 or StallGuard4. See the revision-qualified Prime specifications and firmware notes and the manufacturer documentation for TMC2660 and TMC2590. These capabilities should not be generalized to other V2 revisions or external drivers.
| Feature | V1 (A5984) | V2 (TMC2660/2590) |
|---|---|---|
| Count | 3-5x | 4x |
| Max Current | 2A | 2.8A (2660) / 5.0A (2590) |
| Microstepping | Up to 1/32 | Up to 1/256 |
| Silent Mode | No | No StealthChop2; SpreadCycle current control |
| Sensorless Homing | No | StallGuard2 load detection; homing requires firmware configuration, tuning and validation |
| Dynamic Current | No | CoolStep capability; disabled by default in the reviewed firmware drivers |
| Interface | Digital pot (I2C) | SPI configuration |
| Specification | TMC2660 | TMC2590 |
|---|---|---|
| Ideal Current | 1.2-2.2A | 2.5-4.6A |
| Best For | 3D printers (NEMA 17) | CNC (NEMA 23/24) |
| Thermal | Lower heat, passive cooling OK | Higher heat, may need fan |
| Board ID | 1 | 0 |
V1 Motor Configuration:
alpha_steps_per_mm 100
alpha_step_pin 2.0
alpha_dir_pin 0.5
alpha_en_pin 0.4
alpha_current 1.5
alpha_max_rate 30000.0
V2 Motor Configuration:
[actuator]
alpha.steps_per_mm = 100
alpha.step_pin = PG0
alpha.dir_pin = PG1
alpha.en_pin = PJ2
alpha.max_rate = 30000
alpha.microsteps = 32
alpha.driver = tmc2660
[tmc2660]
alpha.current = 1500 # mA (not A like v1)
alpha.step_interpolation = false
Key changes:
| Input | V1 | V2 |
|---|---|---|
| Motor Power | Single input, 12-24V | Vmot via XT30, 12-24V |
| MOSFET Power | Shared with motor | VFET via 2x XT30, 12-24V (30A total) |
| Logic 5V | Regulator or USB | 3 sources with ideal diode OR |
| 5V Regulator | Optional (solder on) | Onboard 3A |
V2 5V Power Sources (automatic selection):
| Output | V1 | V2 |
|---|---|---|
| Low-current FETs | 3x ~5A | 4x ~5A (hotend1, hotend2, fan1, fan2) |
| Bed FET | 3x ~12A | 2x parallel ~10-12A |
| Safety | None | High-side PFET watchdog on 4 low-current FETs |
| SSR Outputs | None | 2x logic-level outputs |
| Feature | V1 | V2 |
|---|---|---|
| ADC Resolution | 12-bit | 16-bit (oversampled) |
| Buffered Inputs | Basic | 3x with ESD protection + op-amp buffer |
| Unbuffered | - | 6x on Gadgeteer headers |
| Board Thermistor | No | Yes (PCB temperature monitoring) |
| Voltage Monitoring | No | Yes (Vmot, Vfet, Vbat via ADC3) |
| Feature | V1 | V2 |
|---|---|---|
| Count | 6 (X/Y/Z min/max) | 6 (X/Y/Z min/max) |
| Protection | Basic | Buffered + ESD protected |
| Current Limiting | No | Yes (3.3V and 5V outputs) |
| Feature | V1 | V2 |
|---|---|---|
| Input Type | Basic | Comparator-based |
| Voltage Range | ~5V | 3-45V (configurable via JP7) |
| Protection | Basic | ESD + buffering + comparator |
V2 introduces 9 standardized Gadgeteer headers (GA through GI):
| Per Header | Value |
|---|---|
| Pins | 10 |
| GPIO | 7 |
| Power | 5V + 3.3V + GND |
| Total GPIO | 63 pins |
Power Budget:
Use Cases:
| Feature | V1 | V2 |
|---|---|---|
| Interface | SPI | SDIO |
| Speed | 0.4-0.5 MB/s | 10-25 MB/s |
| Max Capacity | 32 GB SDHC | 32 GB SDHC |
| Feature | V1 | V2 |
|---|---|---|
| Ports | 1 (Device) | 2 (Device + Host) |
| Speed | 12 Mbps (Full Speed) | 12 Mbps (Full Speed) |
| Functions | CDC/ACM + MSC | CDC/ACM + MSC (MTP planned) |
| Host Support | No | Hardware present, firmware WIP |
| Feature | V1 | V2 |
|---|---|---|
| Speed | 10/100 Mbps | 10/100 Mbps |
| Stack | uIP (lightweight) | FreeRTOS+TCP (full-featured) |
| Throughput | ~1 Mbps | ~10 Mbps |
V2 Network Services:
| Feature | V1 | V2 |
|---|---|---|
| Architecture | Bare-metal superloop | FreeRTOS multitasking |
| Concurrency | Single-threaded | Multi-threaded with task scheduling |
| Event System | Global event bus | Direct module communication |
| Step Ticker | 100 kHz | 200 kHz (50 kHz in debug) |
RTOS Benefits:
V1: Event-based with broadcast model
class Module {
virtual void on_main_loop(void *);
virtual void on_gcode_received(void *);
// ~9 events total
};
V2: Configuration-based with direct communication
class Module {
Module(const char* group, const char* instance);
virtual bool configure(ConfigReader& cr);
virtual bool request(const char *key, void *value);
static Module* lookup(const char *group, const char *instance);
};
V1: Custom checksum-based key-value (flat file)
alpha_steps_per_mm 100
beta_steps_per_mm 100
default_feed_rate 4000
V2: Standard INI with sections
[motion control]
default_feed_rate = 4000
default_acceleration = 1000.0
[actuator]
alpha.steps_per_mm = 100
alpha.max_rate = 30000
| Setting | |
|---|---|
| Steps/mm | |
| Max rate | |
| Acceleration | |
| Junction deviation | |
| Step pin | |
| Motor current | |
| Heater enable | |
| PID P |
[general]
[system]
[motion control]
[planner]
[actuator]
[tmc2660] or [tmc2590]
[current control]
[endstops]
[zprobe]
[temperature control]
[extruder]
[switch]
[voltage monitor]
[network]
V1 pins: Port.Pin format (e.g.,
V2 pins: PortPin format (e.g.,
Pin modifiers (same concept, both versions):
! - Invert^ - Pullupv - Pulldowno - Open-drain- - No pullExample:
| Module | Status | Notes |
|---|---|---|
| Endstops | Working | Enhanced with slaved axis |
| Extruder | Working | |
| Laser | Working | |
| Temperature Control | Working | PID control |
| Temperature Switch | Working | Fan control |
| ZProbe | Working | Bed leveling |
| Switch | Working | I/O control |
| Kill Button | Working | |
| Player | Working | G-code playback |
| Network | Complete Rewrite | Much more capable |
| Current Control | Enhanced | TMC SPI control |
| Filament Detector | Working | |
| Drilling Cycles | Working | Renamed drillcycles |
| Feature | Description |
|---|---|
| Display Drivers | ST7920, TM1638 support |
| Button Box | Individual input switches, macros, and FAULT inputs. Matrix scanning remains unimplemented in the checked source |
| Lathe Module | G33 threading and spindle synchronization |
| ELS | Electronic Leadscrew controls with a TM1638; upstream notes label parts work in progress |
| MPG | Direct per-axis control or one shared hand wheel selected with M922 |
| Configurable Prime Drivers | SpreadCycle current control and StallGuard2 load detection; no StealthChop2 |
| OTA Updates | Network firmware updates |
| Slaved Axes | Software-parallel internal TMC motors and independent G28.7 alignment |
| Auxiliary UART target | Send device messages with echo -1 |
| NIST G30/G30.1 | Stored machine position in GRBL mode |
ed and le |
Streaming file editor plus interactive line editing and session history |
| O-word Subroutines | Limited named subroutine definitions and calls |
| MAX7219 DRO | X/Y/Z/A/B/C positions on seven-segment displays |
| Feed Hold | Real-time ! hold and ~ cycle start; announced as work in progress |
G0 X10M105network.enable = true in configLast updated: November 2025