FAQ - Phil1988/FreeDi GitHub Wiki
Screen update gets stuck during firmware update
It can occasionally happen that the flash process gets stuck. This problem is known and is caused by a serial overload during the flash process. In this case, please simply switch off the printer and switch it on again. FreeDi will detect the corrupted screen firmware and start to flash the firmware again. Sometimes it needs several attempts.
I think I cant update to the latest commit
On some installationsiIt can occasionally happen that your local git doesnt fetch the right tags or heads.
For v2.00 if you see this:
It means that you are still on v1.42.
To check it yourself, you can go to the commits and check the number you are seeing.
In the example the commit 30c9b57
is not the latest and was pre v2.00:
There is no such a thing as "do always this and it fixes it for you" and you need to check why it is not seeing the latest update by:
cd ~/FreeDi
git remote -v
git remote show origin
git config --get-all remote.origin.fetch
git rev-parse --abbrev-ref --symbolic-full-name @{u}
In most cases this will be enough to fetch the missing tags:
cd ~/FreeDi
git fetch --tags
Some dont see the branch refspec and need to add this:
cd ~/FreeDi
git config --add remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git config --add remote.origin.fetch "+refs/tags/*:refs/tags/*"
git fetch origin
I updated, but something isn't working any more
When I release a new version, you will find them at the release section.
Normally you will find important release information there such as update and install notes.
Sometimes there will be even announcements
at the issues section that additionally will pop up on your Mainsail notification bell.
Check this first before you update - thats why I use announcements :)
In any case: Check if the additional information/instructions I gave solves your problem. If not, contact the community on discord or open an issue or a dicussion here on git.
My toolhead only visbile when in boot mode
This affects about 0.5% of users with a RP2040 toolhead MCU. The standard clock seems to be too fast for them, thats why CLKDIV4 needed to be used on klipper v0.12 (on FreeDi v1.x). For some reason this doesnt even work any more on klipper 0.13.0-154. There is no higher divider selecteble on the menuconfig pre-compiling, so I made a "special" version for those affected.
For X3 series on FreeDi 2.00 only:
# Put your toolhead in boot mode: Remove back cover, hold boot, click reset, release both
# stop klipper so the USB device is free
sudo systemctl stop klipper.service
# unmount if it happens to be mounted; message will show if not mounted
sudo umount /flash_mount
sudo umount /dev/sda1
# run lsblk and look for the UF2 drive with 128MB size (e.g. /dev/sda1)
lsblk -o NAME,SIZE,LABEL,MOUNTPOINT
# create mount poin tmount the Toolhead - ATTENTION! Check and adjust the path /dev/sda1
sudo mkdir -p /flash_mount
sudo mount /dev/sda1 /flash_mount
# check that the drive is readable
ls /flash_mount/INFO_UF2.TXT
# THE FIRST IMPORTANT STEP: erase the current_firmware
sudo cp ~/FreeDi/mainboard_and_toolhead_firmwares/v0.13.0-154/flash_nuke.uf2 /flash_mount
# create mount poin tmount the Toolhead - ATTENTION! Check and adjust the path /dev/sda1
sudo mkdir -p /flash_mount
sudo mount /dev/sda1 /flash_mount
# check that the drive is readable
ls /flash_mount/INFO_UF2.TXT
# THE SECOND IMPORTANT STEP: write my special klipper version:
sudo cp ~/FreeDi/mainboard_and_toolhead_firmwares/v0.13.0-154/Toolhead_X3.uf2 /flash_mount
# unmount if it happens to be mounted; message will show if not mounted
sudo umount /flash_mount
sudo umount /dev/sda1
For Q1 Pro only:
Please download these attached zip files and unpack it and upload the *.uf2 firmwares to your /home/mks/
folder:
SPECIAL_klipper_v0.13.0-154.zip
Then please do this:
# Put your toolhead in boot mode: Remove back cover, hold boot, click reset, release both
# stop klipper so the USB device is free
sudo systemctl stop klipper.service
# unmount if it happens to be mounted; message will show if not mounted
sudo umount /flash_mount
sudo umount /dev/sda1
# run lsblk and look for the UF2 drive with 128MB size (e.g. /dev/sda1)
lsblk -o NAME,SIZE,LABEL,MOUNTPOINT
# create mount poin tmount the Toolhead - ATTENTION! Check and adjust the path /dev/sda1
sudo mkdir -p /flash_mount
sudo mount /dev/sda1 /flash_mount
# check that the drive is readable
ls /flash_mount/INFO_UF2.TXT
# THE FIRST IMPORTANT STEP: erase the current_firmware
sudo cp ~/flash_nuke.uf2 /flash_mount
# create mount poin tmount the Toolhead - ATTENTION! Check and adjust the path /dev/sda1
sudo mkdir -p /flash_mount
sudo mount /dev/sda1 /flash_mount
# check that the drive is readable
ls /flash_mount/INFO_UF2.TXT
# THE SECOND IMPORTANT STEP: write my special klipper version:
sudo cp ~/SPECIAL_klipper_v0.13.0-154.uf2 /flash_mount
# unmount if it happens to be mounted; message will show if not mounted
sudo umount /flash_mount
sudo umount /dev/sda1
How to revert back to stock Qidi?
You will need to flash 4 systems: the screen the toolhead the mainboard mcu the mainboard host (that runs klipper like a raspberry pi)
The trick part is the screen firmware as there is no way (that I know) to flash it via serial. X3 series owners can flash it with a microSD card but Q1 Pro and Plus4 users have to disassemble the screen for this - very inconvinient. So I recommend using my "pipeline" to flash the screen while still using FreeDi.
Collect all needed Files: screen firmware (for the screen) X3 series: X_4.bin (for the mainboard MCU) Q1 Pro and Plus4: qd_mcu.bin (for the mainboard MCU) toolhead firmware (for the toolhead) Stock EMMC OS *.img file (for the host system)
You can find the screen firmwares (ending with *.tft) in ~/FreeDi/screen_firmwares/
.
Note the file name of the FreeDi screen firmware for your printer.
Rename the FreeDi screen firmware for your printer to something else.
Copy Qidi screen firmware to ~/FreeDi/screen_firmwares/
.
Rename it to the filename you noted before.
Stop the FreeDi service and start it manually to force it flashing the screen with the stock firmware:
sudo systemctl stop FreeDi.service
cd ~/FreeDi/FreeDiLCD && sudo ~/klippy-env/bin/python3 start.py -debug -force_flash
Flash toolhead with the QIDI firmware. Flash mainboard MCU the QIDI firmware (using a microSD). Flash the stock QIDI OS to your EMMC.
I have installed additional software (shaketune, Spoolman, etc.) and FreeDi doenst start since
Some programs (especially shaketune) have been reported to cause problems. The reason is that FreeDi starts after Moonraker have been started, but other software cause moonraker to have a slower start or make it get "ready" on a later point. To overcome this, please increase the starting delay of FreeDi to make sure it starts when moonraker is really "ready".
Please do this:
sudo nano /etc/systemd/system/FreeDi.service
Change the delay to to 15 at the following line:
ExecStartPre=/bin/sleep 15
Exit (CTRL+X), save the changes and reboot.