Me: Part of why I’m building a zero is because it’s cute and smol and I can take it outside to print in the summertime.
Them: aww, you can take it on walks…
Me: BRB, takin’ my Voron for a walk.
People will ask to pet my Voron.
Them: Is it friendly? Will it bite?
Me: It’s not just friendly. It’s OPEN SOURCE.
tips fedora
The one that came with my kit had two problems. First, one set of the screw terminals is unusable and the rest of the connectors are not that much better. Second, the heatsink is stuck on using some sort of blue stuff that’s not very sticky. So I decided that I’d fix the heatsink which turned into a bit of a debacle because I put on thermal glue on before realizing that there was an M2 threaded hole that you could just put a M2×6mm screw in to bolt the heatsink down.
The replacement one had seemingly better connectors as well as arriving with the heatsink screwed down. Hence, bad batch.
There’s a bunch of settings that get temporarily stored in the printer.cfg file so what you really want to do is not have Ansible touch that file. Conveniently, there’s a bunch of ways to configure klipper using includes so we can work with this. This means we can get really close to a situation where any arbitrary set of printers are generated from a single ansible role and it does the right thing.
The layout on the pi side looks like this:
However, the relevant bits of my main.yml in the Ansible role look like this:
You will notice that some of the file names are different, such that if I had a second printer that was not-quite-the-same, the config files can co-exist.
Except there’s a bug which is that if I set a value in an included file, the SAVE_CONFIG command won’t be able to properly save the config. Ugh.
I’ve got part of the better start macro implemented and I’ll keep tweaking that.
I think there’s a system such that if someone had written down some stuff in the manual, I’d be able to pick up a random pile of corners and figure out what goes where. And the designers could have put some pips or dots or arrows or something such that you wouldn’t see them once everything’s assembled but it would at least make it easy to know which one goes where. This is, of course, completely unique to the Voron Zero, if I look at the STLs for the Trident, you don’t have a long list of completely unique clips. And I was eventually able to figure out the pattern, but I don’t think I can describe it.
The part that makes this annoying is that I’m looking to do the BoxZero conversion and presumably the ZeroPanels but I wanted to at least build it as-stock.
Them: aww, you can take it on walks…
Me: BRB, takin’ my Voron for a walk.
People will ask to pet my Voron.
Them: Is it friendly? Will it bite?
Me: It’s not just friendly. It’s OPEN SOURCE.
tips fedora
The SKR Pico
Based on my new SKR Pico, there seems to be a bad batch of them?The one that came with my kit had two problems. First, one set of the screw terminals is unusable and the rest of the connectors are not that much better. Second, the heatsink is stuck on using some sort of blue stuff that’s not very sticky. So I decided that I’d fix the heatsink which turned into a bit of a debacle because I put on thermal glue on before realizing that there was an M2 threaded hole that you could just put a M2×6mm screw in to bolt the heatsink down.
The replacement one had seemingly better connectors as well as arriving with the heatsink screwed down. Hence, bad batch.
Configuration re-factor
jontek2 was nice enough to post a Trident config and then also LDO wrote their own guide for organizing the klipper config, which I then made an ansible version.There’s a bunch of settings that get temporarily stored in the printer.cfg file so what you really want to do is not have Ansible touch that file. Conveniently, there’s a bunch of ways to configure klipper using includes so we can work with this. This means we can get really close to a situation where any arbitrary set of printers are generated from a single ansible role and it does the right thing.
The layout on the pi side looks like this:
- configs/skr-pico.cfg - Main board config
- configs/klipperExpander.cfg - Klipper expander board config
- configs/V0Display.cfg - V0 display config
- macros/local-macro.cfg - The macros provided, will play with this down the road
- mainsail.cfg - The mainsail config file
- sensorless-homing.cfg - Just the important sensorless homing parts
- printer.cfg - The very skeletal config file.
Code:
[include mainsail.cfg]
[include macros/*.cfg]
[include configs/*.cfg]
[include sensorless-homing.cfg]
However, the relevant bits of my main.yml in the Ansible role look like this:
Code:
- name: Create klipper directories
file:
path: "{{ item }}"
state: directory
owner: klipper
group: klipper
mode: 0755
with_items:
- /opt/klipper
- /opt/klipper/config
- /opt/klipper/config/configs
- /opt/klipper/config/macros
- /opt/klipper/run
- /opt/klipper/logs
- /opt/klipper/gcodes
- /opt/klipper/moonraker-db
- name: Add configs for the zero
copy:
owner: "klipper"
group: klipper
src: "{{ item.src }}"
dest: "{{ item.dest }}"
mode: 0644
with_items: # notice how the file names are mapped differently
- { src: "bigtreetech-skr-pico-v1.0-zero.cfg",dest: "/opt/klipper/config/configs/skr-pico.cfg"}
- { src: "V0Display-zero.cfg",dest: "/opt/klipper/config/configs/V0Display-zero.cfg"}
- { src: "klipperExpander-zero.cfg",dest: "/opt/klipper/config/configs/klipperExpander.cfg"}
- name: Add macros
copy:
owner: "klipper"
group: klipper
src: "{{ item.src }}"
dest: "{{ item.dest }}"
mode: 0644
with_items:
- { src: "local-macro.cfg",dest: "/opt/klipper/config/macros/local-macro.cfg"}
- name: Add sensorless-homing.cfg
copy:
src: "sensorless-homing.cfg"
dest: /opt/klipper/config/sensorless-homing.cfg
owner: "klipper"
group: klipper
mode: 0644
- name: Add mainsail.cfg
copy:
src: "mainsail.cfg"
dest: /opt/klipper/config/mainsail.cfg
owner: "klipper"
group: klipper
mode: 0644
- name: Add printer.cfg
copy:
src: "printer.cfg"
dest: /opt/klipper/config/printer.cfg
owner: "klipper"
group: klipper
force: false #force set to false means it will only try to create this file if it doesn't exist
mode: 0644
You will notice that some of the file names are different, such that if I had a second printer that was not-quite-the-same, the config files can co-exist.
Except there’s a bug which is that if I set a value in an included file, the SAVE_CONFIG command won’t be able to properly save the config. Ugh.
I’ve got part of the better start macro implemented and I’ll keep tweaking that.
Those darn corners
The last thing you are doing to a printer is buttoning it up. That’s your last impression. And you want to know what my last impression of the stock build is? The corners.I think there’s a system such that if someone had written down some stuff in the manual, I’d be able to pick up a random pile of corners and figure out what goes where. And the designers could have put some pips or dots or arrows or something such that you wouldn’t see them once everything’s assembled but it would at least make it easy to know which one goes where. This is, of course, completely unique to the Voron Zero, if I look at the STLs for the Trident, you don’t have a long list of completely unique clips. And I was eventually able to figure out the pattern, but I don’t think I can describe it.
The part that makes this annoying is that I’m looking to do the BoxZero conversion and presumably the ZeroPanels but I wanted to at least build it as-stock.