**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 funbegan.
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.
Download the U8glib library for Arduino. To download from GitHub, select the “Clone or download” button and select “Download ZIP”
Open Arduino IDE and go to File > Preferences.
In the Preferences window, under the Settings tab, paste “https://raw.githubusercontent.com/Lauszus/Sanguino/master/package_lauszus_sanguino_index.json” into the Additional Boards Manager URLs section and select “OK”.
Under “Tools”, select Board: > Boards Manager…
In the Boards Manager window, scroll down and select “Sanguino by Kristian Sloth Lauszus” and select “Install”. Once finished, select “Close”.
Install the U8glib library for Arduino. Unzip the “u8glib-master.zip” file you download in step 3 to your Arduino Libraries folder. In Windows 10 this should be “C:\Users\\Documents\Arduino\libraries”.
Close Arduino IDE.
Prepare the Board
Flash bootloader onto Tronxy X3S controller. (This step is required in order to be able to flash the Tronxy firmware over USB later.)
Connect Arduino Uno to computer with USB cable.
Open Arduino IDE.
In Arduino IDE, under File, select Examples > Built in Examples > 11.ArduinoISP > ArduinoISP.
Under Tools, select Board -> Arduino/Genuino Uno, Port -> (port your Uno is connected to), Programmer -> AVRISP mkII.
Now upload the sketch to the Uno.
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.
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).
Reconnect USB cable from Uno to PC.
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.
Under Tools, select “Burn Bootloader”.
When finished, disconnect all ICSP connections.
Close Arduino IDE.
Flashing the Firmware!
Copy and unzip the TronXY firmware to a folder on your desktop, or some other folder where you can find it easily.
Open the TronXY firmware folder and navigate to the “Marlin” folder.
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.
Connect USB cable from PC to Tronxy board.
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.
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).
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.