Luxafor Signal AT Command Reference Extended Edition with Examples
1. Introduction
The Luxafor Signal device is controlled through a text-based AT command interface. This extended edition documents every command with syntax, parameters, responses, and a worked example. A compact summary of the same command set is available in the short edition of this reference. Commands can be sent over any of the following channels:
- USB CDC – virtual serial port over USB (TinyUSB CDC-ACM).
- Cloud WebSocket – commands relayed through the cloud server connection.
- Local HTTP server – commands submitted through the device’s local REST endpoint (available in AP and STA modes).
1.1 Command Format
Each command is an ASCII string terminated by a carriage return / line feed. Command names are case-insensitive. Commands that take parameters use the = form:
AT+<NAME> Execute/action command AT+<NAME>? Query ( get ) command AT+<NAME>=<params> Set command , parameters separated by commas
1.2 Responses
Every response is terminated with \r\n. The response shape depends on the command type:
- Set / action commands answer with a single OK on success.
- Single-value queries answer with one +<TAG>:<data> line. No trailing OK is sent after it.
- List queries (file lists, scan results, pattern lists) send one +<TAG>: line per item, followed by a final OK.
- Failures answer with ERROR: <code>, where <code> is a numeric error code (see Section 9). A few commands report textual errors in the form ERROR: <reason>; these are noted where they occur.
- Data transfers (AT+CP=, AT+UF=) answer with the prompt > and wait for follow-up data.

2. General Commands
2.1 AT — Test Command
Verifies that the command interface is alive. The device simply answers OK
AT OK
2.2 AT+RST — Restart Device
Restarts the device. The OK is sent before the restart is performed, so the host should expect the connection to drop shortly afterwards.
AT+RST OK
2.3 AT+FRST — Factory Reset
Resets all configuration to factory defaults, formats the storage, and restarts the device.
AT+FRST OK

3. Device Information Commands
3.1 AT+GDN — Get Device Name
Returns the device name, which is also used as the mDNS hostname. The name is derived from the last three bytes of the device MAC address.
AT+GDN +DN:luxafor_signal-3F2A1B
3.2 AT+GMN — Get Manufacturer Name
AT+GMN +MN:SIA GREYNUT
3.3 AT+GID — Get Device ID
Returns the unique device identifier (the Wi-Fi MAC address as a 12-digit hex string).
AT + GID +ID:A1B2C3D4E5F6
3.4 AT+GFV — Get Firmware Version
AT+GFV +FV:1.0
3.5 AT+GHV — Get Hardware Version
AT+GHV +HV:1.0
3.6 AT+GESPV — Get ESP-IDF Version
Returns the ESP-IDF version the firmware was built with.
AT+GESPV +ESPV:v5.5.1
3.7 AT+GESPCT — Get Firmware Compile Time
AT+GESPCT +ESPCT:Mar 10 2026 14:22:31
3.8 AT+GCHI — Get Chip Information
Returns chip model, silicon revision, core count, and a comma-separated feature list (possible features: WiFi, BT, BLE, EmbFlash, EmbPSRAM, ExtPSRAM).
AT+GCHI +CHI:ESP32-S3,2,2 ,WiFi,BLE,ExtPSRAM
3.9 AT+GBLV — Get Bootloader Version
Returns the version stored in the factory application partition. If it cannot be read, the running firmware version is returned instead.
AT+GBLV +BLV:1.0
3.10 AT+GBLCD — Get Bootloader Compile Date
AT+GBLCD +BLCD:Jan 15 2026 09:05:12
3.11 AT+GBLIDF — Get Bootloader ESP-IDF Version
AT+GBLIDF +BLIDF:v5 .5.1
3.12 AT+GTEMP — Get Internal Temperature
Returns the internal chip temperature in degrees Celsius with one decimal place. On sensor failure a textual error such as ERROR: Failed to read temperature is returned.
AT+GTEMP +TEMP:42.5
3.13 AT+GLEC — Get Last Error Code
Returns the most recent error code (see Section 9). -1 means no error has occurred yet.
AT+GLEC +LEC:-1
3.14 AT+GLRR0 / AT+GLRR1 — Get Last Reset Reason
Return the last reset reason code for CPU core 0 and core 1 respectively.
AT+GLRR0 +LRR0:1 AT+GLRR1 +LRR1:14
4. File and Storage Commands
4.1 AT+GFL — Get File List
Lists all files on the storage, one +FL: line per file with name, type, and size in bytes, followed by a final OK.
AT+GFL +FL:notify.mp3,file,48213 +FL:config.json,file,1024 +FL:logo.bmp,file,32768 OK
4.2 AT+GML — Get MP3 List
Lists only MP3 files, one +ML: line per file, followed by a final OK.
AT+GML +ML:notify.mp3,48213 +ML:alarm.mp3,102400 OK
4.3 AT+GFSS — Get Free Storage Size
Returns free storage space in bytes.
AT+GFSS +FSS:1439744
4.4 AT+GTSS — Get Total Storage Size
Returns total storage size in bytes.
AT+GTSS +TSS:1572864
4.5 AT+GF — Get (Download) File
Syntax: AT+GF=<file_name>
Requests a file from the device. The device replies with the file name and size, then streams the raw file bytes, and finishes with OK.
AT+GF=config.json +GF:config.json,1024 <1024 raw bytes follow> OK
If the file does not exist, the device answers ERROR:3 (file_not_found).
4.6 AT+UF — Upload File
Syntax: AT+UF=<file_name>,<file_size>
Uploads a file to the device. The device validates the size, checks the available storage space, and answers with the prompt >. The host must then send exactly <file_size> raw bytes.
AT+UF=notify.mp3,48213 > < host sends 48213 raw bytes > OK

