Tronxy X3S Firmware: Flashing Marlin Firmware

My Journey with the Tronxy X3S Begins

**Disclaimer: Inov3D will not be held liable for anything that happens while loading or using this modified firmware**

Tronxy X3S Firmware – After watching numerous Youtube reviews of the Tronxy X3S and the Creality CR-10, I decided to pick up a Tronxy X3S. This is Tronxy’s clone of the Creality CR-10, but with a cheaper price tag. I had been looking to buy a printer with a larger print area and the price on the Tronxy X3S was reasonable, in my opinion, for a printer of this size.

Especially, considering that it’s made from 20×20 aluminum, comes mostly assembled, and includes a nice looking electronics enclosure. The first printer I bought was the acrylic framed HICTOP Prusa I3 back in 2014, and I paid roughly the same price. After assembly, the HICTOP’s wiring looked like a rat’s nest, and the acrylic frame, over time, began to fail.

When the Tronxy X3s arrived, I assembled it in less than an hour. Things were looking good. Then, I started trying to run an initial print and the fun began.

 If you are interested in purchasing the Tronxy 3D printer X3S click here!


Which Slicer to Use?

I fired up Cura 15.04.6.  I use the older version because it works well for all my other printers, and I’m too cheap to bite the bullet and pay the $150 for Simplify3D.  After connecting the Tronxy X3S, I made sure I could manually control the Tronxy from Cura. So far, so good.  I sent the print over USB.  Nothing.  The message I was getting back over serial was saying “Unknown command” for every line of G-Code sent.  I also tried the latest version of Cura (v.3.2.1) and had no luck.

I wasn’t even getting feedback with Cura 3.2.1 to even know if the same thing was happening.  Just a whole bunch of nothing!  I decided to try to print using Slic3r and Pronterface to see if the issue carried over.  I fired up Slic3r and sliced my model, imported the G-Code over to Pronterface and sent the print.

Strange Z Issues

Low and behold, it was printing.  I did notice, that while the Tronxy X3S was heating up and preparing to print, the Z-axis would raise a few millimeters.  Once heated and homing was initialized just before the print, that few millimeters that the Z-axis raised seemed to be the home position that was used. So the print began a few millimeters above the bed.

Now, I did notice while browsing through the files on the flash drive included with the X3S, that Tronxy had included a copy of Repetier Host but no copy of Cura.  Every other printer I have bought has come with both.  So, I started wondering if maybe something was set up different in the Tronxy firmware to specifically work with Repitier.

An Issue with Firmware?

The Tronxy X3S was running Marlin v.1.1.7 dev.  So this really didn’t make sense.  I have worked with Marlin firmware quite a bit, every printer I own has been flashed with the latest version of Marlin.  I don’t remember seeing any specific settings that would do this. But, what the hell?  I’m no expert.  Maybe I missed something.  So, back to the Marlin source code I went.

While I was working through my issues with the X3S, I came into contact with the folks here at Inov3D.  Gearbest had just sent them a Tronxy X3S for review and they were also having issues with the Z-axis offset in the Tronxy firmware.

Time to Find the Solution!

We were both having issues that were preventing us from printing, and thus, preventing Inov3D from completing their review.  We decided to combine our efforts and collaborate on the review.  This made sense, since I was having some of the same issues, and a few that they weren’t experiencing (the Cura issue).

In the end, I decided that the issues I was having were all firmware related. Either from a corrupt firmware flash from Tronxy, or just some bad configurations in general in the Tronxy firmware. This isn’t uncommon with mass produced kits like this. Some of the HICTOP Prusa I3s also had issues with firmware that had the wrong step settings for some of the axes. At this point, flashing a new firmware to the Tronxy X3S was the best solution to the issues I was having.

Searching for Info

I began looking for a copy of the original Tronxy X3S firmware so I could reference the settings for Marlin 1.1.8 with no luck.  I found a few versions that people had configured, but the claims were that the LCD wasn’t working.  This wasn’t going to be acceptable.  So, I kept digging. Eventually I found the following Facebook post by Harold Gutsche.

The post is pertaining to the Tronxy X5S, but the Tronxy X3S uses the same board, and the only real issue while configuring Marlin was getting the LCD to work.

On to the Good Stuff

Items needed:

The following are instructions on how to flash the new Tronxy X3S firmware.

Preparing Arduino

  1. Download and install the latest version of the Arduino IDE.
  2. After that, download the Tronxy X3S firmware.
  3. Download the U8glib library for Arduino. To download from GitHub, select the “Clone or download” button and select “Download ZIP”
  4. Open Arduino IDE and go to File > Preferences.
  5. In the Preferences window, under the Settings tab, paste “” into the Additional Boards Manager URLs section and select “OK”.
  6. Under “Tools”, select Board: > Boards Manager…
  7. In the Boards Manager window, scroll down and select “Sanguino by Kristian Sloth Lauszus” and select “Install”. Once finished, select “Close”.
  8. Install the U8glib library for Arduino. Unzip the “” file you download in step 3 to your Arduino Libraries folder. In Windows 10 this should be “C:\Users\\Documents\Arduino\libraries”.
  9. Close Arduino IDE.

