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 
Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us