4.7 AT+DF — Delete File
Syntax: AT+DF=<file_name>
AT+DF=old_sound.mp3 OK AT+DF=missing.mp3 ERROR:3
4.8 AT+DL — Download File from URL
Syntax: AT+DL=<url>,<file_name>
Downloads a file from an HTTP(S) URL to the device storage.
AT+DL=https://example.com/sounds/chime.mp3,chime.mp3 +DL:OK,chime.mp3
A failed download answers:
AT+DL=https://example.com/missing.mp3,missing.mp3 ERROR:0,DOWNLOAD_FAILED

4.9 AT+DPR — Download Progress Reporting
Syntax: AT+DPR=<0|1>
Enables (1) or disables (0) progress reporting for AT+DL downloads over the cloud connection.
AT+DPR=1 OK
4.10 AT+AFSS — Activate File Storage Scan
Requests a re-scan of the file storage.
AT+AFSS OK
4.11 AT+FD — Format Disk
Formats the storage. All files are erased.
AT+FD OK

5. LED Commands
5.1 AT+SC? — Get Solid Color
Returns the current solid color as an LED bit mask and an RRGGBB hex color.
AT+SC? +SC:63,FF8000
5.2 AT+SC= — Set Solid Color
Syntax: AT+SC=<led_pins>,<color>
Parameters: <led_pins> is a decimal bit mask selecting which LEDs to set (e.g. 63 = all six LEDs); <color> is an RRGGBB hex value.
Set all LEDs to orange:
AT+SC=63,FF8000 OK
Set only LED 1 and LED 2 (mask 3) to blue:
AT+SC=3,0000FF OK
5.3 AT+CP? — Get Custom Pattern
Returns the stored custom pattern, one +CP: line per pattern step with LED mask, color, speed, and delay, followed by a final OK.
AT+CP?
+ CP:63,FF0000,10,500
+ CP:63,000000,10,500
OK
5.4 AT+CP= — Set Custom Pattern (Prompted)
Syntax: AT+CP= Begins a custom pattern upload. The device answers with the prompt > and then expects <pattern_line_count> pattern lines in the format:
+CP:<led_pins>,<RRGGBB>,<speed>,<delay>
AT+CP=2 > + CP:63,FF0000,10,500 + CP:63,000000,10,500 OK
5.5 AT+CPD= — Set Custom Pattern (Direct)
Syntax: AT+CPD=<pattern_lines>
Sets a custom pattern in a single command without the prompt step. The pattern lines are concatenated in the parameter, separated by \r\n.
AT+CPD=+CP:63,FF0000,10,500\r\n+CP:63 ,000000,10,500 OK
5.6 AT+PP? — Get Pattern Play Status
AT+PP? +PP:1,255
Here 1 means a pattern is playing and 255 is the repeat count (255 = infinite loop).
5.7 AT+PP= — Play / Stop Pattern
Syntax: AT+PP=<0-1>,<1-255>
Parameters: First value: 1 = play, 0 = stop. Second value: repeat count; 255 loops forever.
Play the stored pattern five times:
AT+PP=1,5 OK
Stop pattern playback (the device returns to the solid color):
AT+PP=0,1 OK
If no custom pattern is stored, the device answers ERROR:4 (invalid_size).
5.8 AT+GDPL — Get Default Pattern List
Lists the built-in patterns, one +DPL: line per pattern, followed by a final OK.
AT+GDPL +DPL:0,Police +DPL:1,Rainbow +DPL:2,Breathing +DPL:3,Strobe ... OK
5.9 AT+DP= — Load Default Pattern
Syntax: AT+DP=
Loads a built-in pattern by ID (see AT+GDPL) as the current custom pattern. Use AT+PP= to play it
AT+DP=1 OK AT+PP=1,255 OK
6. Audio Commands
6.1 AT+PLAY? — Get Playback Status
Returns the current MP3 file name, whether it is playing, the requested repeat count, and the current iteration.
AT+PLAY? +PLAY:notify.mp3,1,2,1
When nothing is playing:
AT+PLAY? +PLAY:NONE,0,0,0
6.2 AT+PLAY= — Play MP3 File
Syntax: AT+PLAY=<filename>[,<repeat_count>]
Plays an MP3 file from the storage. The repeat count is optional and defaults to 1.
AT+PLAY=notify.mp3 OK AT+PLAY=alarm.mp3,3 OK AT+PLAY=missing.mp3 ERROR:3
6.3 AT+STOP — Stop Playback
AT+STOP OK
6.4 AT+VOL? — Get Volume
AT+VOL? +VOL:80
6.5 AT+VOL= — Set Volume
Syntax: AT+VOL=<0-100>
AT+VOL=60 OK AT+VOL=150 ERROR:2
6.6 AT+AVIS? — Get Audio Visualizer Status
AT+AVIS? +AVIS:1,50
6.7 AT+AVIS= — Configure Audio Visualizer
Syntax: AT+AVIS=<0|1>,
Enables or disables the audio visualizer and sets its refresh rate. The refresh rate must be between 10 and 1000 milliseconds.
AT+AVIS=1,50 OK AT+AVIS=1,5000 ERROR:2
7. Wi-Fi Commands
7.1 AT+WM? — Get Wi-Fi Mode
Modes: 0 = OFF, 1 = Station, 2 = Access Point, 3 = Station + AP.
AT+WM? +WM:1
7.2 AT+WM= — Set Wi-Fi Mode
Syntax: AT+WM=
Switches the Wi-Fi mode. Cloud services are stopped when Wi-Fi is turned off and restarted when connectivity returns. In AP modes the local HTTP server is started automatically.
AT+WM=1 OK AT+WM=0 OK
7.3 AT+STA? — Get Station Status
Returns connection flag, SSID, IP address, and RSSI.
AT+STA? +STA:1,HomeNetwork,192.168.1.42,-51
When disconnected:
AT+STA? +STA:0, ,0.0.0.0,0
7.4 AT+STA= — Connect to Network
Syntax: AT+STA=<ssid>,<password>
Saves the station credentials. If the device is already in STA or STA+AP mode it reconnects immediately; otherwise switch modes with AT+WM=1.
AT+STA=HomeNetwork,secretpassword OK AT+WM=1 OK
7.5 AT+DSTA — Disconnect Station
AT+DSTA OK
7.6 AT+GIP — Get IP Address
Returns the station IP address, or 0.0.0.0 when not connected.
AT+GIP +IP:192.168.1.42
7.7 AT+AP? — Get Access Point Status
Returns the AP SSID and the number of connected stations, or DISABLED when the AP is off.
AT+AP? +AP:Luxafor-Signal-AP,2
AT+AP? +AP:DISABLED
7.8 AT+AP= — Configure Access Point
Syntax: AT+AP=<ssid>,[,<channel>,<max_conn>,<auth>]
Defaults: channel 6, maximum 4 connections, WPA2-PSK authentication.
Configures and starts the access point. The device switches to AP mode if it is not already in an AP-capable mode.
AT+AP=Luxafor-Signal-AP,ap-password OK AT+AP=Luxafor-Signal-AP,ap-password,11,2,3 OK
7.9 AT+APST? — List AP Stations
Returns the number of stations connected to the AP, followed by one line per station with MAC address, IP address, and RSSI, and a final OK.
AT+APST? +APST:2 +APST:AA:BB:CC:DD:EE:01,192.168.4.2,-40 +APST:AA:BB:CC:DD:EE:02,192.168.4.3,-63 OK
7.10 AT+APKICK= — Kick Station from AP
Syntax: AT+APKICK=<mac_address>
AT+APKICK=AA:BB:CC:DD:EE:02 OK
7.11 AT+WSCAN= — Start Wi-Fi Scan
Syntax: AT+WSCAN=[<ssid_filter>][,<auth_filter>]
Starts an asynchronous Wi-Fi scan. Both filters are optional: the SSID filter is a caseinsensitive substring match, the auth filter matches the security mode name (e.g. WPA2, OPEN).
Read the results afterwards with AT+WSCAN?.
Scan everything:
AT+WSCAN= OK
Scan for WPA2 networks whose SSID contains home:
AT+WSCAN=home,WPA2 OK
7.12 AT+WSCAN? — Get Scan Results
Returns the number of matching networks, followed by one line per network with SSID, channel, RSSI, and auth mode, and a final OK. While a scan is still running the device answers with a single +WSCAN:BUSY line.
AT+WSCAN ? +WSCAN:3 +WSCAN:HomeNetwork,6,-52,WPA2 +WSCAN:CoffeeShop,1,-70,OPEN +WSCAN:Neighbor,11,-78,WPA/WPA2 OK
While scanning:
AT+WSCAN? +WSCAN:BUSY

