-
Notifications
You must be signed in to change notification settings - Fork 7
Simple AF Cartographer
I AM NOT RESPONSIBLE FOR DAMAGE TO YOUR PRINTER - INSTALLING CUSTOM FIRMWARE IS A RISK
If you are looking for a way to support the project, and its entirely optional, this is my preferred approach. I am conducting a fundraiser to purchase a K1M printer, just so I can push out fixes and new features a bit faster, but also specifically test the K1M as well as the K1.
If you can't donate via go fund me directly, I have also added a kofi account.
Come on over to the pellcorp discord server, here is the invite https://discord.gg/2uGDzyJ3WX
The #simple-af-carto
channel has been setup for anyone wanting support for cartographer.
Thanks to Richard from https://cartographer3d.com and Zarboz from https://wattskraken.xyz/ for donating Cartographers to the Simple AF project to add support and continue to support the cartographer.
SUPER IMPORTANT SUPER IMPORTANT SUPER IMPORTANT SUPER IMPORTANT SUPER IMPORTANT SUPER IMPORTANT SUPER IMPORTANT
WARNING: If you are not using a side mount you must make post installation config changes to cartotouch.cfg and cartographer-k1.cfg or cartographer-k1m.cfg before homing your printer or performing a bed mesh! See probe installation for more details.
This guide assumes you have a K1, K1C or K1 Max and you are running stock creality firmware 1.3.3.5 or higher, or alternately you are using my prerooted firmware. Any other pre-rooted firmware is explicitly not supported and the installer.sh will validate this and refuse to proceed if you try to use it on different firmware.
WARNING: If you have used a cartographer with k1-klipper, please note that the PRINT_START
macro specified in their docs is not supported by this project. You must change your Slicer Start Print Machine G-Code (see next)
There is an assumption that you are using a slicer like OrcaSlicer and Machine G-code like:
Machine start G-code
M104 S0 ; Stops OrcaSlicer from sending temp waits separately
M140 S0
START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]
Machine end G-code
END_PRINT
If you want to select a particular cartographer model other than the default you can pass in an additional START_PRINT
parameter:
You can either hard code it to a particular model, like CARTOGRAPHER_MODEL=mymodel
or you can specify a model based on orca slicer variables, such as CARTOGRAPHER_MODEL="[curr_bed_type] - [filament_type]"
, but you have to make sure you have all the possible models
defined for each of the bed type and filament type combinations.
On a K1M you can use the lidar cable either directly by repinning it, or via the pass through lidar port on the toolhead. However you cannot use the lidar port on the toolhead for K1, K1C or K1SE. The reason this does not work is because for Lidar on the K1M creality actually routes a completely separate USB cable from the mainboard.
TODO - provide more details
The configuration assumes you are using this mount from ZeroDotCmd: https://www.printables.com/model/1037606-cartographer-3d-right-angle-k1-series-mount which mounts where the lidar normally goes, and you can skip axis twist calibration as its not required. This mount requires the right angle cartographer, not the flat pack!
IMPORTANT: Make sure to use a flathead/flush screw heads so they don't protrude towards the bed. It is recommended to snip the soldered pins sticking through the coil plate so they are closer to the coil plate.
Configuration Changes Required
WARNING: The following configuration changes are used for this mount, but they are also the defaults so if you have this mount you should not need to change anything. Please note that I do not have a K1M printer, so especially for screw tilt adjust these are guesses.
File | Section | Key | Value |
---|---|---|---|
printer.cfg | stepper_y | position_max | 226 (K1) or 306 (K1M) |
cartotouch.cfg | scanner | x_offset | -16.0 |
y_offset | 0.0 | ||
cartographer-k1.cfg | bed_mesh | mesh_min | 10,10 |
mesh_max | 210,215 | ||
screws_tilt_adjust | screw1 | 42,20 | |
screw2 | 211,20 | ||
screw3 | 211,190 | ||
screw4 | 42,190 | ||
cartographer-k1m.cfg | bed_mesh | mesh_min | 10,10 |
cartographer-k1m.cfg | mesh_max | 290,280 | |
screws_tilt_adjust | screw1 | 35,23 | |
screw2 | 294,23 | ||
screw3 | 264,272 | ||
screw4 | 64,272 |
If you have a flat pack cartographer, then you need to use the D3vil Design: https://www.printables.com/model/684338-k1-k1max-eddy-current-mount-cartographer
For the default mount which uses a flat pack, you will need to follow the Assembly Manual, this is not required for the right angle carto if using the Zero mount (see below)
Configuration Changes Required
WARNING: The following configuration changes are used for this mount. Please note that I do not have a K1M printer, so especially for screw tilt adjust these are guesses.
File | Section | Key | Value |
---|---|---|---|
printer.cfg | stepper_y | position_max | 210 (K1) or 290 (K1M) |
cartotouch.cfg | scanner | x_offset | 0.0 |
y_offset | 16.86 | ||
cartographer-k1.cfg | bed_mesh | mesh_min | 10,25 |
mesh_max | 210,210 | ||
screws_tilt_adjust | screw1 | 25,3 | |
screw2 | 195,3 | ||
screw3 | 195,173 | ||
screw4 | 25,173 | ||
cartographer-k1m.cfg | bed_mesh | mesh_min | 10,22 |
mesh_max | 290,280 | ||
screws_tilt_adjust | screw1 | 19,6 | |
screw2 | 278,6 | ||
screw3 | 248,255 | ||
screw4 | 48,255 |
If you want a cable bracket for stock then grab it from here https://www.printables.com/model/783379-zimz-clippy-cartographer-cable-holder
Alternatively you could try this: https://www.printables.com/model/893452-cartographer-cable-guide-for-k1k1-max
You can get the booty gantry mount from here: https://github.com/tlace17/K1-Linear-Rail-Gantry/tree/main/STLs/Probe%20Mounts
If you are using the booty gantry mount, please make sure you verify that the nozzle to coil offset is between 2.5mm and 3.0mm, you may need to shim it to get it within range! At least a 0.5mm spacer might be required to move the Carto closer to the bed.
To verify the nozzle offset of the carto you can use this model recommended by the cartographer team: https://www.printables.com/model/1060868-cartographer-probe-nozzle-offset-tool
Configuration Changes Required
WARNING: The following configuration changes are used for this mount. Please note that I do not have a Booty Gantry or a K1M, so especially for screw tilt adjust these are guesses.
File | Section | Key | Value |
---|---|---|---|
printer.cfg | stepper_y | position_max | 210 (K1) or 290 (K1M) |
cartotouch.cfg | scanner | x_offset | 0.0 |
y_offset | 20.0 | ||
cartographer-k1.cfg | bed_mesh | mesh_min | 20,20 |
mesh_max | 200,200 | ||
screws_tilt_adjust | screw1 | 25,0 | |
screw2 | 195,0 | ||
screw3 | 195,170 | ||
screw4 | 25,170 | ||
cartographer-k1m.cfg | bed_mesh | mesh_min | 20,20 |
mesh_max | 280,280 | ||
screws_tilt_adjust | screw1 | 19,3 | |
screw2 | 278,3 | ||
screw3 | 248,252 | ||
screw4 | 48,252 |
You must have flashed your cartographer with CARTOGRAPHER K1 5.1.0
survey firmware before starting the installation:
There is a guide for this here
The installation can only be performed on a printer which has been rooted and ssh granted
You need root access, if you are not already root, then follow this guide https://guilouz.github.io/Creality-Helper-Script-Wiki/firmwares/install-and-update-rooted-firmware-k1/#enable-root-access
You must do a factory reset before running the installer.sh. Follow these steps to do a factory reset, which retains root access and skips the startup calibration checks:
wget --no-check-certificate https://raw.githubusercontent.com/pellcorp/creality/main/k1/services/S58factoryreset
chmod +x S58factoryreset
./S58factoryreset reset
IMPORTANT: It is really important you do not close the ssh session until you get the message Info: Factory reset was executed successfully, the printer will restart...
:
git config --global http.sslVerify false
git clone https://github.com/pellcorp/creality.git /usr/data/pellcorp
sync
RPC Timeouts, try SSH Git Clone
mkdir -p /root/.ssh wget --no-check-certificate "https://raw.githubusercontent.com/pellcorp/creality/main/k1/ssh/git-ssh.sh" -O /root/git-ssh.sh chmod 777 /root/git-ssh.sh wget --no-check-certificate "https://raw.githubusercontent.com/pellcorp/creality/main/k1/ssh/pellcorp-identity" -O /root/.ssh/pellcorp-identity export GIT_SSH_IDENTITY=pellcorp export GIT_SSH=/root/git-ssh.sh git clone [email protected]:pellcorp/creality.git /usr/data/pellcorp cd /usr/data/pellcorp && git remote set-url origin https://github.com/pellcorp/creality.git && cd
If you have pellcorp-overrides in github but not stored locally, you need to recreate the /usr/data/pellcorp-overrides directory before running the installer.sh!
To run the script, you must use the following command:
/usr/data/pellcorp/k1/installer.sh --install cartotouch
RPC failed; curl 18 transfer closed
You might get this error:error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
Just rerun the installer.sh script (with the same probe argument), it will start from the stage that failed (most of the time this will be the Installing Klipper stage!)
You can also prefix the installer command with AF_GIT_CLONE=ssh
to force git to clone via ssh, this will take a lot longer, but it will never time out, so its good in a pinch if you are getting repeated klipper repo clone failures.
At the end of the installer process if you get this message:
WARNING: MCU Firmware updates are pending you need to power cycle your printer!
It means that new MCU firmware updates need to be applied and this can only be done by power cycling the printer. After your printer is power cycled you can verify firmware was updated with the CHECK_FIRMWARE
macro from Fluidd or Mainsail, if you see this message:
INFO: Your MCU Firmware is up to date!
Your printer MCU firmware was updated successfully. If you still see the MCU Firmware updates are pending you need to power cycle your printer!
message after a power cycle, check the /tmp/mcu_update.log
, you may be asked to provide this file on Discord if you need additional assistance, sometimes an additional power cycle can solve the problem, there is a very short window of time (15 seconds) in which the MCU firmware can be updated, so there is a chance it will work after an additional power cycle.
It is important to make sure you have a way to emergency factory reset the printer, if the worst happens. There is a macro in Simple AF called CHECK_USB_KEY
that will wait for you to plug a USB key in and tell you if it was able to be successfully mounted. You should verify your USB key often just to make sure you have something if you need to unbrick your printer, simply type CHECK_USB_KEY
or hit the button in Fluidd / Mainsail
If you get the message: INFO - USB Key was recognised and mounted correctly (/tmp/udisk/sda1)
, your USB is perfect to use for a factory reset. If you get no message at all before the script ends (after 60 seconds), your USB is defective. You can check the messages
file in the logs section of your UI to get more details about why the usb key could not be mounted!
https://docs.cartographer3d.com/cartographer-probe/survey-touch/survey-troubleshooting
You need to click RECOVER and then run from ssh:
/usr/data/cartographer-klipper/install.sh
If you get the following error, it means that the cartographer is not connected to the printer. This is either because its physically not connected, the wiring is wrong, the usb subsystem has disconnected the carto during a restart or the serial id is wrong
So from ssh run a lsusb
and make sure you can see:
If you cannot see it in lsusb
, then it very likely means either the carto is wired incorrectly, or if was working, it just means that an attempt to restart the carto failed because the K1 refused to recognise it, there is no recourse except to Reboot the printer via Fluidd / Mainsail in this case.
If you can, then verify that the serial id matches:
Make sure it matches the serial
in `cartotouch.cfg:
You may have to update the [scanner] section in the cartotouch.cfg with the correct cartographer serial device address. If the installer was not able to determine the correct serial device, you will see a warning in the installer in that case: WARNING: There does not seem to be a cartographer attached - skipping auto configuration
Open the cartotouch.cfg
in fluidd or mainsail and edit it there if needed.
Find the serial device for the cartographer, from the command line:
ls /dev/serial/by-id/usb-Cartographer*
Then replace the [scanner]
line from cartotouch.cfg
:
serial:/dev/serial/by-id/XXX # change this line to have your cartographer id.
So it should then look something like:
serial: /dev/serial/by-id/usb-Cartographer_614e_160020001343303856303820-if00
Restart klipper if you had to change the serial
entry.
For cartographer you cannot use more than microsteps: 32
, the MCU cannot handle both more microsteps and cartographer, it puts too much pressure on the system and it will throw timer too close during bed meshes.
If even after this change, you continue to experience timer too close during normal printing, you can switch to my older klipper repo with the following command:
/usr/data/pellcorp/k1/installer.sh --update-repo
/usr/data/pellcorp/k1/installer.sh --klipper-repo k1-carto-klipper
This change will persist for updates, but not for a reinstall
Please make sure to remove any scanner related config from the save config section at the bottom of printer.cfg and save and restart before re-calibrating.
So the follow sections must be removed:
- [scanner model default]
- [scanner]
It is a good idea to heat the nozzle to 150c for this step first!
- Home X Y (G28 X Y)
- Heat Nozzle to 150c (
M109 S150
) so that any filament can be removed from nozzle - Make sure nozzle is centred on bed
- Enable Force Move (via the button in the UI) and move your bed plate 2-3 mm away from the nozzle
- Run
CARTOGRAPHER_CALIBRATE METHOD=manual
Follow the Paper Test Method Upon completionSAVE_CONFIG
WARNING: Do not use a metal feeler gauge for this step, it could interfere with calibration!!!
After the save config you have to do the cartographer threshold scan (see next)
WARNING: For this next step, it is really important to be near your printer for this step, because if there is any issue with the printer configuration or your carto probe, its possible the nozzle will dig itself into the bed, so be hovering over that e-stop button!
- Home All (
G28
) - Make sure nozzle is centred on bed
- Heat Nozzle to 150c (
M109 S150
) so that any filament can be removed from nozzle - Execute
CARTOGRAPHER_THRESHOLD_SCAN SPEED=2 MIN=1500 MAX=5000
Upon completionSAVE_CONFIG
After the save config you have to do the touch calibration.
WARNING: For this next step, it is really important to be near your printer for this step, because if there is any issue with the printer configuration or your carto probe, its possible the nozzle will dig itself into the bed, so be hovering over that e-stop button!
- Home All (
G28
) - Heat Nozzle to 150c (
M109 S150
) so that any filament can be removed from nozzle - Execute
CARTOGRAPHER_CALIBRATE
Upon completionSAVE_CONFIG
Note: If this fails after 3 tries, you should check to make sure there is not filament stuck to the bottom of your nozzle!
Source: https://docs.cartographer3d.com/cartographer-probe/survey-touch
Next it is highly recommended to perform axis twist compensation calibration if you are using a rear mount before doing anything else, this will affect the quality of your bed mesh, so best to do it before.
- Home All (
G28
) - Run
AXIS_TWIST_COMPENSATION_CALIBRATE
The calibration wizard will prompt you to measure the probe Z offset at a few points along the bed Upon completionSAVE_CONFIG
WARNING: Do not use a metal feeler gauge for this step, it could interfere with calibration!!!
Source: https://www.klipper3d.org/Axis_Twist_Compensation.html
At least PID tuning (bed and extruder) and input shaping is required for acceptable printing. If you try and print after running the installer.sh and a power cycle but before any calibration you will most likely have horrendous quality, the worst you have ever seen on the k1. After PID tuning and input shaping you should see the same kind of quality as you get with stock k1 + input shaper fix.
You can use the QUICK_START Macro to automatically complete Bed and Nozzle PID Tuning and Input Shaping Automatically.
https://www.klipper3d.org/Config_checks.html?h=pid#calibrate-pid-settings
For example you might run these:
PID_CALIBRATE_BED BED_TEMP=65
PID_CALIBRATE_HOTEND HOTEND_TEMP=230
Note: The PID_CALIBRATE_BED
and PID_CALIBRATE_HOTEND
macros are located in the useful_macros.cfg
file and they have defaults
values for BED_TEMP and HOTEND_TEMP so you can just run them by clicking on them if you want that same temperature.
There is no default configuration for input shaping so it is essentially disabled out of the box.
You can use the INPUT_SHAPER
button run input shaping, just be sure to SAVE CONFIG
at the end, to choose the automatically selected shaper config, be aware though that the shaper chosen might be sub-optimal due to a slight difference in vibrations between two options. So you should probably review the output and potentially choose an alternative if it gives you higher recommended max acceleration for minimal increase in vibration.
https://www.klipper3d.org/Measuring_Resonances.html#input-shaper-auto-calibration
IMPORTANT: You should adjust your acceleration in your printer.cfg down to that recommended by the input shaper results. I normally reduce max_accel
to the highest of the two axis (usually this will be y), and then more finely adjust the max acceleration per axis in my slicer profile.
For this first print you can go and do the tuning first (PID Tuning, etc) or you can go ahead and optimise your scanner_touch_z_offset using baby stepping, as documented here: https://docs.cartographer3d.com/cartographer-probe/survey-touch#first-print
In fluidd the save button after you finish or cancel your print can be a bit hard to find, look for
Note: The default value for pressure advance is set to: 0.04
Refer to https://github.com/SoftFever/OrcaSlicer/wiki/Calibration for more calibrations
This is an excellent resource for all things 3d print tuning: https://ellis3dp.com/Print-Tuning-Guide/
Some cartographer users choose to use scan only instead of touch and that is easy enough to do once you have finished setting it up, just change the cartotouch.cfg calibration_method
to be scan
. You can then use the CARTOGRAPHER_MODEL parameter to start print from your slicer to select different filament profiles, this is required if you print with different filaments and/or use different bed aurfaces.
See Updating
See Reinstalling
Simple AF Beacon EXPERIMENTAL
Simple AF Bltouch, CrTouch and 3dTouch
If you are looking for a way to support the project, and its entirely optional, this is my preferred approach. I am conducting a fundraiser to purchase a K1M printer, just so I can push out fixes and new features a bit faster, but also specifically test the K1M as well as the K1.
If you can't donate via go fund me directly, I have also added a kofi account.