Creality Falcon A1C support

Title:
Creality Falcon A1C – Falcon HTTP connects, but Frame and console GCode do not work

Post:

I’m testing the new Creality Falcon HTTP GCode flavor in LightBurn 2.2 with a Creality Falcon A1C 10W over Wi-Fi.

The connection itself seems to work correctly. LightBurn identifies the machine as:

Connected: Creality Falcon A1C
Laser: BLUE-10W-DIODE

The Home button in LightBurn works and the machine homes normally over Wi-Fi.

However, I’m seeing these problems:

  1. Frame does not work

Pressing the Frame button does not make the machine move.

  1. Console GCode commands do not work

For example:

$H

does nothing.

  1. User macros do not work

My A1C autofocus macro is:

$HZ1

This works over the normal USB/GRBL connection, but does nothing when using the Falcon HTTP connection.

So currently:

Wi-Fi connection / identification: WORKS
Home button:                       WORKS
Frame:                             DOES NOT WORK
Console GCode:                     DOES NOT WORK
User macros:                       DOES NOT WORK

It looks like some dedicated HTTP commands, such as Home, are reaching the A1C, but Frame and raw GCode commands are not.

Machine/setup:

Creality Falcon A1C
10W blue diode module
Wi-Fi connection
Windows 10
Custom GCode device
GCode Flavor: Creality Falcon HTTP

Let me know if you need logs or if there is anything else I can test.

Hi Jonas, and welcome to the forum.

This is the first time I’ve seen the Falcon A1C.

Thank you for your report!
Apparently, Creality uses different webhooks for this device. We’ve tested the new “Creality Falcon HTTP” flavor on the A1 Pro, and T1.

I didn’t see Creality’s instructions on how to add this device to LightBurn, but it looks like they just created this wiki entry and might still be working on it.

As a start, can you check for a firmware update on the A1C and install it if available?

Did Creality send you a LightBurn device profile for this laser?
If you can send us your exported device I’d like to see if there might be a settings mismatch.

Hi, thanks for the reply.

Creality did not provide me with a specific A1C LightBurn device profile.

I do have a Falcon A1 .lbdev profile that I downloaded and used when I later set up the A1C over USB, and that works.

For the WiFi connection that I reported the issue with, I did not use that profile. I created a separate device manually in LightBurn 2.2 using the new Creality Falcon HTTP flavor.

My A1C currently reports firmware:
CV40mini-MASTER-Release V1.1.2 20260903-1149

I couldn’t find a newer A1C firmware on Creality’s website, but I’ll check directly on the machine when I get home from work today to see if an update is available.

I’ve attached the exported device for the WiFi/HTTP setup so you can check the settings.

Thanks for looking into this!
FalconA1C_test.lbzip (2.0 KB)

Hi @zyberbob I’m the dev who’s writing the Falcon support.

I’m glad it connects and identified, good start, we haven’t updated the driver to support the A1C fully yet. I don’t have one, you’re the first to try it.

But to temper some expectations:
Console GCode and User Macros will NOT work on any of the Falcons over HTTP. The remote API is all about job submission, and technically does not have a way to run individual commands. It’s annoying. We have to map our functions to REST calls.

The console is still there so you can see API messages, but entered commands don’t actually go anywhere. We will improve that UI.

The Z Focus button should call the AutoFocus function, no need for that macro.

The features that should work are:

  • Jogging
  • Framing
  • Running Jobs (arguably the most important)

But if you could not frame, then there might an API difference between the A1 and A1C. I’ll look into it.

3 Likes

Thanks, that explains the console and macros.

Yes, jogging was working over HTTP, but framing was not working in my test.

I’m happy to test anything you need on the A1C, since you don’t have one available. Just let me know what you want me to try.

Hi LB team - I have access to an A1C if I can assist with testing etc. It’s my Dad’s so there may be some turnaround time, but I can do it.

It’s USB connected and I can manually create a GRBL device and home the laser. That’s as far as I can get. Jogging causes an ALARM 1.

