Support for xTool M1?

As topic states - do we have any information about the possibility of future support? I have cross posted this on the Makeblock forums.

Hi Nathan, did you ever hear back from LIGHTBURN?

I did not, but xTool/Makeblock confirmed that the firmware of M1 is not compatible with LB at this time - they tried to say it was complicated because of the cutting tool. I said to them just make it work with the laser and save the cutting tool for XCS, that’s fine. They also tried to tell me the D1 was a “more professional” machine, hence it working with LB. Which I said was silly because they both have the same laser. I don’t hold out much hope and I’m pretty disappointed by it - I never would have bought the machine if I knew I’d be stuck with their crappy house software. If you are a M1 owner, I’d reach out to xTool - the more of us that complain, the more likely they will patch the firmware, like they did with the D1 to make it work.

As a work around, they told me that gcode from LB will work imported through their LaserBurn software - the software they are sunsetting in favour of XCS (which cannot import GCode). Apparently xLB needs to be run in developer mode to be able to import GCode from LB. This is after 6 emails back and forth they tell me this, and still have not told me how to start xLB in developer mode, nor can I find the docs explaining how that works. All and all dissapointed in their docs. A lot of flash, not a ton of substance.

The whole thing seems crazy, because if the machine can run of GCode then it should be fairly straightfoward to interface it with other software, no? I’m coming from the 3D printing world and use all sorts of mainboards, firmware, slicers, etc all unified by the use of GCode, so it’s a world I’m somewhat familiar with.

Meanwhile my demo license of LB is set to run out in 6 days or so and I have not yet been able to actually use it to try it out. :frowning:

1 Like

Hi Nathan,

I’ve asked the LightBurn support and they said that there are currently no plans to support the M1 since they have their hands full with galvo laser support. So I set out to reverse engineer the xTool M1 communications protocol. Turns out their software just uploads the zipped G-code files to the machine via a HTTP connection over USB (which emulates a network interface) or Wifi.

I’ve set up a github project ( and teamed up with another developer and wrote some python scripts to use that HTTP interface to upload custom G-code. It includes a script to pre-process and upload Marlin G-code from LightBurn.

It’s a work in progress and still quite hacky, and the documentation is rather thin, so step carefully if you decide to try it out. :wink:


PS: If you ask them nicely, the LightBurn team will likely extend your trial period (they gave me 14 more days to figure out my scripts).



This makes sense as xTool told me to upload G-Code using their LaserBurn. Also, they told me using developer mode can void my warranty. :face_with_raised_eyebrow:

I look forward to trying out your gizmo!

I will throw myself upon the mercy of the Lightburn team, thanks for the tip. If I have to keep using XCS I’ll end up opening my wrists in frustration. It’s. So. Bad. I don’t understand why these companies insist on developing second rate in house software, instead of partnering with already great solutions and making their hardware work with those. Or just leaving the protocols open and well documented so others can adapt to fit. But again, I’m a 3D printing guy - used to open source great docs and a huge community support.

Developer mode you say?

1 Like

Oh! Sorry for the late reply. Here is what XTool support sent me (text and screenshot) I have not tried this avenue yet and take no responsibility if turning on developer mode results in you becoming sterile:

Please note: If the machine has problems caused by using the developer mode, the warranty cannot be guaranteed. So please use it carefully. Press Ctrl+F1 at the same time to enter the developer mode. After selecting the Gcode file, click Send on the left, and then press the button on the fuselage.

Also note - this is using their Laserbox software, not the newer XCS

Thank you. The LaserBox software is all that is compatible with their C02 machine that I have. So this is good info.

I have a pull request for you sir

Has anybody got the camera working in LightBurn? I can take pictures using @fritzw’s xtm1_toolkit, and then I’ve been trying to create a virtual camera using akvirtualcamera to show the captured image. Skype can see my virtual camera but LightBurn can’t.

Yes I’ve got it working, somewhat (see below). However, the maximum camera resolution in LightBurn seems quite low compared to the ~4000x3000 pixels of the M1 camera, so the resulting pictures look quite blurry in LB. Also, lens calibration in LB is a bit tricky because the camera is mounted at an angle, so you need to place the calibration pattern at an angle in the build chamber. Camera orientation calibration was also tricky, because you can’t save the G-code for the calibration pattern in LB, only send it live to the laser cutter. That was the initial reason I went down the ‘virtual serial port’ road (did not understand how TCP worked in LB at the time).

The calibration result appeared okay at first glance, but I did not check accuracy and did not pursue it further. However, the XCS software downloads a file called ‘points.json’ from the laser when starting. My guess is that those are some form of camera lens calibration data. Likely matching coordinates of distorted and undistorted image coordinates or something like that. Understanding that might help in writing a webcam adapter which replaces the lens calibration in LightBurn (or at least makes it easier).

The problem with LB not seeing the camera seems to be that most ‘virtual cameras’ are based on user space video pipelines (e.g. registering a DirectShow source DLL on Windows), but LightBurn talks to the Kernel to enumerate camera devices (at least that’s my educated guess).

The only virtual camera that LightBurn could see was SplitCam on Windows. Haven’t tried on Linux, have no Mac. You can add the camera URL in SplitCam either as an IP camera or as a web browser source, however the SplitCam aspect ratio is always 16:9 and the camera is 4:3 so you always lose image space or the image is distorted (might be fixable through lens calibration).

Yeesh. Good effort. What’s the maximum resolution in LightBurn then?

By the way, xTool support gave me a somewhat more encouraging reply yesterday than what they said to you a week earlier:

M1 can’t support LightBurn at the moment. We are discussing with LightBurn about the possibility of cooperation, it may take some time.

My guess would be FullHD, but I did not really check. The image in XCS is MUCH clearer however.

I‘ve just added camera streaming (very slow) and camera distortion correction to my script.

That does not immediately make it work with LightBurn, but from there it should be easy to stream undistorted JPEG images to SplitCam, which should make the calibration process in LB easier and reduce the blurriness in LB, because no pixels are wasted on areas which are outside the work area anyway.

Can anyone point me in the direction of getting this to work? Never used light burn. But I got years of experience with 3d printing. I Wanna test out light burn on the M1 when I get it tomorrow.

Also thanks for all the work you done with this.

I’m a very experienced developer (making games mostly with my own engines for 25 years). I’ll check this out and see what I can offer for support or co-dev. I’ve use Lightburn with my own self-made CNC-router/engraver, and REALLY want it to work with the M1. Xtool’s own software is unbelievably rough and lacking so many obvious features.

I‘ll have to write up a „Getting Started“ section in the Readme some time soon (or maybe someone else will?). But basically it boils down to this:

  • install LightBurn
  • install Python 3
  • install Python packages: pip install pyserial numpy scipy tkinter
  • Import Marlin device from github repository into LightBurn
  • create Design in LightBurn and export G-code
  • run python3 --upload-auto FilenameOfExportedGcode
  • wait until Button on M1 flashes blue
  • press Button to start Laser cutting
  • stand by to switch off laser power immediately if anything goes wrong

Thanks can’t wait to test it out Monday. I took my M1 to work. Going to see about expense reporting it lol. If

I installed Python 3.10.7 and when trying to install the tkinter package I received an error message “Could not find a version that satisfies the requirement tkinter. No matching distribution found for tkinter.” Is this package a critical one to how the scripts function?