FluidNC commands and setting use a $<text> format. They can only be used in idle mode.
Commands are used for actions (like homing or disabling motors) or retrieve information (like gcode offsets). You can get a complete list of them with the $CMD command. Many commands have a full name format as well as a shorter version. Like $Gcode/Mode and $G. Many of the command shortcuts are compatible with Grbl.
Note: Details for each command will be added as time permits
Grbl 3 [FluidNC v3.7,2 (wifi) '$' for help]
[MSG:INFO: '$H'|'$X' to unlock]
<Alarm|WPos:0.000,-80.000,-10.540|Bf:15,128|FS:0,0|WCO:0.000,80.000,10.540>
$X
[MSG:INFO: Caution: Unlocked]
ok
<Idle|WPos:0.000,-80.000,-10.540|Bf:15,128|FS:0,0|Ov:100,100,100>
$A=5
This is used to manually create an alarm This can be used for testing or in conditional gcode to stop a running job with an error.
$H
[MSG:Homed:Z]
[MSG:Homed:XY]
ok
<Idle|WPos:-48.000,89.000,44.577,0.000|Bf:15,128|FS:0,0>
$Alarm/Send=5
ok
[MSG:INFO: ALARM: Probe Fail Contact]
ALARM:5
<Alarm|WPos:-48.000,89.000,44.577,0.000|Bf:15,128|FS:0,0>
[VER:3.4 FluidNC v3.4.8:]
[OPT:MPHS]
[MSG: Machine: TMC2209 XY Servo Laser]
[MSG: Mode=AP:SSID=FluidNC:IP=192.168.0.1:MAC=AC-0B-FB-24-EE-C9]
$CI
uart
macros
$cmd
$FakeLaserMode or $32
$FakeMaxSpindleSpeed or $30
```
GD
I
, and pins configured as output have the prefix O
. The status of the pin is either 0
(low) or 1
(high). In the example below, pin 2, GPIO2 I0
, means gpio2 is configured as an input and was read as a logic 0, or low.0 GPIO0 I1
1 U0TXD
2 GPIO2 I0
3 U0RXD
4 GPIO4 I0
5 GPIO5 O1
6 SPICLK
7 GPIO7 O0 I1 SPIQ_out
8 GPIO8 O0 I0 SPID_out
9 GPIO9 O0 I1 SPIHD_out
...
Input Matrix
1 SPIQ_in 7
...
9 HSPIQ_in 19
10 HSPID_in 23
$firmware/info
FW version: FluidNC v3.7,2-pre3 (FaultPin-cd7ec064) # FW target:grbl-embedded # FW HW:Direct SD # primary sd:/sd # secondary sd:none # authentication:no # webcommunication: Sync: 81:192.168.0.1 # hostname:fluidnc(AP mode) # axis:3
$G
[GC:G0 G54 G17 G21 G90 G94 M5 M9 T0 F0 S0]
$#
[G54:0.000,80.000,10.540]
[G55:0.000,0.000,0.000]
[G56:0.000,0.000,0.000]
[G57:0.000,0.000,0.000]
[G58:0.000,0.000,0.000]
[G59:0.000,0.000,0.000]
[G28:6.000,77.000,30.000]
[G30:6.000,77.000,50.000]
[G92:0.000,0.000,0.000]
[TLO:0.000]
$10 => $Report/Status
$ESP116 => $WiFi/Mode
$ESP100 => $Sta/SSID
$ESP101 => $Sta/Password
$ESP102 => $Sta/IPMode
$ESP105 => $AP/SSID
$ESP106 => $AP/Password
$ESP107 => $AP/IP
$ESP108 => $AP/Channel
$ESP112 => $Hostname
$ => $HTTP/BlockDuringMotion
$ESP120 => $HTTP/Enable
$ESP121 => $HTTP/Port
$ESP130 => $Telnet/Enable
$ESP131 => $Telnet/Port
Write files on the local file system to the SD card.
$LocalFS/Backup
[MSG:INFO: /localfs/config.yaml -> /sd/localfs/config.yaml]
[MSG:INFO: /localfs/favicon.ico -> /sd/localfs/favicon.ico]
[MSG:INFO: /localfs/index.html.gz -> /sd/localfs/index.html.gz]
[MSG:INFO: /localfs/macro1.g -> /sd/localfs/macro1.g]
[MSG:INFO: /localfs/macrocfg.json -> /sd/localfs/macrocfg.json]
Display the files on flash memory.
$LocalFS/List
[FILE: config.yaml|SIZE:0]
[FILE: favicon.ico|SIZE:18450]
[FILE: index.html.gz|SIZE:116654]
[FILE: macro1.g|SIZE:3]
[FILE: macrocfg.json|SIZE:919]
[/littlefs/ Free:44.00 KB Used:148.00 KB Total:192.00 KB]
Display the contents of a file (similar to cat
).
$LocalFS/Show=macrocfg.json
[]
{
"name": "$MD",
"glyph": "remove",
"filename": "/macro1.g",
"target": "ESP",
"class": "btn btn-danger",
"index": 0
},
{
"name": "",
"glyph": "",
"filename": "",
"target": "",
"class": "",
"index": 1
}
]
Show the total and used local file storage sizes.
$LocalFS/Size
LocalFS Total:192.00 KB Used:148.00 KB
List the files on the SD card.
$SD/List
[DIR:.fseventsd]
[FILE: fseventsd-uuid|SIZE:36]
[FILE: 00000000096737f7|SIZE:56]
[FILE: 00000000096737f8|SIZE:72]
[DIR:localfs]
[FILE: config.yaml|SIZE:225]
[FILE: favicon.ico|SIZE:1150]
[FILE: index.html.gz|SIZE:116654]
[FILE: macro1.g|SIZE:3]
[FILE: macrocfg.json|SIZE:919]
[/sd/ Free:61.90 MB Used:120.50 KB Total:62.01 MB]
Display the contents of a file on the SD card (similar to cat
).
$SD/Show=/sd/localfs/macro1.g
$MD
Rename a file on the SD card.
$SD/Rename=foo.gcode>foo.nc
$Files/ListGcode ; Lists all gcode files in the root folder of the SD card
$File/ListGcode=/Folder1 ; List all gcode files in Folder1 of the root.
$File/ListGcode=/localfs/ ; List all gcode files in the root of the localfs
$File/ShowSome=10,frodo.nc ; show first 10 lines
$File/ShowSome=10,20,frodo.nc ; show lines 10 through 20
[MSG:INFO: NVS Used:191 Free:439 Total:630]
[MSG:INFO: FluidNC v3.7,1]
[MSG:INFO: Compiled with ESP32 SDK:v4.4.4]
[MSG:INFO: Local filesystem type is littlefs]
[MSG:INFO: Configuration file:6P_ss_XYZ.yaml]
[MSG:INFO: Machine 6 Pack StepStick XYZ]
...
ok
$state
State 1 (Alarm)
Displays information about the microcontroller state and FluidNC settings.
$System/Stats
Chip ID: 26773
CPU Cores: 2
CPU Frequency: 240Mhz
CPU Temperature: 57.8°C
Free memory: 109.79 KB
SDK: v4.4.4
Flash Size: 4.00 MB
Sleep mode: Modem
Available Size for update: 1.88 MB
Available Size for LocalFS: 192.00 KB
Web port: 80
Data port: 23
Hostname: fluidnc
Current WiFi Mode: AP (08:3A:F2:22:3B:69)
SSID: FluidNC
Visible: Yes
Radio country set: 01
(channels 1-11, max power 20dBm)
Authentication: WPA2-PSK
Max Connections: 4
DHCP Server: Started
IP: 192.168.0.1
Gateway: 192.168.0.1
Mask: 255.255.255.0
Connected channels: 0
Disabled Mode: STA (08:3A:F2:A9:95:68)
Notifications: Disabled
FW version: FluidNC v3.7.11
$wifi/listaps
{"AP_LIST":[
{"SSID":"Temp wifi",
"SIGNAL":"86",
"IS_PROTECTED":"1"
},
{"SSID":"Barts-WLAN",
"SIGNAL":"62",
"IS_PROTECTED":"1"
}
]
}
Settings are used to set saved values. Most settings are now in the config file, but there a a few like $Confg/Filename that need to be outside the config file. You can see all of them with $S.
We only support a few standard Grbl $ settings. We tried to support any setting that might be used during normal operation like $10. Standard Grbl settings that are used to setup a machine are not supported. This is because FluidNC has many times more settings than Grbl.
Here is a rough mapping of Grbl settings to to FluidNC)
You set the value by setting a value like this $Config/Filename=test.yaml
. You can see the current value by just sending the setting name like $Config/Filename
. If you send just a part of the setting name like $STA
, all setting with STA in the name will be show with their current values.
Settings have different types like integer, float, String and Enum. Enum is one of a list of values. You can see the valid type by sending something like $Wifi/Mode=*
. It will respond with the valid values [MSG:INFO: Valid options: Off AP STA STA>AP].
The list of settings depends whether your firmware was compiled for WiFi or Bluetooth. Below is a list of all settings.
[since v3.4.8] This sets the start message. Some Grbl Gcode senders expect a very specific value and revision, so this allows you to set to whatever you want.
Accepts these substitution sequences:
\V - expands to version info like: 3.4
\B - expands to build info like: v3.4.6 (Devt-827770e-dirty)
\R - expands to radio info like: wifi
\H - expands to: '' for help
The default value is: Grbl \V [FluidNC \B (\R) \H] for Grbl 3.4 [FluidNC v3.4.8 (wifi) '' for help]
Start/Message=Grbl 1.1g [\H] would give *Grbl 1.1g ['' for help]*
Additional information for the [VER: ... :] report that is issued in response to $I. The default value is the empty string, so nothing will be added after the final : in the [VER: ... :] report. If you were to set $Firmware/Build to "test", the report would say [VER: ... :test]
Controls the format of status reports issued in response to '?'. This is the same as GRBL's $10 setting. The values are
0 - Report positions in work coordinates, without buffer status
1 - Report positions in machine coordinates, without buffer status
2 - Report positions in work coordinates, with buffer status
3 - Report positions in machine coordinates, with buffer status
This sets the name of the file to be loaded for the configuration.
This sets the level in information that is reported. The default level is Info. The valid levels are None, Error, Warning, Info, Debug, and Verbose. Debug can be used to give additional info when sovling problems. It is best to use Info for normal operation.
$Message/Level=Debug
$HX
[MSG:DBG: Homing Cycle X]
[MSG:DBG: Homing nextPhase FastApproach]
...
The valid types are:
In the case of email notification, there is a login name for the smtp server.
In the case of email notification, there is a password for the smtp server.
In the case of email notifications, there is an email address, SMTP server address, and port in the format email_address#smtp_server:port
. The email address is used for both the sender and the recipient.
For example, to send an email notification to fluidnc@fluidnc.com using brevo.com, please enter here:
fluidnc@fluidnc.com#smtp-relay.brevo.com:465
If sending notifications does not work, try to enter the IP address of the smtp server instead of its name. For sending via brevo.com you should enter:
fluidnc@fluidnc.com#1.179.115.1:465
True to enable connections via TCP on port 23
True to enable HTTP connections on the port given by $HTTP/Port
Port number for HTTP connections, default 80
[since v3.6.8] Prevents serving files from LocalFS when the machine is running
Value is one of:
This sets the WiFi power savings mode. The options are None
, Max
and Min
. The default is None
and recommended for most people unless there are overheating issues. Details about the modes are here. Ask on ESP32 forums for more details. We are not experts on this.
SSID of the external access point for STA mode. See this regarding the use of non-ascii characters like accents.
Password for the external access point for STA mode. See this regarding the use of non-ascii characters like accents.
DHCP or Static
If $Sta/IPMode is Static, the IP address to use for FluidNC
If $Sta/IPMode is Static, the IP address for the gateway
If $Sta/IPMode is Static, the subnet mask (typically 255.255.255.0)
The IP address to use for AP mode (default "FluidNC")
The password for AP mode (default "12345678")
The IP address to use for AP mode (default 192.168.0.1)
[since v3.6.7] The regulatory domain configured for the AP. Affects available channels and maximum transmit power.
The host name for this FluidNC instance (default "fluidnc"). Affects access via an MDNS name like "fluidnc.local".
The name of this FluidNC instance for Bluetooth scanning (default "FluidNC").
Realtime commands can be sent at any time. They are processed immediatly and not put in the commands buffer.
If you need to send a real time command character as a part of another command (for instance when setting a Wifi password) you need to encode it using a URL encoding. To test the encoding you can use https://www.urlencoder.org/.
There are 4 ASCII commands that can be sent from the keyboard.
0x18
(CTRL+X) Soft Reset
?
Status Query!
Feed Hold
~
Cycle Start / Resume
0x84
Safety Door
0x85
Jog Cancel