I’ve tinkered with a few “invert” pins but ended up with the laser groaning at me - assume teeth on the G2 belt or similar slipping.

These are the out of the box settings from a $$ in the LB console and an export of machine settings.

Original Creality Falcon A1C settings 08-10-26.txt (609 Bytes)

Original Creality Falcon A1C settings Light burn.lbset (5.9 KB)

No device profile is provided with the printer - no SD card or flash drive etc. Just a QR code leading to Creality’s software.

This is the pre-release version installed: https://release.lightburnsoftware.com/LightBurn/RC/LightBurn-v2.2.00-RC-5/LightBurn-v2.2.00-RC-5-bd7893a.exe

Hi,

For me the falcon A1C works fine with USB(just use the Falcon A1.lbdev), WiFi is the problem.

Hello Mike,

Thank you for joining in.

The Creality Falcon HTTP GCode flavor we discussed earlier uses Creality’s remote API instead of plain GRBL commands.

It’s good to hear that the A1C connects when using the GRBL device type instead.
ALARM:1 means

A limit switch was triggered while the machine was moving.

Any chance, you were jogging the machine towards the limit switches?
If the Jog buttons in the Move window don’t move the head in the correct direction, you probably need to change the Device Origin. On the A1C, this should be top left, as far as I can tell.

Thanks for sending the GRBL settings of the A1C.
Some of those $-values are Creality-specific and not publicly documented.

On my A1 Pro, the $ES command responds with a list explaining these settings.

When you get the chance, could you send us the output of those commands, one after the other pressing enter after each?

$$
$ES
$i

There’s also the $help command with a couple options, if you are curious to find out more.
I don’t recommend changing any of those firmware values, unless you have a good reason to do so :slight_smile:

Using the GRBL device type as you do is probably the way until we get Creality’s feedback about the API differences for the A1C.

Can you post a link to where you found this, or upload your exported device profile?

(I’m guessing, that Jonas had a wrong device origin set. That would explain why jogging didn’t work.)

Looks like it may have been supplied with the A1?

lightBurn Connection Guide | Creality Wiki

Doh - should have read further:

From: lightBurn Connection Guide | Creality Wiki

For LightBurn version 1.7.08 or lower, use /falcon_a1_pro.lbdev , you can find Auto Focus, Home and Z Home in [Consols].

For LightBurn version 2.0.00 or higher, use /falcon_a1_pro_(lightburn_2.0.00+).lbzip , you can find Auto Focus, Home and Z Home in [Macros].

But that’s the A1 Pro - worth a try?

Thanks for pasting the link.
Well, their current A1 Pro settings file just uses the (old) GRBL-LPC device type and some macros.

I’ve now created this device profile for the Creality A1C, based on what we know so far.
Falcon A1C Custom GCode (Attempt Aa).lbzip (34.7 KB)

Using the Custom GCode device type
This allows us to enter the necessary special commands for Homing, and focussing


So you can use these buttons in the Move window, instead of the macros

I entered the correct dimensions, and changed the Origin to top left. (@emeyedeejay that should solve the ALARM:1 when jogging)

I’m curious to hear how this works :slight_smile:

The long term goal is probably to implement Creality’s HTTP protocol for the A1C, but the GRBL protocol should work already.

BTW, there’s a chance that this already works over WiFi. You would need to edit the device and change the connection method:

Enter the machine’s IP in the next step, and leave everything else by clicking “Next” a couple times.

What’s the value of the HTTP protocols (Creality, Xtool) versus the GRBL protocols?

I am pretty sure they chose this so you could run your machine from a cell phone or tablet app.

Falcon A1C with the Creality Falcon HTTP flavour: what works, what breaks, and why

My setup: Creality Falcon A1C (5 W), firmware 1.1.2 (CV40mini), LightBurn 2.2.00-RC-5 on macOS, Custom GCode device using the “Creality Falcon HTTP” flavour over Wi-Fi.

