├── ReadMe.md └── drivers.json /ReadMe.md: -------------------------------------------------------------------------------- 1 | ## Driver capabilities at a glance: 2 | 3 | ### Networking capable: 4 | 5 | | Processor -> | [iMXRT1062](https://github.com/grblHAL/iMXRT1062) | [STM32F7xx](https://github.com/grblHAL/STM32F7xx) | [STM32H7xx](https://github.com/dresco/STM32H7xx) | [ESP32](https://github.com/grblHAL/ESP32) | [RP 2040](https://github.com/grblHAL/RP2040) | [RP 2040](https://github.com/grblHAL/RP2040) | [RP 2350](https://github.com/grblHAL/RP2040) | [RP 2350](https://github.com/grblHAL/RP2040) | [MSP432E401Y](https://github.com/grblHAL/MSP432E401Y) | [TMC129x](https://github.com/grblHAL/TM4C1294) | 6 | |---------------------------------------|---------------------------------------------------|---------------------------------------------------|--------------------------------------------------|-------------------------------------------|---------------------------------------------------|---------------------------------------------------|---------------------------------------------------|---------------------------------------------------|-------------------------------------------------------|------------------------------------------------| 7 | | Board | Teensy 4.x | Nucleo-F756ZG | Nucleo-H743ZI | | Pi Pico W | Pi Pico | Pi Pico2 W | Pi Pico2 | LaunchPad | LaunchPad | 8 | | MCU speed \(MHz\) | 600 | 216 | 450 | 2x240 | 125 | 125 | 150 | 150 | 120 | 120 | 9 | | Floating point unit \(FPU\) | yes | yes | yes | yes | no | no | yes | yes | yes | yes | 10 | | Non-volatile storage | Flash1 | Flash1 | Flash1 | Flash1 | Flash1 | Flash1 | Flash1 | Flash1 | EEPROM | EEPROM | 11 | | Number of axes | up to 5 | up to 8 | up to 8 | 3 | up to 6 | up to 6 | up to 6 | up to 6 | up to 6 | up to 6 | 12 | | Auto-squared/ganged axes17 | yes | yes | no | no | yes | yes | yes | yes | no | no | 13 | | Variable spindle | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | 14 | | Ramped spindle | no | no | no | yes | no | no | no | no | yes | yes | 15 | | Inverted spindle PWM | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | 16 | | RC Servo/ESC for spindle13 | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | 17 | | ModBus spindle14 | yes15 | no | no | yes | yes | yes | yes | yes | no | no | 18 | | Spindle at speed | yes | yes | yes | no | no | no | no | no | no | no | 19 | | Spindle sync | yes4 | yes | yes | no | no | no | no | no | no | no | 20 | | Closed loop spindle RPM | no | no | no | no | no | no | no | no | no | no | 21 | | Native USB streaming | yes | yes | yes | no | yes | yes | yes | yes | no | no | 22 | | Bluetooth streaming | no | no | no | yes | yes | yes | yes | yes | no | no | 23 | | Telnet streaming \(raw\) | ethernet | ethernet | ethernet | wifi | wifi/ethernet18 | ethernet18 | wifi/ethernet18 | ethernet18 | ethernet | ethernet | 24 | | Websocket streaming | ethernet | ethernet | ethernet | wifi | wifi/ethernet18 | ethernet18 | wifi/ethernet18 | ethernet18 | ethernet | ethernet | 25 | | HTTP daemon (server) | ethernet | ethernet | ethernet | wifi | wifi/ethernet18 | ethernet18 | wifi/ethernet18 | ethernet18 | ethernet | ethernet | 26 | | WebDAV to SD card | ethernet | ethernet | ethernet | wifi | wifi/ethernet18 | ethernet18 | wifi/ethernet18 | ethernet18 | ethernet | no (\?\) | 27 | | FTP to SD card | ethernet | ethernet | ethernet | wifi | wifi/ethernet18 | ethernet18 | wifi/ethernet18 | ethernet18 | ethernet | no (\?\) | 28 | | SD Card streaming | yes | yes | yes | yes | yes | yes | yes | yes | no | no | 29 | | I2C Keypad | yes | yes | yes | yes | yes | yes | yes | yes | no | no | 30 | | I2C IO Expander | no | no | no | yes | yes | yes | yes | yes | no | no | 31 | | Digital Aux I/O | 3/416 | yes | yes | no | 0/816 | 0/816 | 0/816 | 0/816 | no | no | 32 | | MPG stream input | TBC | no | no | yes | yes | yes | yes | yes | yes | yes | 33 | | Manual tool change5 | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | 34 | | Automatic tool change6 | no | no | no | no | no | no | no | no | no | no | 35 | | Laser PPI mode7 | yes | yes | yes | no | no | no | no | no | no | no | 36 | | Trinamic support8 | TBC9 | TBC9 | TBC9 | TBC9 | TBC9 | TBC9 | TBC9 | TBC9 | TBC9 | TBC9 | 37 | | Runs as FreeRTOS task | no | no | no | yes | no | no | no | no | option | no | 38 | | CNC BoosterPack support | yes10 | no | no | yes10 | yes10 | yes10 | yes10 | yes10 | 2 | 2 | 39 | | WebUI support | yes12 | yes12 | yes12 | yes12 | yes12 | yes12 | yes12 | yes12 | yes12 | no | 40 | | Compiler/IDE | Arduino | STMCubeIDE | STMCubeIDE | ESP IDF | VS Code | VS Code | VS Code | VS Code | CCS | CCS | 41 | | Web Builder support19 | yes | yes | yes | yes | yes | yes | yes | yes | no | no || Web Builder support19 | yes | yes | yes | yes | yes | yes | yes | yes | no | no | 42 | 43 | ### With floating point unit \(FPU\): 44 | 45 | grblHAL does a lot of floating point math, a FPU will improve performance. 46 | 47 | | Processor -> | [STM32F7xx](https://github.com/dresco/STM32H7xx) | [STM32F4xx](https://github.com/grblHAL/STM32F4xx) | [STM32F3xx](https://github.com/grblHAL/STM32F3xx) | [MSP432](https://github.com/grblHAL/MSP432P401R) | [TMC123](https://github.com/grblHAL/TM4C123) | 48 | |---------------------------------------|--------------------------------------------------|---------------------------------------------------|---------------------------------------------------|--------------------------------------------------|----------------------------------------------| 49 | | Board | BTT SKR3 / WeAct MiniSTM32H743 | Blackpill / Nucleo-F411RE / Nucleo-F446RE | BlackPill | LaunchPad | LaunchPad | 50 | | MCU speed \(MHz\) | 450 | 84/100/180 | 72 | 48 | 80 | 51 | | Non-volatile storage | Flash1 | Flash1 | Flash1 | Flash1 | EEPROM | 52 | | Number of axes | 3 | up to 6 | up to 6 | 3 | 3 | 53 | | Variable spindle | yes | yes | yes | yes | yes | 54 | | Ramped spindle | no | no | no | no | yes | 55 | | Inverted spindle PWM | no | no | no | yes | yes | 56 | | RC Servo/ESC for spindle13 | yes | yes | yes | yes | yes | 57 | | ModBus spindle14 | no | no | no | yes15 | no | 58 | | Spindle at speed | yes | yes | no | yes3 | no | 59 | | Spindle sync | yes4 | yes4 | no | yes4 | no | 60 | | Closed loop spindle RPM | no | no | no | no | no | 61 | | Native USB streaming | yes | yes | yes | no | no | 62 | | SD Card streaming | yes | yes | TBC | no | yes | 63 | | I2C Keypad | no | no | yes | yes | yes | 64 | | I2C IO Expander | no | no | no | no | no | 65 | | Digital Aux I/O | no | 2/216 | no | no | no | 66 | | MPG stream input | no | no | no | yes | yes | 67 | | Manual tool change5 | yes | yes | yes | yes | yes | 68 | | Automatic tool change6 | no | no | no | planned | no | 69 | | Laser PPI mode7 | yes | yes | no | no | yes | 70 | | Trinamic support8 | TBC9 | TBC9 | TBC9 | TBC9 | TBC9 | 71 | | CNC BoosterPack support | no | no | yes10 | 1 | 1 | 72 | | Compiler/IDE | STMCubeIDE | STMCubeIDE | STMCubeIDE | CCS | CCS | 73 | | Web Builder support19 | yes | yes | No | no | no | 74 | 75 | ### Without floating point unit \(FPU\): 76 | 77 | | Processor -> | [RP 2040](https://github.com/grblHAL/RP2040)4 | [STM32F1xx](https://github.com/grblHAL/STM32F1xx)11 | [SAM3X8E](https://github.com/grblHAL/SAM3X8E) | [SAMD21](https://github.com/grblHAL/SAMD21) | [LPC1768/1769](https://github.com/grblHAL/LPC176x) | [PSoC 5](https://github.com/grblHAL/PSoC5) | [MSP430F5529](https://github.com/grblHAL/MSP430F5529) | 78 | |---------------------------------------|---------------------------------------------------------------|----------------------------------------------------------------|-----------------------------------------------|---------------------------------------------|----------------------------------------------------|-------------------------------------------------|-------------------------------------------------------| 79 | | Board | Pi Pico | Bluepill | Due | MKRZERO | Re-Arm / Bigtreetech SKR 1.3 / BTT SKR 1.4 | CY8CKIT-059 | LaunchPad | 80 | | MCU speed (MHz) | 125 | 72 | 84 | 48 | 100/120 | 80 | 25 (16 bit) | 81 | | Non-volatile storage | Flash1 | Flash1 | Flash1 | Flash1 | Flash1 | EEPROM | no1 | 82 | | Number of axes | up to 6 | up to 6 | up to 6 | 3 | up to 5 | 32 | 3 | 83 | | Auto-squared/ganged axes17 | yes | yes | yes | no | yes | no | no | 84 | | Variable spindle | yes | yes | yes | yes | yes | yes | yes | 85 | | Ramped spindle | no | no | no | no | no | no | no | 86 | | Inverted spindle PWM | yes | yes | no | no | no | no | yes | 87 | | RC Servo/ESC for spindle13 | yes | yes | yes | yes | yes | no | yes | 88 | | ModBus spindle14 | yes | no | no | no | no | no | no | 89 | | Spindle at speed | no | no | no | no | no | no | no | 90 | | Spindle sync | no | no | no | no | no | no | no | 91 | | Closed loop spindle RPM | no | no | no | no | no | no | no | 92 | | Native USB streaming | yes | yes | yes | yes | yes | no | no | 93 | | SD Card streaming | yes | yes | no | yes | yes | no | no | 94 | | I2C Keypad | yes | yes | no | yes | no | yes | no | 95 | | I2C IO Expander | yes | no | no | yes | no | no | no | 96 | | Digital Aux I/O | 0/816 | no | no | no | no | no | no | 97 | | MPG stream input | yes | no | no | no | no | no | no | 98 | | Manual tool change5 | yes | yes | yes | yes | yes | yes | no | 99 | | Automatic tool change6 | no | no | no | no | no | no | no | 100 | | Laser PPI mode7 | no | no | no | no | no | no | no | 101 | | Trinamic support8 | TBC9 | TBC9 | TBC9 | TBC9 | no | no | no | 102 | | CNC BoosterPack support | yes10 | yes10 | no | yes10 | no | no | 1 | 103 | | Compiler/IDE | VS Code | STMCubeIDE | Arduino | Arduino | MCUExpresso | PSOC Creator | CCS | 104 | | Web Builder support19 | yes | yes | yes | no | no | no | no | 105 | 106 |
1 Plugin for I2C EEPROM or FRAM available. FRAM is faster and can sustain more write cycles than EEPROM. FRAM is reccomended for the [Odometer plugin](https://github.com/grblHAL/Plugin_odometer). 107 |
2 Should be fairly easy to extend. 108 |
3 In combination with ramped spindle, signals end of ramp - not programmed speed obtained. 109 |
4 To be completed \(TBC\), work in good progress. 110 |
5 Protocol extension, requires compatible GCode sender such as [ioSender](https://github.com/terjeio/ioSender). 111 |
6 grblHAL core has functionality and HAL driver entry points are provided, needs verification! 112 |
7 Driver specific M codes added for control. PPI = Pulses Per Inch. 113 |
8 Initial version ready for TMC2130 drivers, new [CNC BoosterPack](https://github.com/terjeio/CNC_Boosterpack) design for Texas Instrument LaunchPads ready and initial testing ok. 114 |
9 Implementation provided for TMC2130, with initial focus on [I2C](https://github.com/terjeio/Trinamic_TMC2130_I2C_SPI_Bridge) interfaces. Work in good progress - code published. 115 |
10 Via "motherboard" that accommodates [CNC BoosterPack](https://github.com/terjeio/CNC_Boosterpack) and processor board. Prototypes made, includes 8-bit I2C GPIO expander \(not available/needed for STM32F1xx or IMXRT1062\). "motherboards" has option for isolated level-shifted spindle PWM or DC output. BoosterPack has an onboard EEPROM and an I2C level shifter. 116 |
11 Requires 128KB of flash \(STM32F103CB\), some STM32F103C8 based Bluepill boards has that. Not recommended due to limited memories, use a STM32F303 or STM32F411 based Blackpill instead for a board with the same form factor as Red- and Bluepills. 117 |
12 Luc's [ESP3D-WEBUI](https://github.com/luc-github/ESP3D-webui). Support both v2 and v3, with auto-detect feature. 118 |
13 Set `$33=50` (PWM frequency), `$34=5`, `$35=5` and `$36=10` to generate a "standard" PWM signal: 20ms repetition rate, 1 - 2ms pulse length range. 119 |
14 [Supports a number of VFDs](https://github.com/grblHAL/Plugins_spindle/). Defaults to 19200 baud, implicit spindle at speed. Not supported for all alternative board map files. 120 |
15 Auto direction detect only. 121 |
16 Dependent on breakout board and plugin configuration. 122 |
17 Dependent on breakout board capability. ABC motors will be added from the first motor available and upward, auto-squared/ganged motors from the last and downward. 123 |
18 Ethernet is via SPI interface to an external WizNet W5100S or W5500 module. Not necessarily supported by all boards. 124 |
19 The [Web Builder](http://svn.io-engineering.com:8080) can be used to create the firmware without installing a toolchain. 125 | 126 | Please note that some of the capabilities should be fairly easy to port from one driver to another, but be aware some are dependent on MCU peripheral availability and thus not possible, or hard, to port. 127 | 128 | The fastest and most deterministic MCUs seems to be iMRXT1062, STM32H7xx and STM32F7, ESP32 is not bad but it is a bit unstable - maybe due to outstanding [bugs](https://github.com/espressif/esp-idf/issues) in the [ESP-IDF](https://github.com/espressif/esp-idf) and the system architecture - program code is stored off chip in external serial flash. 129 | 130 | --- 131 | 132 | Excel tables to markdown done with [thisDaveJ](https://thisdavej.com/copy-table-in-excel-and-paste-as-a-markdown-table/) web-based utility. 133 | 134 | --- 135 | 2025-02-16 136 | -------------------------------------------------------------------------------- /drivers.json: -------------------------------------------------------------------------------- 1 | { 2 | "drivers": [ 3 | { 4 | "name": "iMXRT1062 (Teensy 4.x)", 5 | "folder": "iMXRT1062", 6 | "driverURL": "https://github.com/grblHAL/iMXRT1062" 7 | }, 8 | { 9 | "name": "STM32F1xx", 10 | "folder": "STM32F1xx", 11 | "driverURL": "https://github.com/grblHAL/STM32F1xx" 12 | }, 13 | { 14 | "name": "STM32F4xx", 15 | "folder": "STM32F4xx", 16 | "driverURL": "https://github.com/grblHAL/STM32F4xx" 17 | }, 18 | { 19 | "name": "STM32F7xx", 20 | "folder": "STM32F7xx", 21 | "driverURL": "https://github.com/grblHAL/STM32F7xx" 22 | }, 23 | { 24 | "name": "STM32H7xx", 25 | "folder": "STM32H7xx", 26 | "driverURL": "https://github.com/dresco/STM32H7xx" 27 | }, 28 | { 29 | "name": "ESP32", 30 | "folder": "ESP32", 31 | "driverURL": "https://github.com/grblHAL/ESP32" 32 | }, 33 | { 34 | "name": "SAM3X8E (Arduino Due)", 35 | "folder": "SAM3X8E", 36 | "driverURL": "https://github.com/grblHAL/SAM3X8E" 37 | }, 38 | { 39 | "name": "RP2040 (Pi Pico & Pi Pico W)", 40 | "folder": "RP2040", 41 | "driverURL": "https://github.com/grblHAL/RP2040" 42 | }, 43 | { 44 | "name": "Simulator", 45 | "folder": "Simulator", 46 | "driverURL": "https://github.com/grblHAL/Simulator" 47 | } 48 | ], 49 | "default_caps": [ 50 | { "key": "axes", "type": "numeric", "derived": true, "inherited": false, "label": "Max number of axes or motors" }, 51 | { "key": "auto_square", "type": "numeric", "derived": true, "inherited": false, "label": "Max number auto squared axes" }, 52 | { "key": "ganged_axes", "type": "numeric", "derived": false, "inherited": false, "label": "" }, 53 | { "key": "usb_cdc", "type": "boolean", "derived": false, "inherited": true, "label": "Native USB connection" }, 54 | { "key": "serial_ports", "type": "numeric", "derived": true, "inherited": false, "label": "Number of serial ports" }, 55 | { "key": "probe", "type": "boolean", "derived": false, "inherited": true, "label": "Probe input" }, 56 | { "key": "estop", "type": "boolean", "derived": false, "inherited": true, "label": "Reset input as emergency stop" }, 57 | { "key": "safety_door", "type": "boolean", "derived": false, "inherited": true, "label": "Safety door input" }, 58 | { "key": "mpg_mode", "type": "boolean", "derived": false, "inherited": false, "label": "MPG mode input" }, 59 | { "key": "motor_warning", "type": "boolean", "derived": false, "inherited": false, "label": "Motor warning input" }, 60 | { "key": "motor_fault", "type": "boolean", "derived": false, "inherited": false, "label": "Motor fault input" }, 61 | { "key": "modbus", "type": "boolean", "derived": true, "inherited": false, "label": "ModBus support" }, 62 | { "key": "i2c_ports", "type": "numeric", "derived": true, "inherited": false, "label": "Number of I2C ports" }, 63 | { "key": "i2c_strobe", "type": "boolean", "derived": false, "inherited": false, "label": "I2C strobe input" }, 64 | { "key": "eeprom", "type": "numeric", "derived": false, "inherited": false, "label": "I2C EEPROM/FRAM supported" }, 65 | { "key": "digital_in", "type": "numeric", "derived": false, "inherited": false, "label": "Number of digital inputs" }, 66 | { "key": "digital_out", "type": "numeric", "derived": false, "inherited": false, "label": "Number of digital outputs" }, 67 | { "key": "analog_in", "type": "numeric", "derived": false, "inherited": false, "label": "Number of analog inputs" }, 68 | { "key": "analog_out", "type": "numeric", "derived": false, "inherited": false, "label": "Number of analog outputs" }, 69 | { "key": "analog_pwm_out", "type": "numeric", "derived": false, "inherited": false, "label": "Number of analog PWM outputs" }, 70 | { "key": "rgb_out", "type": "boolean", "derived": false, "inherited": false, "label": "RGB LED support" }, 71 | { "key": "neopixels", "type": "boolean", "derived": false, "inherited": false, "label": "Neopixel support" }, 72 | { "key": "sdcard", "type": "boolean", "derived": false, "inherited": false, "label": "SD card" }, 73 | { "key": "littlefs", "type": "boolean", "derived": false, "inherited": true, "label": "Flash based filing system" }, 74 | { "key": "i2c", "type": "boolean", "derived": true, "inherited": false, "label": "" }, 75 | { "key": "networking", "type": "boolean", "derived": true, "inherited": false, "label": "" }, 76 | { "key": "ethernet", "type": "boolean", "derived": false, "inherited": false, "label": "Ethernet" }, 77 | { "key": "wiznet", "type": "boolean", "derived": false, "inherited": false, "label": "Wiznet ethernet module" }, 78 | { "key": "wifi", "type": "boolean", "derived": false, "inherited": false, "label": "WiFi" }, 79 | { "key": "webui", "type": "boolean", "derived": true, "inherited": false, "label": "WebUI" }, 80 | { "key": "bluetooth", "type": "boolean", "derived": false, "inherited": false, "label": "Native Bluetooth" }, 81 | { "key": "spindle_pwm", "type": "numeric", "derived": false, "inherited": true, "label": "PWM spindles" }, 82 | { "key": "pwm_spindle_aux", "type": "numeric", "derived": false, "inherited": true, "label": "" }, 83 | { "key": "spindle_sync", "type": "boolean", "derived": false, "inherited": false, "label": "Spindle sync" }, 84 | { "key": "hc05", "type": "boolean", "derived": true, "inherited": false, "label": "HC-05 Bluetooth module" }, 85 | { "key": "spindle_dir", "type": "numeric", "derived": true, "inherited": false, "label": "" }, 86 | { "key": "trinamic_spi_cs", "type": "boolean", "derived": false, "inherited": false, "label": "" }, 87 | { "key": "trinamic_spi_chain", "type": "boolean", "derived": false, "inherited": false, "label": "" }, 88 | { "key": "trinamic_uart_n", "type": "boolean", "derived": false, "inherited": false, "label": "" }, 89 | { "key": "trinamic_uart_addr", "type": "boolean", "derived": false, "inherited": false, "label": "" }, 90 | { "key": "mcp3221_adc", "type": "boolean", "derived": false, "inherited": true, "label": "MCP3221 I2C ADC" } 91 | ], 92 | "tabs": [ 93 | { "tab_id": 0, "name": "General" }, 94 | { "tab_id": 1, "name": "Plugins" }, 95 | { "tab_id": 2, "name": "Network/WebUI" }, 96 | { "tab_id": 3, "name": "Advanced features" }, 97 | { "tab_id": 4, "name": "3rd party plugins" }, 98 | { "tab_id": 5, "name": "Optional inputs" } 99 | ], 100 | "resource_monitor": [ 101 | "axes", 102 | "auto_square", 103 | "serial_ports", 104 | "analog_in", 105 | "analog_out", 106 | "digital_in", 107 | "digital_out" 108 | ], 109 | "driver": [ 110 | { "id": "usb_cdc", "name": "Native USB communication", "symbol": { "name": "USB_SERIAL_CDC", "type": "uint", "min": 0, "max": 2 } } 111 | ], 112 | "core" : [ 113 | { "id": "usb_cdc", "name": "Connection", "symbol": { "name": "USB_SERIAL_CDC", "type": "dropdown" }, 114 | "options": [ 115 | { "id": "usb_cdc", "name": "Native USB", "symbol": { "name": "USB_SERIAL_CDC", "value": 1 }, "resources": { "usb_cdc": 1, "serial_ports": 0 } }, 116 | { "id": "uart", "name": "(Virtual) UART", "symbol": { "name": "USB_SERIAL_CDC", "value": 0 }, "resources": { "usb_cdc": 0, "serial_ports": 1 } } 117 | ] 118 | }, 119 | { "id": "n_axis", "name": "Number of axes", "symbol": { "name": "N_AXIS", "type": "dropdown", "min": 3, "max": 8 }, 120 | "options": [ 121 | { "name": "3", "symbol": { "name": "X_AXIS_OPT" } } 122 | ] 123 | }, 124 | { "id": "n_axis", "name": "Remap ABC to UVW", "symbol": { "name": "AXIS_REMAP_ABC2UVW", "value": 1 }, 125 | "resources": { "axes": 4 } 126 | }, 127 | { "id": "x_axis", "name": "X-axis", "symbol": { "name": "X_AXIS_OPT", "type": "dropdown" }, 128 | "options": [ 129 | { "name": "Single motor", "symbol": { "name": "X_AXIS_OPT" }, "resources": { "auto_square": 0, "axes": 0 } }, 130 | { "name": "Ganged motors", "symbol": { "name": "X_GANGED", "value": 1 }, "resources": { "auto_square": 0, "axes": 1 } }, 131 | { "name": "Auto-squared", "symbol": { "name": "X_AUTO_SQUARE", "value": 1 }, "resources": { "auto_square": 1, "axes": 1 } } 132 | ] 133 | }, 134 | { "id": "y_axis", "name": "Y-axis", "symbol": { "name": "Y_AXIS_OPT", "type": "dropdown" }, 135 | "options": [ 136 | { "name": "Single motor", "symbol": { "name": "Y_AXIS_OPT" }, "resources": { "auto_square": 0, "axes": 0 } }, 137 | { "name": "Ganged motors", "symbol": { "name": "Y_GANGED", "value": 1 }, "resources": { "auto_square": 0, "axes": 1 } }, 138 | { "name": "Auto-squared", "symbol": { "name": "Y_AUTO_SQUARE", "value": 1 }, "resources": { "auto_square": 1, "axes": 1 } } 139 | ] 140 | }, 141 | { "id": "z_axis", "name": "Z-axis", "symbol": { "name": "Z_AXIS_OPT", "type": "dropdown" }, 142 | "options": [ 143 | { "name": "Single motor", "symbol": { "name": "Z_AXIS_OPT" }, "resources": { "auto_square": 1, "axes": 1 } }, 144 | { "name": "Ganged motors", "symbol": { "name": "Z_GANGED", "value": 1 }, "resources": { "auto_square": 0, "axes": 1 } }, 145 | { "name": "Auto-squared", "symbol": { "name": "Z_AUTO_SQUARE", "value": 1 }, "resources": { "auto_square": 1, "axes": 1 } } 146 | ] 147 | }, 148 | { "id": "probe", "name": "Probe input", "symbol": { "name": "PROBE_ENABLE", "type": "bool" }, "resources": { "probe": 1 } }, 149 | { "id": "compat_level", "tab_id": 3, "name": "Compatibility level", "symbol": { "name": "COMPATIBILITY_LEVEL", "type": "dropdown" }, "URL": "https://github.com/grblHAL/core/wiki/Compatibility-level", 150 | "options": [ 151 | { "name": "grblHAL", "symbol": { "name": "COMPATIBILITY_LEVEL" } }, 152 | { "name": "Grbl id (1)", "symbol": { "name": "COMPATIBILITY_LEVEL", "value": 1 } }, 153 | { "name": "Grbl id + settings (2)", "symbol": { "name": "COMPATIBILITY_LEVEL", "value": 2 } }, 154 | { "name": "Grbl complete (10)", "symbol": { "name": "COMPATIBILITY_LEVEL", "value": 10 } } 155 | ] 156 | }, 157 | { "id": "e_stop", "tab_id": 3, "name": "Reset input as E-Stop", "symbol": { "name": "ESTOP_ENABLE", "type": "bool" }, "resources": { "estop": 1 } }, 158 | { "id": "tool_offset", "tab_id": 3, "name": "TLO report", "symbol": { "name": "TOOL_LENGTH_OFFSET_AXIS", "type": "dropdown" }, 159 | "options": [ 160 | { "name": "All axes", "symbol": { "name": "TOOL_LENGTH_OFFSET_AXIS" } }, 161 | { "name": "Z-axis", "symbol": { "name": "TOOL_LENGTH_OFFSET_AXIS", "value": 2 } }, 162 | { "name": "X-axis", "symbol": { "name": "TOOL_LENGTH_OFFSET_AXIS", "value": 0 } }, 163 | { "name": "Y-axis", "symbol": { "name": "TOOL_LENGTH_OFFSET_AXIS", "value": 1 } } 164 | ] 165 | }, 166 | { "id": "tooltable", "tab_id": 3, "name": "Tool table", "symbol": {"name": "N_TOOLS", "type": "dropdown" }, 167 | "options": [ 168 | { "name": "No", "symbol": { "name": "N_TOOLS" } }, 169 | { "name": "8 tools", "symbol": { "name": "N_TOOLS", "value": 8 } }, 170 | { "name": "12 tools", "symbol": { "name": "N_TOOLS", "value": 12 } }, 171 | { "name": "16 tools", "symbol": { "name": "N_TOOLS", "value": 16 } }, 172 | { "name": "24 tools", "symbol": { "name": "N_TOOLS", "value": 24 } }, 173 | { "name": "32 tools", "symbol": { "name": "N_TOOLS", "value": 32 } } 174 | ] 175 | }, 176 | { "id": "jerk", "tab_id": 3, "name": "Third order acceleration (jerk)", "symbol": { "name": "ENABLE_JERK_ACCELERATION", "type": "bool" }, "URL": "https://github.com/grblHAL/core/wiki/Jerk-acceleration", 177 | "options": [ 178 | { "id": "atps", "name": "Accel. tics per second", "symbol": { "name": "ACCELERATION_TICKS_PER_SECOND", "type": "dropdown", "value": 100 }, 179 | "options": [ 180 | { "name": "Default (100)", "symbol": { "name": "ACCELERATION_TICKS_PER_SECOND", "value": 100 } }, 181 | { "name": "200", "symbol": { "name": "ACCELERATION_TICKS_PER_SECOND", "value": 200 }, "symbols": [ { "name": "SEGMENT_BUFFER_SIZE", "value": "20" } ] }, 182 | { "name": "300", "symbol": { "name": "ACCELERATION_TICKS_PER_SECOND", "value": 300 }, "symbols": [ { "name": "SEGMENT_BUFFER_SIZE", "value": "30" } ] }, 183 | { "name": "400", "symbol": { "name": "ACCELERATION_TICKS_PER_SECOND", "value": 400 }, "symbols": [ { "name": "SEGMENT_BUFFER_SIZE", "value": "40" } ] }, 184 | { "name": "500", "symbol": { "name": "ACCELERATION_TICKS_PER_SECOND", "value": 500 }, "symbols": [ { "name": "SEGMENT_BUFFER_SIZE", "value": "50" } ] } 185 | ] 186 | } 187 | ] 188 | }, 189 | { "id": "g187", "tab_id": 3, "name": "G187 acceleration profiles", "symbol": { "name": "ENABLE_ACCELERATION_PROFILES", "type": "bool" }, "URL": "https://github.com/grblHAL/core/wiki/Jerk-acceleration" }, 190 | { "id": "backlash_comp", "tab_id": 3, "name": "Backlash compensation", "symbol": { "name": "ENABLE_BACKLASH_COMPENSATION", "type": "bool" } }, 191 | { "id": "disable_rst_all", "tab_id": 3, "name": "Disable $RST=*, reset all settings", "symbol": { "name": "ENABLE_RESTORE_NVS_WIPE_ALL", "type": "bool" } }, 192 | { "id": "disable_rst_dflt", "tab_id": 3, "name": "Disable $RST=$, reset core settings", "symbol": { "name": "ENABLE_RESTORE_NVS_DEFAULT_SETTINGS", "type": "bool" } }, 193 | { "id": "sleep", "tab_id": 3, "name": "Sleep mode", "symbol": { "name": "DEFAULT_SLEEP_ENABLE", "type": "bool" } }, 194 | { "id": "spindle_linearization", "tab_id": 3, "name": "Spindle linearization", "symbol": { "name": "ENABLE_SPINDLE_LINEARIZATION", "type": "bool" } }, 195 | { "id": "lathe_uvw_mode", "tab_id": 3, "name": "Lathe UVW mode", "symbol": { "name": "LATHE_UVW_OPTION", "type": "bool" }, "URL": "https://www.cnctrainingcentre.com/haas-turn/u-and-w-on-a-cnc-lathe-incremental-programming/" }, 196 | { "id": "spindle_sync", "tab_id": 3, "name": "Spindle sync", "symbol": { "name": "SPINDLE_SYNC_ENABLE", "type": "bool" }, "URL": "https://github.com/grblHAL/core/wiki/Spindle-sync", 197 | "resources": { "spindle_sync": 1 }, 198 | "options": [ 199 | { "id": "pid_log", "name": "Log for tuning", "symbol": { "name": "PID_LOG", "type": "bool", "value": 1000 } } 200 | ] 201 | }, 202 | { "id": "probe_overshoot", "tab_id": 3, "name": "Minimize probe overshoot", "symbol": { "name": "MINIMIZE_PROBE_OVERSHOOT", "type": "bool" } }, 203 | { "id": "ngc_expressions", "tab_id": 3, "name": "RS274 NGC expression support", "symbol": { "name": "NGC_EXPRESSIONS_ENABLE", "type": "bool" }, 204 | "URL": "https://github.com/grblHAL/core/wiki/Expressions-and-flow-control", 205 | "tooltip": "RS274 NGC + LinuxCNC extensions. Conditionals, looping and subroutines are supported when streaming from a SD card." 206 | }, 207 | { "id": "rotary_fix", "tab_id": 3, "name": "Rotary axis feed rate fix", "symbol": { "name": "ROTARY_FIX", "type": "bool" }, "URL": "https://github.com/grblHAL/core/discussions/241" }, 208 | { "id": "kinematics", "tab_id": 3, "name": "Kinematics", "symbol": { "name": "KINEMATICS_API", "type": "dropdown" }, 209 | "options": [ 210 | { "name": "Cartesian", "symbol": { "name": "CARTESIAN" } }, 211 | { "name": "CoreXY", "symbol": { "name": "COREXY", "value": "1" } }, 212 | { "name": "Delta", "symbol": { "name": "DELTA_ROBOT", "value": "1" } }, 213 | { "name": "Polar", "symbol": { "name": "POLAR_ROBOT", "value": "1" } }, 214 | { "name": "Wall plotter", "symbol": { "name": "WALL_PLOTTER", "value": "1" } } 215 | ] 216 | }, 217 | { "id": "mpgdro", "tab_id": 1, "name": "MPG & DRO mode", "symbol": { "name": "MPG_ENABLE", "type": "dropdown" }, "URL": "https://github.com/grblHAL/core/wiki/MPG-and-DRO-interfaces", 218 | "options": [ 219 | { "name": "Disabled", "symbol": { "name": "MPG_ENABLE" }, "resources": { "serial_ports": 0 } }, 220 | { "name": "Auxiliary input switchover", "symbol": { "name": "MPG_ENABLE", "value": 1 }, "resources": { "digital_in": 1, "serial_ports": 1 } }, 221 | { "name": "Real time command switchover", "symbol": { "name": "MPG_ENABLE", "value": 2 }, "resources": { "serial_ports": 1 } } 222 | ] 223 | } 224 | ], 225 | "spindles": [ 226 | { "id": "pwm", "name": "PWM", "symbol": { "name": "SPINDLE_N_ENABLE", "value": 11 }, "is_driver_spindle": 1, 227 | "resources": { "spindle_pwm": 1, "spindle_dir": 1, "modbus_rtu": 0 } 228 | }, 229 | { "id": "pwmnodir", "name": "PWM (no direction)", "symbol": { "name": "SPINDLE_N_ENABLE", "value": 12 }, "is_driver_spindle": 1, 230 | "resources": { "spindle_pwm": 1, "spindle_dir": 0, "modbus_rtu": 0 } 231 | }, 232 | { "id": "pwm2", "name": "PWM 2", "symbol": { "name": "SPINDLE_N_ENABLE", "value": 13 }, "is_driver_spindle": 1, 233 | "resources": { "spindle_pwm": 2, "spindle_dir": 0, "modbus_rtu": 0 } 234 | }, 235 | { "id": "pwm2_nodir", "name": "PWM 2 (no direction)", "symbol": { "name": "SPINDLE_N_ENABLE", "value": 14 }, "is_driver_spindle": 1, 236 | "resources": { "spindle_pwm": 2, "spindle_dir": 1, "modbus_rtu": 0 } 237 | }, 238 | { "id": "pwm3", "name": "PWM 3", "symbol": { "name": "SPINDLE_N_ENABLE", "value": 15 }, "is_driver_spindle": 0, 239 | "resources": { "spindle_pwm": 3, "spindle_dir": 0, "modbus_rtu": 0 } 240 | }, 241 | { "id": "pwm3_nodir", "name": "PWM 3 (no direction)", "symbol": { "name": "SPINDLE_N_ENABLE", "value": 16 }, "is_driver_spindle": 0, 242 | "resources": { "spindle_pwm": 3, "spindle_dir": 1, "modbus_rtu": 0 } 243 | }, 244 | { "id": "pwmclone", "name": "PWM cloned", "symbol": { "name": "SPINDLE_N_ENABLE", "value": 17 }, "is_driver_spindle": 1, 245 | "resources": { "spindle_pwm": 1, "spindle_dir": 1, "modbus_rtu": 0 } 246 | }, 247 | { "id": "onoff", "name": "On/Off", "symbol": { "name": "SPINDLE_N_ENABLE", "value": 7 }, "is_driver_spindle": 1, 248 | "resources": { "spindle_pwm": 0, "spindle_dir": 0, "modbus_rtu": 0 } 249 | }, 250 | { "id": "onoffdir", "name": "On/Off + dir", "symbol": { "name": "SPINDLE_N_ENABLE", "value": 8 }, "is_driver_spindle": 1, 251 | "resources": { "spindle_pwm": 0, "spindle_dir": 1, "modbus_rtu": 0 } 252 | }, 253 | { "id": "huanyang1", "name": "Huanyang v1", "symbol": { "name": "SPINDLE_N_ENABLE", "value": 1 }, "is_driver_spindle": 0, 254 | "resources": { "spindle_pwm": 0, "spindle_dir": 0, "modbus_rtu": 1 } 255 | }, 256 | { "id": "huanyang2", "name": "Huanyang P2A", "symbol": { "name": "SPINDLE_N_ENABLE", "value": 2 }, "is_driver_spindle": 0, 257 | "resources": { "spindle_pwm": 0, "spindle_dir": 0, "modbus_rtu": 1 } 258 | }, 259 | { "id": "gs20", "name": "Durapulse GS20", "symbol": { "name": "SPINDLE_N_ENABLE", "value": 3 }, "is_driver_spindle": 0, 260 | "resources": { "spindle_pwm": 0, "spindle_dir": 0, "modbus_rtu": 1 } 261 | }, 262 | { "id": "ys620", "name": "Yalang YS620", "symbol": { "name": "SPINDLE_N_ENABLE", "value": 4 }, "is_driver_spindle": 0, 263 | "resources": { "spindle_pwm": 0, "spindle_dir": 0, "modbus_rtu": 1 } 264 | }, 265 | { "id": "modvfd", "name": "MODVFD", "symbol": { "name": "SPINDLE_N_ENABLE", "value": 5 }, "is_driver_spindle": 0, 266 | "resources": { "spindle_pwm": 0, "spindle_dir": 0, "modbus_rtu": 1 } 267 | }, 268 | { "id": "h100", "name": "H-100", "symbol": { "name": "SPINDLE_N_ENABLE", "value": 6 }, "is_driver_spindle": 0, 269 | "resources": { "spindle_pwm": 0, "spindle_dir": 0, "modbus_rtu": 1 } 270 | }, 271 | { "id": "nowforever", "name": "NowForever", "symbol": { "name": "SPINDLE_N_ENABLE", "value": 20 }, "is_driver_spindle": 0, 272 | "resources": { "spindle_pwm": 0, "spindle_dir": 0, "modbus_rtu": 1 } 273 | }, 274 | { "id": "spdall", "name": "All", "symbol": { "name": "SPINDLE_N_ENABLE", "value": -1 }, "is_driver_spindle": 0, 275 | "resources": { "spindle_pwm": 0, "spindle_dir": 0, "modbus_rtu": 1 } 276 | } 277 | ], 278 | "plugins": [ 279 | { "id": "motors", "name": "Trinamic drivers", "symbol": { "name": "TRINAMIC_ENABLE", "type": "dropdown" }, "URL": "https://github.com/grblHAL/Plugins_motor/", 280 | "options": [ 281 | { "name": "Disabled", "symbol": { "name": "TRINAMIC_ENABLE" }, "resources": { "serial_ports": 0, "soft_uart": 0, "spi": 0 } }, 282 | { "name": "TMC2130, R sense: 110 mΩ", "symbol": { "name": "TRINAMIC_ENABLE", "value": 2130 }, "tmc_com": "spi", "trinamic_r_sense": 110 }, 283 | { "name": "TMC2209, R sense: 110 mΩ", "symbol": { "name": "TRINAMIC_ENABLE", "value": 2209 }, "tmc_com": "uart", "trinamic_r_sense": 110 }, 284 | { "name": "TMC2660, R sense: 50 mΩ", "symbol": { "name": "TRINAMIC_ENABLE", "value": 2660 }, "tmc_com": "spi", "trinamic_r_sense": 50 }, 285 | { "name": "TMC5160, R sense: 75 mΩ", "symbol": { "name": "TRINAMIC_ENABLE", "value": 5160 }, "tmc_com": "spi", "trinamic_r_sense": 75 }, 286 | { "name": "TMC5160, R sense: 50 mΩ", "symbol": { "name": "TRINAMIC_ENABLE", "value": 5160 }, "tmc_com": "spi", "trinamic_r_sense": 50 }, 287 | { "name": "TMC5160, R sense: 22 mΩ", "symbol": { "name": "TRINAMIC_ENABLE", "value": 5160 }, "tmc_com": "spi", "trinamic_r_sense": 22 } 288 | ] 289 | }, 290 | { "id": "motors", "name": "Trinamic mode", "symbol": { "name": "TRINAMIC_MODE", "type": "dropdown" }, 291 | "options": [ 292 | { "name": "set by board", "symbol": { "name": "TRINAMIC_MODE" } }, 293 | { "name": "SPI common CS", "symbol": { "name": "TRINAMIC_SPI_ENABLE", "value": 1 }, "tmc_mode": "spi_chained", "resources": { "serial_ports": 0, "soft_uart": 0, "spi": 1 } }, 294 | { "name": "SPI separate CS", "symbol": { "name": "TRINAMIC_SPI_ENABLE", "value": 2 }, "tmc_mode": "spi_cs", "resources": { "serial_ports": 0, "soft_uart": 0, "spi": 1 } }, 295 | { "name": "UART soft adress", "symbol": { "name": "TRINAMIC_UART_ENABLE", "value": 1 }, "tmc_mode": "uart_addr", "resources": { "serial_ports": 1, "soft_uart": 0, "spi": 0 } }, 296 | { "name": "UART hard adress", "symbol": { "name": "TRINAMIC_UART_ENABLE", "value": 2 }, "tmc_mode": "uart_n", "resources": { "serial_ports": 0, "soft_uart": 1, "spi": 0 } } 297 | ] 298 | }, 299 | { "id": "motors", "name": "Add extended settings", "symbol": { "name": "TRINAMIC_EXTENDED_SETTINGS", "type": "bool" } }, 300 | { "id": "eeprom", "tab_id": 1, "name": "Settings EEPROM", "symbol": {"name": "EEPROM_ENABLE", "type": "dropdown" }, "URL": "https://github.com/grblHAL/Plugin_EEPROM/", 301 | "resources": { "i2c": 1 }, 302 | "options": [ 303 | { "name": "No", "symbol": { "name": "EEPROM_ENABLE" }, "resources": { "i2c": 0 } }, 304 | { "name": "24x16 (2K)", "symbol": { "name": "EEPROM_ENABLE", "value": 16 }, "resources": { "i2c": 1 } }, 305 | { "name": "24x32 (4K)", "symbol": { "name": "EEPROM_ENABLE", "value": 32 }, "resources": { "i2c": 1 } }, 306 | { "name": "24x64 (8K)", "symbol": { "name": "EEPROM_ENABLE", "value": 64 }, "resources": { "i2c": 1 } }, 307 | { "name": "24x128 (16K)", "symbol": { "name": "EEPROM_ENABLE", "value": 128 }, "resources": { "i2c": 1 } }, 308 | { "name": "24x256 (32K)", "symbol": { "name": "EEPROM_ENABLE", "value": 256 }, "resources": { "i2c": 1 } } 309 | ] 310 | }, 311 | { "id": "eeprom", "tab_id": 1, "name": "EEPROM is FRAM", "symbol": {"name": "EEPROM_IS_FRAM", "type": "bool" } }, 312 | { "id": "spindle", "name": "Spindle 1", "symbol": { "name": "SPINDLE0_ENABLE", "type": "dropdown" }, "URL": "https://github.com/grblHAL/Plugins_spindle/", 313 | "options": [ 314 | { "id": "none", "name": "Disabled", "symbol": { "name": "SPINDLE0_ENABLE", "value": 0 }, "resources": { "serial_ports": 0 } } 315 | ] 316 | }, 317 | { "id": "spindle", "name": "Spindle 2", "symbol": { "name": "SPINDLE1_ENABLE", "type": "dropdown" }, "URL": "https://github.com/grblHAL/Plugins_spindle/", 318 | "options": [ 319 | { "id": "none", "name": "Disabled", "symbol": { "name": "SPINDLE1_ENABLE", "value": 0 }, "resources": { "serial_ports": 0 } } 320 | ] 321 | }, 322 | { "id": "spindle", "name": "Spindle 3", "symbol": { "name": "SPINDLE2_ENABLE", "type": "dropdown" }, "URL": "https://github.com/grblHAL/Plugins_spindle/", 323 | "options": [ 324 | { "id": "none", "name": "Disabled", "symbol": { "name": "SPINDLE2_ENABLE", "value": 0 }, "resources": { "serial_ports": 0 } } 325 | ] 326 | }, 327 | { "id": "spindle", "name": "Spindle 4", "symbol": { "name": "SPINDLE3_ENABLE", "type": "dropdown" }, "URL": "https://github.com/grblHAL/Plugins_spindle/", 328 | "options": [ 329 | { "id": "none", "name": "Disabled", "symbol": { "name": "SPINDLE3_ENABLE", "value": 0 }, "resources": { "serial_ports": 0 } } 330 | ] 331 | }, 332 | { "id": "spindle", "name": "Enable selected spindles simultaneously", "symbol": { "name": "N_SYS_SPINDLE", "type": "bool" } }, 333 | { "id": "modbus", "name": "ModBus RTU", "symbol": { "name": "MODBUS_ENABLE", "type": "dropdown" }, "URL": "https://github.com/grblHAL/Plugins_spindle/", 334 | "resources": { "serial_ports": 1 }, 335 | "options": [ 336 | { "id": "modbusoff", "name": "Disabled", "symbol": { "name": "MODBUS_BAUDRATE", "value": -1 }, "resources": { "serial_ports": 0 } }, 337 | { "id": "modbus0", "name": "2400 baud", "symbol": { "name": "MODBUS_BAUDRATE", "value": 0 }, "resources": { "serial_ports": 1 } }, 338 | { "id": "modbus1", "name": "4800 baud", "symbol": { "name": "MODBUS_BAUDRATE", "value": 1 }, "resources": { "serial_ports": 1 } }, 339 | { "id": "modbus2", "name": "9600 baud", "symbol": { "name": "MODBUS_BAUDRATE", "value": 2 }, "resources": { "serial_ports": 1 } }, 340 | { "id": "modbus3", "name": "19200 baud", "symbol": { "name": "MODBUS_BAUDRATE", "value": 3 }, "resources": { "serial_ports": 1 } }, 341 | { "id": "modbus4", "name": "38400 baud", "symbol": { "name": "MODBUS_BAUDRATE", "value": 4 }, "resources": { "serial_ports": 1 } }, 342 | { "id": "modbus5", "name": "115200 baud", "symbol": { "name": "MODBUS_BAUDRATE", "value": 5 }, "resources": { "serial_ports": 1 } } 343 | ] 344 | }, 345 | { "id": "modbus", "name": "ModBus RX/TX direction output", "symbol": { "name": "MODBUS_DIR_AUX", "type": "bool" }, 346 | "resources": { "digital_out": 1 } 347 | }, 348 | { "id": "webui", "tab_id": 2, "name": "WebUI", "symbol": { "name": "WEBUI_ENABLE", "type": "dropdown" }, "URL": "https://github.com/grblHAL/Plugin_WebUI/", 349 | "resources": { "networking": 1, "sdcard": 1, "webui": 1 }, 350 | "options": [ 351 | { "id": "webui3", "name": "Disabled", "symbol": { "name": "WEBUI_ENABLE" }, "resources": { "networking": 0, "sdcard": 0 } }, 352 | { "id": "webui3", "name": "v3", "symbol": { "name": "WEBUI_ENABLE", "value": 3 } }, 353 | { "id": "webui23", "name": "v2+v3", "symbol": { "name": "WEBUI_ENABLE", "value": 1 } }, 354 | { "id": "webui2", "name": "v2", "symbol": { "name": "WEBUI_ENABLE", "value": 2 } } 355 | ] 356 | }, 357 | { "id": "webui", "tab_id": 2, "name": "WebUI authentication", "symbol": { "name": "WEBUI_AUTH_ENABLE", "type": "bool" } }, 358 | { "id": "networking", "tab_id": 2, "name": "Networking", "symbol": { "name": "NETWORKING_ENABLE", "type": "dropdown" }, "pio_env": 1, "URL": "https://github.com/grblHAL/Plugin_networking/", 359 | "options": [ 360 | { "id": "networking_off", "name": "Disabled", "symbol": { "name": "NETWORKING_ENABLE", "value": 0 } }, 361 | { "id": "ethernet", "name": "Ethernet", "symbol": { "name": "ETHERNET_ENABLE", "value": 1 }, "resources": { "ethernet": 1 } }, 362 | { "id": "wifi", "name": "WiFi", "symbol": { "name": "WIFI_ENABLE", "value": 1 }, "resources": { "wifi": 1 } }, 363 | { "id": "wiznet_5100S", "name": "WIZ810SMJ (W5100S)", "symbol": { "name": "_WIZCHIP_", "value": 5105 }, "resources": { "wiznet": 1 } }, 364 | { "id": "wiznet_5500", "name": "WIZ550io (W5500)", "symbol": { "name": "_WIZCHIP_", "value": 5500 }, "resources": { "wiznet": 1 } } 365 | ], 366 | "suboptions": [ 367 | { "id": "telnetd", "name": "Telnet server", "symbol": { "name": "TELNET_ENABLE", "type": "bool" } }, 368 | { "id": "websocked", "name": "WebSocket server", "symbol": { "name": "WEBSOCKET_ENABLE", "type": "bool" } }, 369 | { "id": "ftpd", "name": "FTP server", "symbol": { "name": "FTP_ENABLE", "type": "bool" }, "resources": { "sdcard": 1 } }, 370 | { "id": "httpd", "name": "HTTP server", "symbol": { "name": "HTTP_ENABLE", "type": "bool" }, "resources": { "sdcard": 1 } }, 371 | { "id": "webdav", "name": "WebDAV protocol", "symbol": { "name": "WEBDAV_ENABLE", "type": "bool" }, "resources": { "sdcard": 1 } }, 372 | { "id": "mdns", "name": "mDNS protocol", "symbol": { "name": "MDNS_ENABLE", "type": "bool" } }, 373 | { "id": "ssdpd", "name": "SSDP protocol", "symbol": { "name": "SSDP_ENABLE", "type": "bool" } } 374 | ] 375 | }, 376 | { "id": "wifi_networking", "tab_id": 2, "name": "WiFi mode", "symbol": { "name": "WIFI_MODE", "type": "dropdown" }, "URL": "https://github.com/grblHAL/Plugin_networking/", 377 | "resources": { "wifi": 1 }, 378 | "options": [ 379 | { "id": "wifi_sta", "name": "Station (STA)", "symbol": { "name": "WIFI_SOFTAP", "value": 0 } }, 380 | { "id": "wifi_ap", "name": "Access Point (AP)", "symbol": { "name": "WIFI_SOFTAP", "value": 1 } }, 381 | { "id": "wifi_apsta", "name": "Access point + station", "symbol": { "name": "WIFI_SOFTAP", "value": 1 } } 382 | ] 383 | }, 384 | { "id": "sdcard", "tab_id": 1, "name": "SD card", "symbol": { "name": "SDCARD_ENABLE", "type": "dropdown" }, "URL": "https://github.com/grblHAL/Plugin_SD_card", 385 | "options": [ 386 | { "name": "Disabled", "symbol": { "name": "SDCARD_ENABLE" } }, 387 | { "name": "Enable", "symbol": { "name": "SDCARD_ENABLE", "value": 1 } }, 388 | { "name": "With YModem", "symbol": { "name": "SDCARD_ENABLE", "value": 2 } } 389 | ] 390 | }, 391 | { "id": "encoder", "tab_id": 1, "name": "Encoder", "symbol": { "name": "ENCODER_ENABLE", "type": "bool" }, "resources": { "digital_in": 3}, "URL": "https://github.com/grblHAL/Plugin_encoder/" }, 392 | { "id": "fans", "tab_id": 1, "name": "Fan", "symbol": { "name": "FANS_ENABLE", "type": "bool" }, "URL": "https://github.com/grblHAL/Plugin_fans/", 393 | "resources": { "digital_out": 1} 394 | }, 395 | { "id": "keypad", "tab_id": 1, "name": "Keypad", "symbol": { "name": "KEYPAD_ENABLE", "type": "dropdown" }, "URL": "https://github.com/grblHAL/Plugin_I2C_keypad/", 396 | "options": [ 397 | { "name": "Disabled", "symbol": { "name": "KEYPAD_ENABLE" }, "resources": { "i2c": 0, "digital_in": 0, "serial_ports": 0 } }, 398 | { "name": "I2C", "symbol": { "name": "KEYPAD_ENABLE", "value": 1 }, "resources": { "i2c_ports": 1, "i2c_strobe": 1, "serial_ports": 0 } }, 399 | { "name": "UART", "symbol": { "name": "KEYPAD_ENABLE", "value": 2 }, "resources": { "i2c_ports": 0, "digital_in": 0, "serial_ports": 1 } } 400 | ] 401 | }, 402 | { "id": "macros", "tab_id": 1, "name": "Macros", "symbol": { "name": "MACROS_ENABLE", "type": "dropdown" }, "URL": "https://github.com/grblHAL/Plugin_I2C_keypad/", 403 | "options": [ 404 | { "name": "Disabled", "symbol": { "name": "MACROS_ENABLE" } }, 405 | { "name": "Bound to aux port(s)", "symbol": { "name": "MACROS_ENABLE", "value": 1 } }, 406 | { "name": "Bound to keypad plugin", "symbol": { "name": "MACROS_ENABLE", "value": 2 } }, 407 | { "name": "Both aux and keypad", "symbol": { "name": "MACROS_ENABLE", "value": 3 } } 408 | ] 409 | }, 410 | { "id": "macros", "tab_id": 1, "name": "Number of macros", "symbol": { "name": "N_MACROS", "type": "dropdown", "min": 1, "max": 8 }, 411 | "options": [ 412 | { "name": "1", "symbol": { "name": "N_MACROS", "value": 1 } }, 413 | { "name": "2", "symbol": { "name": "N_MACROS", "value": 2 } }, 414 | { "name": "3", "symbol": { "name": "N_MACROS", "value": 3 } }, 415 | { "name": "4", "symbol": { "name": "N_MACROS", "value": 4 } }, 416 | { "name": "5", "symbol": { "name": "N_MACROS", "value": 5 } }, 417 | { "name": "6", "symbol": { "name": "N_MACROS", "value": 6 } }, 418 | { "name": "7", "symbol": { "name": "N_MACROS", "value": 7 } }, 419 | { "name": "8", "symbol": { "name": "N_MACROS", "value": 8 } } 420 | ] 421 | }, 422 | { "id": "bluetooth", "tab_id": 1, "name": "Bluetooth", "symbol": { "name": "BLUETOOTH_ENABLE", "type": "dropdown" }, "URL": "https://github.com/grblHAL/Plugins_Bluetooth/", 423 | "options": [ 424 | { "id": "bluetooth_off", "name": "Disabled", "symbol": { "name": "BLUETOOTH_ENABLE", "value": 0 } }, 425 | { "id": "bluetooth", "name": "Native", "symbol": { "name": "BLUETOOTH_ENABLE", "value": 1 }, "resources": { "bluetooth": 1 } }, 426 | { "id": "bluetooth_hc05", "tab_id": 1, "name": "HC-05 bridge", "symbol": { "name": "BLUETOOTH_ENABLE", "value": 2 }, "resources": { "hc05": 1, "serial_ports": 1, "digital_in": 1 }, "URL": "https://github.com/grblHAL/Plugins_Bluetooth/" } 427 | ] 428 | }, 429 | { "id": "rgb_leds", "tab_id": 1, "name": "RGB LEDs", "symbol": { "name": "RGB_LED_ENABLE", "type": "dropdown" }, "URL": "https://github.com/grblHAL/Plugins_misc/?tab=readme-ov-file#rgb-led-strips", 430 | "resources": { "rgb_out": 1 }, 431 | "options": [ 432 | { "id": "rgb_leds_off", "name": "Disabled", "symbol": { "name": "RGB_LED_ENABLE", "value": 0 } }, 433 | { "id": "rgb_leds_cfg", "name": "LED strip config", "symbol": { "name": "RGB_LED_ENABLE", "value": 1 }, "resources": { "rgb_out": 1 } }, 434 | { "id": "rgb_leds_m150", "name": "LED strip config + M150", "symbol": { "name": "RGB_LED_ENABLE", "value": 2 }, "resources": { "rgb_out": 1 } } 435 | ] 436 | }, 437 | { "id": "eventout", "tab_id": 1, "name": "Event triggers", "symbol": { "name": "EVENTOUT_ENABLE", "type": "dropdown", "min": 1, "max": 8 }, "URL": "https://github.com/grblHAL/Plugins_misc/?tab=readme-ov-file#bind-events-to-aux-output-ports", 438 | "resources": { "digital_out": 1 }, 439 | "options": [ 440 | { "name": "Disabled", "symbol": { "name": "EVENTOUT_ENABLE", "value": 0 } }, 441 | { "name": "1", "symbol": { "name": "N_EVENTS", "value": 1 }, "resources": { "digital_out": 1 } }, 442 | { "name": "2", "symbol": { "name": "N_EVENTS", "value": 2 }, "resources": { "digital_out": 2 } }, 443 | { "name": "3", "symbol": { "name": "N_EVENTS", "value": 3 }, "resources": { "digital_out": 3 } }, 444 | { "name": "4", "symbol": { "name": "N_EVENTS", "value": 4 }, "resources": { "digital_out": 4 } }, 445 | { "name": "5", "symbol": { "name": "N_EVENTS", "value": 5 }, "resources": { "digital_out": 5 } }, 446 | { "name": "6", "symbol": { "name": "N_EVENTS", "value": 6 }, "resources": { "digital_out": 6 } }, 447 | { "name": "7", "symbol": { "name": "N_EVENTS", "value": 7 }, "resources": { "digital_out": 7 } }, 448 | { "name": "8", "symbol": { "name": "N_EVENTS", "value": 8 }, "resources": { "digital_out": 8 } } 449 | ] 450 | }, 451 | { "id": "laser_ppi", "tab_id": 1, "name": "Laser PPI", "symbol": { "name": "PPI_ENABLE", "type": "bool" }, "URL": "https://github.com/grblHAL/Plugins_laser/#laser-ppi" }, 452 | { "id": "laser_cluster", "tab_id": 1, "name": "LightBurn cluster", "symbol": { "name": "LB_CLUSTERS_ENABLE", "type": "bool" }, "URL": "https://github.com/grblHAL/Plugins_laser/#lightburn-clusters" }, 453 | { "id": "laser_coolant", "tab_id": 1, "name": "Laser coolant", "symbol": { "name": "COOLANT_ENABLE", "type": "bool" }, "URL": "https://github.com/grblHAL/Plugins_laser/#laser-coolant", 454 | "resources": { "digital_in": 1 } 455 | }, 456 | { "id": "homing_pulloff", "tab_id": 1, "name": "Homing pulloff per axis", "symbol": { "name": "HOMING_PULLOFF_ENABLE", "type": "bool" }, "URL": "https://github.com/grblHAL/Plugins_misc/?tab=readme-ov-file#homing-pulloff" 457 | 458 | }, 459 | { "id": "feed_override", "tab_id": 1, "name": "Feed rate override (M220)", "symbol": { "name": "FEED_OVERRIDE_ENABLE", "type": "bool" }, "URL": "https://github.com/grblHAL/Plugins_misc/?tab=readme-ov-file#feed-override" 460 | 461 | }, 462 | { "id": "pwm_servo", "tab_id": 1, "name": "PWM servo (M280)", "symbol": { "name": "PWM_SERVO_ENABLE", "type": "bool" }, "URL": "https://github.com/grblHAL/Plugins_misc/?tab=readme-ov-file#pwm-servo", 463 | "resources": { "analog_pwm_out": 1 } 464 | }, 465 | { "id": "bltouch", "tab_id": 1, "name": "BLTouch probe (M401, M402)", "symbol": { "name": "BLTOUCH_ENABLE", "type": "bool" }, "URL": "https://github.com/grblHAL/Plugins_misc/?tab=readme-ov-file#bltouch-probe", 466 | "resources": { "analog_pwm_out": 1 } 467 | }, 468 | { "id": "esp_at", "tab_id": 1, "name": "ESP-AT", "symbol": { "name": "ESP_AT_ENABLE", "type": "bool" }, "URL": "https://github.com/grblHAL/Plugins_misc/?tab=readme-ov-file#esp-at", 469 | "resources": { "serial_ports": 1 } 470 | }, 471 | { "id": "odometer", "tab_id": 1, "name": "Odometer", "symbol": { "name": "ODOMETER_ENABLE", "type": "bool" }, "URL": "https://github.com/grblHAL/Plugin_odometer/" }, 472 | { "id": "openpnp", "tab_id": 1, "name": "OpenPNP", "symbol": { "name": "OPENPNP_ENABLE", "type": "bool" }, "URL": "https://github.com/grblHAL/Plugin_openpnp/" }, 473 | { "id": "plasma", "tab_id": 1, "name": "Plasma/THC", "symbol": { "name": "PLASMA_ENABLE", "type": "bool" }, "URL": "https://github.com/grblHAL/Plugin_plasma/", 474 | "resources": { "analog_in": 0, "digital_in": 3 } 475 | }, 476 | { "id": "embroidery", "tab_id": 1, "name": "Embroidery", "symbol": { "name": "EMBROIDERY_ENABLE", "type": "bool" }, "URL": "https://github.com/grblHAL/Plugin_embroidery/", 477 | "resources": { "sdcard": 1 } 478 | } 479 | ], 480 | "signals": [ 481 | { "id": "safety_door", "name": "Safety door", "symbol": { "name": "SAFETY_DOOR_ENABLE", "type": "bool" }, "resources": { "safety_door": 1, "digital_in": 1 } }, 482 | { "id": "limits_override", "name": "Limits override", "symbol": { "name": "LIMITS_OVERRIDE_ENABLE", "type": "bool" }, "resources": { "digital_in": 1 } }, 483 | { "id": "single_stepping", "name": "Single step G-code blocks", "symbol": { "name": "SINGLE_BLOCK_ENABLE", "type": "bool" }, "resources": { "digital_in": 1 } }, 484 | { "id": "block_delete", "name": "Block delete", "symbol": { "name": "BLOCK_DELETE_ENABLE", "type": "bool" }, "resources": { "digital_in": 1 } }, 485 | { "id": "stop_disable", "name": "Optional stop disable", "symbol": { "name": "STOP_DISABLE_ENABLE", "type": "bool" }, "resources": { "digital_in": 1 } }, 486 | { "id": "probe_disconnect", "name": "Probe disconnected", "symbol": { "name": "PROBE_DISCONNECT_ENABLE", "type": "bool" }, "resources": { "digital_in": 1 } }, 487 | { "id": "motor_fault", "name": "Motor fault", "symbol": { "name": "MOTOR_FAULT_ENABLE", "type": "bool" }, "resources": { "motor_fault": 1, "digital_in": 1 } }, 488 | { "id": "motor_warning", "name": "Motor warning", "symbol": { "name": "MOTOR_WARNING_ENABLE", "type": "bool" }, "resources": { "motor_warning": 1, "digital_in": 1 } }, 489 | { "id": "mcp3221_adc", "name": "MCP3221 I2C ADC", "symbol": { "name": "MCP3221_ENABLE", "type": "bool" }, "resources": { "mcp3221_adc": 1, "i2c": 1 } } 490 | ], 491 | "thirdparty": [ 492 | { "id": "panel", "tab_id": 4, "name": "Panel", "symbol": { "name": "PANEL_ENABLE", "type": "bool" }, "thirdparty": 1, "URL": "https://github.com/dresco/Plugin_panel", 493 | "resources": { "modbus_rtu": 1 }, 494 | "symbols": [ { "name": "MODBUS_MAX_ADU_SIZE", "value": "64" } ] 495 | }, 496 | { "id": "picoHAL", "tab_id": 4, "name": "PicoHAL", "symbol": { "name": "PICOHAL_ENABLE", "type": "bool" }, "thirdparty": 1, "URL": "https://github.com/Expatria-Technologies/Plugins_picoHAL", 497 | "resources": { "modbus_rtu": 1 } 498 | }, 499 | { "id": "probept", "tab_id": 4, "name": "Probing add-on", "symbol": { "name": "PROBE_PROTECT_ENABLE", "type": "bool" }, "thirdparty": 1, "URL": "https://github.com/Expatria-Technologies/grblhal_probe_plugin", 500 | "resources": { "digital_in": 1 } 501 | }, 502 | { "id": "fh_atc", "tab_id": 4, "name": "FlexiHAL ATC", "symbol": { "name": "FLEXIHAL_ATC", "type": "bool", "hide": 1 }, "thirdparty": 1, "URL": "https://github.com/Expatria-Technologies/flexihal_atc", 503 | "resources": { "digital_in": 3, "digital_out": 4 }, 504 | "symbols": [ { "name": "ATC_ENABLE", "value": "2" } ] 505 | }, 506 | { "id": "status_lights", "tab_id": 4, "name": "Status lights", "symbol": { "name": "STATUS_LIGHT_ENABLE", "type": "dropdown" }, "thirdparty": 1, 507 | "options": [ 508 | { "name": "Disabled", "symbol": { "name": "STATUS_LIGHT_ENABLE" } }, 509 | { "id": "datron", "tab_id": 4, "name": "Datron style", "symbol": { "name": "STATUS_LIGHT_ENABLE", "value": 1 }, "thirdparty": 1, "URL": "https://github.com/5ocworkshop/grblhal-rgb-plugin", 510 | "resources": { "digital_out": 3 } 511 | }, 512 | { "id": "sienci_rgb", "tab_id": 4, "name": "Sienci lights", "symbol": { "name": "STATUS_LIGHT_ENABLE", "value": 2 }, "thirdparty": 1, "URL": "https://github.com/Sienci-Labs/grblhal-rgb-plugin", 513 | "resources": { "rgb_out": 1 } 514 | } 515 | ] 516 | }, 517 | { "id": "templates", "tab_id": 4, "name": "Template plugins", "symbol": { "name": "TEMPLATE_ENABLE", "type": "dropdown" }, "thirdparty": 1, "URL": "https://github.com/grblHAL/Templates/tree/master/my_plugin", 518 | "options": [ 519 | { "name": "None", "symbol": { "name": "TEMPLATE_ENABLE" } }, 520 | { "name": "Solenoid spindle", "symbol": { "name": "TEMPLATE_ENABLE", "value": 1 }, "URL": "https://github.com/grblHAL/Templates/tree/master/my_plugin/Solenoid_spindle", 521 | "symbols": [ { "name": "ADD_MY_PLUGIN", "value": "1" } ] 522 | }, 523 | { "name": "Select 2nd probe via relay", "symbol": { "name": "TEMPLATE_ENABLE", "value": 2 }, "URL": "https://github.com/grblHAL/Templates/tree/master/my_plugin/Probe_select", 524 | "resources": { "digital_out": 1 }, 525 | "symbols": [ { "name": "ADD_MY_PLUGIN", "value": "1" } ] 526 | }, 527 | { "name": "Select 2nd probe via aux input", "symbol": { "name": "TEMPLATE_ENABLE", "value": 2 }, "URL": "https://github.com/grblHAL/Templates/tree/master/my_plugin/Probe_select2", 528 | "resources": { "digital_in": 1 }, 529 | "symbols": [ { "name": "ADD_MY_PLUGIN", "value": "1" } ] 530 | }, 531 | { "name": "Motor power monitor", "symbol": { "name": "TEMPLATE_ENABLE", "value": 3 }, "URL": "https://github.com/grblHAL/Templates/tree/master/my_plugin/Motor_power_monitor", 532 | "resources": { "digital_in": 1 }, 533 | "symbols": [ { "name": "ADD_MY_PLUGIN", "value": "1" } ] 534 | }, 535 | { "name": "Pause on SD file run", "symbol": { "name": "TEMPLATE_ENABLE", "value": 4 }, "URL": "https://github.com/grblHAL/Templates/tree/master/my_plugin/Pause_on_SD_file_run", 536 | "symbols": [ { "name": "ADD_MY_PLUGIN", "value": "1" } ] 537 | }, 538 | { "name": "Realtime report timestamp", "symbol": { "name": "TEMPLATE_ENABLE", "value": 5 }, "URL": "https://github.com/grblHAL/Templates/tree/master/my_plugin/Realtime_report_timestamp", 539 | "symbols": [ { "name": "ADD_MY_PLUGIN", "value": "1" } ] 540 | }, 541 | { "name": "Stepper enable control", "symbol": { "name": "TEMPLATE_ENABLE", "value": 6 }, "URL": "https://github.com/grblHAL/Templates/tree/master/my_plugin/Stepper_enable_control", 542 | "symbols": [ { "name": "ADD_MY_PLUGIN", "value": "1" } ] 543 | }, 544 | { "name": "Prosessor load", "symbol": { "name": "TEMPLATE_ENABLE", "value": 7 }, "URL": "https://github.com/grblHAL/Templates/tree/master/my_plugin/MCU_load", 545 | "symbols": [ { "name": "ADD_MY_PLUGIN", "value": "1" } ] 546 | }, 547 | { "name": "Keep last selected tool over reboot", "symbol": { "name": "TEMPLATE_ENABLE", "value": 7 }, "URL": "https://github.com/grblHAL/Templates/tree/master/my_plugin/Persistent_tool", 548 | "symbols": [ { "name": "ADD_MY_PLUGIN", "value": "1" } ] 549 | }, 550 | { "name": "HPGL extension", "symbol": { "name": "TEMPLATE_ENABLE", "value": 8 }, "URL": "https://github.com/grblHAL/Templates/tree/master/my_plugin/hpgl", 551 | "symbols": [ { "name": "ADD_MY_PLUGIN", "value": "1" } ] 552 | } 553 | ] 554 | } 555 | ] 556 | } 557 | --------------------------------------------------------------------------------