8. Local Server Commands
8.1 AT+GLHA — Get Local Host Address
Returns the mDNS hostname, IP address, and port of the local HTTP server.
AT+GLHA +LHA:luxafor_signal-3F2A1B.local,192.168.1.42,8080
8.2 AT+LS? — Get Local Server Status
Returns whether the server is enabled, its port, whether authentication is required, and the current run state (RUNNING or STOPPED).
AT+LS? +LS:1,8080,1,RUNNING
8.3 AT+LS= — Configure Local Server
Syntax: AT+LS=<enable>,<port>,<auth_token>
Constraints: The port must be between 80 and 65535. Providing a non-empty token enables authentication.
AT+LS=1,8080,my-secret-token OK AT+LS=1,42,token ERROR:2
8.4 AT+LT? — Get Auth Token
Returns the current local server authentication token. On failure a textual error in the form ERROR:<reason> is returned.
AT+LT +LT:8f3a1c9e2b7d4056
8.5 AT+LT — Regenerate Auth Token
Generates a new random authentication token and returns it. Clients using the old token must be updated.
AT+LT +LT:4e7b2d901a5c8f36
9. Error Codes
Failed commands reply with ERROR:<code>. The last error code can also be read back with AT+GLEC.

10. Complete Session Examples
10.1 First-Time Setup
AT OK AT+GDN +DN:luxafor_signal-3F2A1B AT+WSCAN= OK AT+WSCAN? +WSCAN:2 +WSCAN:HomeNetwork,6,-52,WPA2 +WSCAN:Neighbor,11,-78,WPA/WPA2 OK AT+STA=HomeNetwork,secretpassword OK AT+WM =1 OK AT+STA? +STA:1,HomeNetwork,192.168.1.42,-51
10.2 Uploading and Playing a Sound
AT+GFSS +FSS:1439744 AT+UF=notify.mp3,48213 > <host sends 48213 raw bytes> OK AT+VOL=80 OK AT+PLAY=notify.mp3,2 OK
10.3 Creating and Playing a Light Pattern
AT+CP=2 > +CP:63,FF0000,10,500 +CP:63,000000,10,500 OK AT+PP=1,255 OK AT+PP? +PP:1,255 AT+PP=0,1 OK