Prepare the Board

  1. Flash bootloader onto Tronxy X3S controller. (This step is required in order to be able to flash the Tronxy firmware over USB later.)
    1. Connect Arduino Uno to computer with USB cable.
    2. Open Arduino IDE.
    3. In Arduino IDE, under File, select Examples > Built in Examples > 11.ArduinoISP > ArduinoISP.
    4. Under Tools, select Board -> Arduino/Genuino Uno, Port -> (port your Uno is connected to), Programmer -> AVRISP mkII.
    5. Now upload the sketch to the Uno. Related image
    6. Once the sketch has finished uploading, connect the SPI interface from the Arduino Uno to the Tronxy controller board. Make sure to disconnect the USB cable so you don’t short anything. There are two ICSP interfaces (six pins) on the Arduino Uno. Use the ones on the backside of the Uno. (“ICSP for ATmega328” in image below.) The ICSP interface on the Tronxy controller is close to the side with the power connections, behind the USB port.    Image result for arduino Uno spi tronxy CXY-v.2-0508
    7. The connections should be MISO -> MISO, MOSI -> MOSI, SCK -> SCK, VCC (on UNO) -> 5v (on Tronxy), GND -> GND, Digital Pin 10 (~10 on Uno) -> Reset (on Tronxy).
    8. Reconnect USB cable from Uno to PC.
    9. In Arduino IDE, under “Tools”, select Board > “Sanguino”, Processor > “ATmega1284 or ATmega1284P (16MHz)”, Port -> the port your Arduino UNO is connected to, Programmer -> Arduino as ISP.
    10. Under Tools, select “Burn Bootloader”.
    11. When finished, disconnect all ICSP connections.
    12. Close Arduino IDE.

Flashing the Firmware!

  1. Copy and unzip the TronXY firmware to a folder on your desktop, or some other folder where you can find it easily.
  2. Open the TronXY firmware folder and navigate to the “Marlin” folder.
  3. Scroll down and double click on the Marlin.ino file to open the project in Arduino IDE. (If your files aren’t showing the .ino extension at the end, just look for the file named “Marlin” with an Arduino icon beside it.
  4. Connect USB cable from PC to Tronxy board.
  5. In Arduino IDE, under “Tools”, select Board > “Sanguino”, then Processor > “ATmega1284 or ATmega1284P (16MHz)”, then under Port, the port your Tronxy board is connected to, Programmer -> AVRISP mkII.
  6. Upload the new Tronxy firmware and enjoy.


Notes: When compiling and uploading the new Tronxy X3S firmware, you may see some warnings in Arduino IDE. These can be ignored. It is from where some of the pins are being redefined in the firmware so that the LCD will work properly.

The Problems are Gone!

After configuring and installing the new firmware on my Tronxy X3S controller, all my issues were fixed.  I can now use Cura, as I usually do.  There are no offsets to cause any issues.  Also, I made some changes that make the LCD controls respond better, and enabled a few more options in Marlin for extra settings.

This Tronxy X3S firmware should also work with any of the Tronxy machines that use the same CXY-v.2-0508 controller board. Only minor changes that will need to be made (i.e bed size settings).

Final Thoughts

I hope you all find this article useful. I spent quite a few man hours trying to get this sorted out and put together in hopes that I could save someone else the trouble of doing all the research to get their Tronxy X3S firmware running properly. Hopefully, this will get all you guys up and running and producing some awesome prints on this beast of a machine.

I’d like to thank Inov3D for allowing me to collaborate on their review of the Tronxy X3S and for allowing me to contribute this information to their community.

If you’re interested in the Inov3D review of the Tronxy X3S, you can find it here soon.



Show all Most Helpful Highest Rating Lowest Rating Add your review
  1. 1) This is awesome, thank you
    2) No access to the files, requires registration with Inov3d, and no way to do it from what I saw

    Great write up, was looking for firmware to address the inverted controls and hopefully get my E stepper plug working.

  2. hello I can not download marlin firmware for trendy x3s. link is down

  3. Thank You Sir!

    That worked. Thank you so much. I had trouble to find the corect miso/mosi pin on tronxy CXY-V.2-508
    It is so bad overprinted. I messured with voltmeter the 5v and gnd, afterwards i was able to read “sc” and “r”.
    So 50/50 chance for mosi/miso 🙂 i was lucky.

    Maybe you can add the pinout on that picture above?

    Thanks again man… made my day

  4. Hello.

    I worked this Article from A to Z but it dosn’t work for me.
    I have the Arduino Mega and still choose this instaed the Uno as shown.

    But in the Step i should upload the new Firmware… Arduino says: avrdude:can’t open Device \\.\COM3 Acces denied

    Whats wrong?

  5. FYI… no need to go looking for Tronxy’s OEM firmware before you start experimenting – you’re unlikely to find it since they don’t release it.

    Arduino IDE on Linux, MacOS and Windows includes avrdude and that’s what it uses to program boards. If you’re using a Freetronics USBasp programmer, a USBtinyISP programmer, or even “Arduino as ISP” programmer you can backup the existing firmware via the ICSP connector on your 3D printer’s mainboard.


    • Thanks for putting the firmware up in

      Because it’s just a copy and not a fork of the official MarlinFirmware repo ( there’s no commit history showing what changes were made. Having a quick look it appears to be a copy of the bugfix-1.1.x branch somewhere around version 1.1.7. Do you mind if I extract the changes from it and add them as a PR to the official MarlinFirmware project so that X3S users can benefit from the improvements and bug fixes in the current Marlin v2 firmware?

      • Feel free to do so, if you could though, please give Brent Pell/Inov3D credit for their work on the project. I will admit I am a complete novice to Github. I just wanted a place to share our work. If there’s a way that I can fix this on my side, I would love to know how. email me @ nubwerkes @ and let me know how to do it.

  6. Just Finished upgrading my FW based on these instructions, CURA seems to crash it when I used it now. Repetier Works though. Also the Main Screen now flashes the XYZ characters to a literal ? question mark.

    Any suggestions?

    Leave a reply

    This site uses Akismet to reduce spam. Learn how your comment data is processed.

    On Key

    Related Posts