Working: connecting and identifying the machine, state polling, jogging, Home, Z Focus (/work/probe), file upload, start and stop, and the camera added as a network camera at http://<laser>:8080/media/getCapturePhoto. Lens calibration and workspace alignment both work with it.

Three things don’t work. I pulled the laser’s HTTP replies and its firmware log (GET /work/download?file=new_log.log) to find out why. Log lines and the fixes are at the bottom.

1. “Transfer failed” on Start and Frame, even though the file arrived

The A1C replies to POST /work/upload?action=upload with:

{"errorcode":0,"payload":{"desc":"File uploaded successfully"}}

There is no payload.result in that reply. The driver’s webapi_creality_falcon_v1.json reads result with a lacuna of -1 and treats anything other than 0 as an error, so every upload is reported as failed and /work/start is never sent. The file is on the laser (GET /work/download?file=tmp.gcode returns it), and sending GET /work/start by hand runs it fine.

2. The A1C rejects inline comments, and that breaks jobs with relative moves

The flavour writes G21;Restore metric mode and G90;Restore absolute mode. The A1C’s parser logs

gc_execute_line err:1 line:G90;RESTOREABSOLUTEMODE

and throws away the whole line. The camera alignment pattern ends its G91 block with that G90. With the G90 gone, the machine stays in relative mode, the next absolute moves drive it into the Y limit switch (alarm 01001601), and the job stops at about 50 %. Falcon Design Space only writes comments on their own lines, which is why its files run.

3. Frame never stops

GET /work/preview loops until /work/stop is sent. The firmware frames once only if the file’s header contains ; Frequency: single. Falcon Design Space writes ; Frequency: cycle or single in every file. With that line added to a frame file, the A1C traces the box once and goes back to idle in about 5 seconds.

Two smaller notes. POST /work/home with a JSON body homes X and Y; it is useful after a job because the A1C parks the head in the middle of the bed, right in front of the fixed camera. Also, the camera overlay is only accurate at the autofocused height. The alignment wizard let me burn the pattern on an unfocused bed, and the resulting overlay was off by 19 mm until I redid the alignment after focusing. A note in the docs would save others the same hour.

I am running all three fixes in a small HTTP proxy between LightBurn and the laser. With them in place the A1C works end to end from LightBurn: frame, engrave, and camera placement checked on wood. I can send logs or test builds.


Firmware log excerpts (laser clock is UTC)
  1. Upload reply with no result:
I (20261008:21:16:53.853) http servser: action=upload
I (20261008:21:16:53.853) http servser: Content-Type=application/octet-stream
I (20261008:21:16:53.860) http servser: Start receiving file, size=38583
I (20261008:21:16:54.124) http servser: File upload finished: /sdcard/tmp.gcode (38583 bytes)
I (20261008:21:16:54.125) http servser: HTTPD_JSON_RESP  : {"errorcode":0,"payload":{"desc":"File uploaded successfully"}}
  1. The inline comment rejected during the alignment pattern, then the Y limit:
I (20261008:21:25:24.942) Log: [E][./main/Grbl/protocol.cpp][protocol_main_loop][1130]Sgc_execute_line err:1 line:G90;RESTOREABSOLUTEMODE
I (20261008:21:25:32.375) limits: Y-axis hardware limit bit trigger
I (20261008:21:25:32.375) device_info: STATE_ALARM >>> <13, 0>
I (20261008:21:25:32.401) device_info: ----------device_alarm--------- errorLevel:1, errorCode:01001601
I (20261008:21:25:32.761) http servser: HTTPD_JSON_RESP  : {"errorcode":0,"payload":{"state":4}}

Position after the abort was <103.238,152.250,...> on a 150 mm bed, and /work/progress read 0.504686. The same file with the comment tails removed (G90 alone on its line) ran to 100 % with no alarm.

  1. Framing. Falcon Design Space’s file, which has ; Frequency: single in the header:
