The FYSETC Cheetah Mix is one of the new generation of printer controller boards which look to integrate the single board computer (SBC) and into the printer controller board. The rise in popularity of Klipper and the fact RRF has also moved to a SBC + MCU architecture has meant that a few of these have sprouted up.
This board takes a modular approach to the problem allowing either a Raspberry Pi CM4 module or FYSETCs own SBC the M10 core. In this tutorial due to the shortage of the Raspberry Pi I will be testing out the M10 core.
The M10 core module is a very low powered embedded device that runs OpenWRT much like the Creality WiFi box.
Although I was initially excited about this concept after around 10 hours of attempting to navigate the FYSECT github, the broken links and the long list of steps to get it up and running I admitted defeat. The M10 board ships as standard with the Cheetah Mix but is not available on its own. I will be reviewing the Cheetah Board with a CM4 equivalent module soon so stay tuned for that. In the meantime feel free to read the information below which details the steps I took to get mainsail working (briefly before it died and I couldn’t recover it) but I’d advise just passing on this unless you already have the hardware.
Edit: FYSETC released an updated set of instructions which point to a more recent OpenWRT set of instructions and downloads. Using the new method I was able to get the device working fine on Ethernet but was still unable to get it to run on WiFi well.
At this point in time the board is probably a good cheap solution for those happy to use an ethernet connection. I am looking forward to testing the board itself when I complete the board benchmarks in the coming months.
No officially published specifications for the M10 board. But HTOP tells you it has 120Mb RAM and performance in the command line was quite reactive even when Klipper and mainsail did work for a short period of time.
- FYSECT Cheetah Mix Aliexpress
- M10 board
- Ethernet cable
- USB C cable
- Micro SD card x 2
The FYSECT boards come in a small plain cardboard box. The boards were in a sealed antistatic bag as is expected with most circuit boards. They also came with an external WiFi antenna
First impressions are that the printer controller section of the board is very compact. The integrated drivers with large heatsink look like they could be a promising combo. The layout has focussed on compact size vs neat wiring layout with connectors all over the centre of the board and well as at the edges. The M10 board however doesn’t scream quality but that could just be because there isn’t a lot to it.
Prepare the board
Plug the M10 board in as shown below. Fix in place with M2.5 bolt (Not supplied which is frustrating as this is not a size you would expect most people to stock – the board sits at the angle shown below without it)
Ensure the jumper by the USB-C connection is set to the DC 5v side. If you fail to do this you will short the usb power connection and have 5V power issues and most likely permanent board damage. Plug in 24V to the power in port – it is important to do this because the MCU is NOT powered when connecting via just USB-C and getting the 5V supply from there. Also note this board is NOT 12V power supply compatible, it has to be 24V.
Connect the board via ethernet directly to your PC/Laptop. This is important it can’t be through your router or WiFi access points because in the initial setup the board acts as a access point. Provide power to the board via the USB C port.
Setting up the OS
Download OpenWrt snapshot from here. You need to pick the one that’s filename ends in ‘sysupgrade.bin’. Rename the file to ‘root_uImage.bin’
Press and hold ‘SYS RST’ button wait for 6s then release the button. Check that an ethernet connection is present (it will say unidentified network, no internet access)
Open a browser on the PC connected to the board. Enter 192.168.1.1 into the address bar and hit enter. You will be greeted with a page like the one below. Upload the root_uImage.bin file by selecting the choose file option. The click the firmware update button.
Wait for the board to update then reboot the board.
When the board reboots and the network connects to your PC again go to 192.168.1.1:81 in your browser. You should see a login page like below. Click login without entering a password. We will set one up on the next step.
Optional: Navigate using the menus to Network -> Wireless. Click the blue edit button on the OpenWRT entry. Choose wireless security. Choose the a security setting that suits your needs. WPA-PSK/WPA2 is a reasonable choice. Enter the network password in the key box.
If your home network subnet is on 1 (192.168.1.x), in order to avoid any ip conflicts, change the static ip of the box LAN from 192.168.1.1 to something like 192.168.3.1. To do that access the luci webinterface ->
Interfaces and edit the static ip ->
Save -> press the down arow on the Save&Apply button ->
Apply Unchecked. You can now access luci on the new ip and continue configureing Client setup.
Now to connect it to your WiFi network. Navigate via the menu. Network -> wireless
Click the blue scan button to locate the WiFi networks. Find the network you want to join and click join. A dialog will open – enter your networks password and click submit. check
Lock to BSSID ->
Create/Assign Firewall zone then under
wwan enter ->
Save & Apply
Find the devices IP address using your router admin page or a tool like advanced ip scanner. Mine appeared on 192.168.68.111 record this IP for use later on.
SSH into the board using a program such as PuTTY. Enter root as the username and it should log you in without asking for a password.
Execute the following 4 lines of code one at a time.
cd ~ wget https://github.com/ihrapsa/KlipperWrt/raw/main/scripts/1_format_extroot.sh chmod +x 1_format_extroot.sh ./1_format_extroot.sh
You should be greeted by a script printout which states that you should make sure the SD card is plugged in (we did this earlier) and that it will wipe the SD card. Press enter to continue
Reboot the device by running the command below (No sudo required for those familiar with it). The board takes a while to boot so be patient for it to re-appear. You will also need to power cycle the board for it to re-connect, once the m10 led stops flashing you can do this safely.
SSH back into the board just like you did previously. Now run the following 4 lines of code for script 2.
cd ~ wget https://github.com/ihrapsa/KlipperWrt/raw/main/scripts/2_script_manual.sh chmod +x 2_script_manual.sh ./2_script_manual.sh
Press enter to accept all of the questions and let the script run. This step will take a while. When prompted choose your favourite front end for Klipper. I chose Mainsail
After another wait you should see an all done screen. Reboot and power cycle like we did earlier for changes to be activated.
Once rebooted. Enter the ip address into your browser and you should be greeted with the front end you chose.
SSH back into the board. Copy the printer.cfg file provided by FYSETC.
cd ~/klipper_config wget https://raw.githubusercontent.com/FYSETC/FYSETC-Cheetah- Mix/main/Firmware%26OS/Klipper/printer.cfg
I had to comment out the bottom line related to displays because the associated file was missing and I didn’t have a screen anyway. Also include the appropriate macro files for the frontend you chose.
[include fluidd_macros.cfg] # include your macros inside this file
Now it’s time to flash your firmware. Download the pre-compiled firmware from FYSETC here or follow the regular steps to compile the latest version yourself. Copy it to a micro SD card and then put the SD card into the board. Power cycle the board so that it flashes the latest firmware.
At this point in time I took a break. When I returned to work on the board in a few days time. I was unable to get the Mainsail to appear over WiFi despite being able to see the board was connected to my network. I plugged in the ethernet and used the IP address from that to connect and everything worked fine using it. I was unable to get the WiFi to work despite trying for a few hours. Again I have posed the question to FYSETC support team.
On my device the board MCU appeared at the default location provided in the printer.cfg file we copied earlier. Note I originally tried this stage without the 24V supply plugged in and couldn’t get anywhere. The MCU does not power on without 24V power supply.
Anyway I was greeted with the wonderful site of a klipper state error which means everything was working as expected and I just needed to finish wiring up the board! I don’t have a free printer for this board right now so this is where I will leave the tutorial at. Whilst the recent fixes from FYSETC haven’t fixed everything you can now at least get to a working solution using ethernet!
Support 3DP and ME! Help us keep producing tutorials, content and mods!