I (20261007:22:46:27.071) preview: exit PreviewTask when mode is sigle...

LightBurn’s frame file, which has no such line, cycles until stopped:

I (20261008:22:07:42.853) preview: Lvie preview file eof...
I (20261008:22:07:47.134) preview: Lvie preview file new clcye begin...
I (20261008:22:07:47.136) Log: [I][./main/user_app/preview.cpp][LivePreviewTask][277]SPreviewTask END, duto user stop preview

Falcon Design Space’s job header on this machine, for comparison:

; Falcon Design Space 1.10.7
; GRBL device profile, absolute coords
; Bounds: X24.2461 Y70.2744 to X100.0547 Y108.6744
; Feed speed: F6000.00
; Laser type: 5W Diode
; materialInfo: 0.65mm Brown leather
; Processing Mode: Plane Engraving
Fixes

1. webapi_creality_falcon_v1.json, upload_file.response.extract. The A1C never sends result on upload, so a missing value should count as success (or success should be keyed off errorcode):

{"name": "result",       "path": "payload.result", "lacuna": 0},
{"name": "resultStatus", "path": "payload.result", "lacuna": "ok",
 "value_map": {"0": "ok", "default": "error"}}

2. G-code output for the creality_falcon flavour. No comment on the same line as a command. Today that is G21;Restore metric mode and G90;Restore absolute mode, in the header and again after every G91 block. Put the comment on its own line or leave it out.

3. Frame jobs for this flavour. Make the first line ; Frequency: single. Checked on firmware 1.1.2: one pass, then idle.

This is how my proxy does 2 and 3 (Python, standard library):

FRAME_HEADER = "; Frequency: single"

def sanitise(text):
    out = []
    for line in text.splitlines():
        if line.startswith(";") or not line.strip():
            out.append(line); continue              # comment lines are fine on their own
        if ";" in line:
            line = line.split(";", 1)[0].rstrip()   # 'G90;Restore absolute mode' -> 'G90'
        out.append(line)
    fixed = "\n".join(out) + "\n"
    powered = any(int(m) > 0 for m in re.findall(r"S(\d+)", fixed))
    if not powered and FRAME_HEADER not in fixed:   # no S above 0 anywhere = a frame job
        fixed = FRAME_HEADER + "\n" + fixed
    return fixed

The proxy also adds payload.result = 0 to the upload reply when it is missing, and sends POST /work/home once a started job returns to idle. The full file is about 130 lines; I can post it if it helps.

1 Like

I will get this asap - aiming to remote to Dad’s PC tonight and will do so then.

Hello Zac,

Thank you for your extensive report about the A1C. It’s a bit much for me to digest, but Jeremy might find one or two important details.

What I can say, for my part:

Yes, the Custom GCode device type currently doesn’t have the option to specifically set it to “Continous Framing”. Thanks for the hint about the ; Frequency: single option for the GET /work/preview request. I’m adding this to our existing task to add continous framing.


See if enabling “Suppress Comments” in the Custom GCode tab helps. (I’m unsure sure if this applies when the HTTP protocol is used.)


“Return to Finish Position” should allow you to override this behavior. Though, it might introduce another issue. Please let us know. :slight_smile:


That’s a known pitfall on lasers with a moveable bed where the distance between material surface and camera changes with the focal height.
We talked about this internally, and as far as I know, the camera docs on this part are being refined currently. I’ll forward your note to the docs team. Thanks for mentioning it.


There is a small note to focus the laser before engraving the target markers in the Alignment wizard, but that but that could be emphasized some more.

We have a task to ensure that the Machine Control options are visible by default and don’t need to be expanded. That would also make the Focus-Z button more visible.
Does this button work on your A1C? (The same button is also available in the Move window.)

The docs do mention that the laser needs to be focused before aligning, but I can work on making that more visible, along with a note that you need to focus before using the overlay. Thanks for the feedback. :slightly_smiling_face:

1 Like