docs: Use hash marks for header lines
Consistently use leading hash marks (#) to note section headers. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
afca515e2c
commit
37efd1b8f1
|
@ -4,8 +4,7 @@ This document describes Klipper's Application Programmer Interface
|
||||||
(API). This interface enables external applications to query and
|
(API). This interface enables external applications to query and
|
||||||
control the Klipper host software.
|
control the Klipper host software.
|
||||||
|
|
||||||
Enabling the API socket
|
## Enabling the API socket
|
||||||
-----------------------
|
|
||||||
|
|
||||||
In order to use the API server, the klippy.py host software must be
|
In order to use the API server, the klippy.py host software must be
|
||||||
started with the `-a` parameter. For example:
|
started with the `-a` parameter. For example:
|
||||||
|
@ -17,8 +16,7 @@ This causes the host software to create a Unix Domain Socket. A client
|
||||||
can then open a connection on that socket and send commands to
|
can then open a connection on that socket and send commands to
|
||||||
Klipper.
|
Klipper.
|
||||||
|
|
||||||
Request format
|
## Request format
|
||||||
--------------
|
|
||||||
|
|
||||||
Messages sent and received on the socket are JSON encoded strings
|
Messages sent and received on the socket are JSON encoded strings
|
||||||
terminated by an ASCII 0x03 character:
|
terminated by an ASCII 0x03 character:
|
||||||
|
@ -38,8 +36,7 @@ be on a single line, and it will automatically append the 0x03
|
||||||
terminator when transmitting a request. (The Klipper API server does
|
terminator when transmitting a request. (The Klipper API server does
|
||||||
not have a newline requirement.)
|
not have a newline requirement.)
|
||||||
|
|
||||||
API Protocol
|
## API Protocol
|
||||||
------------
|
|
||||||
|
|
||||||
The command protocol used on the communication socket is inspired by
|
The command protocol used on the communication socket is inspired by
|
||||||
[json-rpc](https://www.jsonrpc.org/).
|
[json-rpc](https://www.jsonrpc.org/).
|
||||||
|
@ -92,8 +89,7 @@ which could cause the associated response to be sent out of order with
|
||||||
respect to responses from other requests. A JSON request will never
|
respect to responses from other requests. A JSON request will never
|
||||||
pause the processing of future JSON requests.
|
pause the processing of future JSON requests.
|
||||||
|
|
||||||
Subscriptions
|
## Subscriptions
|
||||||
-------------
|
|
||||||
|
|
||||||
Some Klipper "endpoint" requests allow one to "subscribe" to future
|
Some Klipper "endpoint" requests allow one to "subscribe" to future
|
||||||
asynchronous update messages.
|
asynchronous update messages.
|
||||||
|
@ -120,8 +116,7 @@ with "endpoint" specific contents to the response template and then
|
||||||
send that template. If a "response_template" field is not provided
|
send that template. If a "response_template" field is not provided
|
||||||
then it defaults to an empty dictionary (`{}`).
|
then it defaults to an empty dictionary (`{}`).
|
||||||
|
|
||||||
Available "endpoints"
|
## Available "endpoints"
|
||||||
---------------------
|
|
||||||
|
|
||||||
By convention, Klipper "endpoints" are of the form
|
By convention, Klipper "endpoints" are of the form
|
||||||
`<module_name>/<some_name>`. When making a request to an "endpoint",
|
`<module_name>/<some_name>`. When making a request to an "endpoint",
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
# BL-Touch
|
# BL-Touch
|
||||||
|
|
||||||
Connecting BL-Touch
|
## Connecting BL-Touch
|
||||||
-------------------
|
|
||||||
|
|
||||||
A **warning** before you start: Avoid touching the BL-Touch pin with
|
A **warning** before you start: Avoid touching the BL-Touch pin with
|
||||||
your bare fingers, since it is quite sensitive to finger grease. And
|
your bare fingers, since it is quite sensitive to finger grease. And
|
||||||
|
@ -39,8 +38,7 @@ It's important that the z_hop movement in safe_z_home is high enough
|
||||||
that the probe doesn't hit anything even if the probe pin happens to
|
that the probe doesn't hit anything even if the probe pin happens to
|
||||||
be in its lowest state.
|
be in its lowest state.
|
||||||
|
|
||||||
Initial tests
|
## Initial tests
|
||||||
-------------
|
|
||||||
|
|
||||||
Before moving on, verify that the BL-Touch is mounted at the correct
|
Before moving on, verify that the BL-Touch is mounted at the correct
|
||||||
height, the pin should be roughly 2 mm above the nozzle when retracted
|
height, the pin should be roughly 2 mm above the nozzle when retracted
|
||||||
|
@ -83,8 +81,7 @@ doesn't stop when you touch the pin.
|
||||||
If that was successful, do another `G28` (or `PROBE`) but this time
|
If that was successful, do another `G28` (or `PROBE`) but this time
|
||||||
let it touch the bed as it should.
|
let it touch the bed as it should.
|
||||||
|
|
||||||
BL-Touch gone bad
|
## BL-Touch gone bad
|
||||||
-----------------
|
|
||||||
|
|
||||||
Once the BL-Touch is in inconsistent state, it starts blinking red.
|
Once the BL-Touch is in inconsistent state, it starts blinking red.
|
||||||
You can force it to leave that state by issuing:
|
You can force it to leave that state by issuing:
|
||||||
|
@ -106,8 +103,7 @@ right position so it is able to lower and raise the pin and the red
|
||||||
light turns on and of. Use the `reset`, `pin_up` and `pin_down`
|
light turns on and of. Use the `reset`, `pin_up` and `pin_down`
|
||||||
commands to achieve this.
|
commands to achieve this.
|
||||||
|
|
||||||
BL-Touch "clones"
|
## BL-Touch "clones"
|
||||||
-----------------
|
|
||||||
|
|
||||||
Many BL-Touch "clone" devices work correctly with Klipper using the
|
Many BL-Touch "clone" devices work correctly with Klipper using the
|
||||||
default configuration. However, some "clone" devices may require
|
default configuration. However, some "clone" devices may require
|
||||||
|
@ -144,8 +140,7 @@ the second query reports "probe: TRIGGERED" then it indicates that
|
||||||
`pin_up_reports_not_triggered` should be set to False in the Klipper
|
`pin_up_reports_not_triggered` should be set to False in the Klipper
|
||||||
config file.
|
config file.
|
||||||
|
|
||||||
BL-Touch v3
|
## BL-Touch v3
|
||||||
-----------
|
|
||||||
|
|
||||||
Some BL-Touch v3.0 and BL-Touch 3.1 devices may require configuring
|
Some BL-Touch v3.0 and BL-Touch 3.1 devices may require configuring
|
||||||
`probe_with_touch_mode` in the printer config file.
|
`probe_with_touch_mode` in the printer config file.
|
||||||
|
@ -172,8 +167,7 @@ probe. If configuring this value on a "clone" or older BL-Touch
|
||||||
device, be sure to test the probe accuracy before and after setting
|
device, be sure to test the probe accuracy before and after setting
|
||||||
this value (use the `PROBE_ACCURACY` command to test).
|
this value (use the `PROBE_ACCURACY` command to test).
|
||||||
|
|
||||||
Multi-probing without stowing
|
## Multi-probing without stowing
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
By default, Klipper will deploy the probe at the start of each probe
|
By default, Klipper will deploy the probe at the start of each probe
|
||||||
attempt and then stow the probe afterwards. This repetitive deploying
|
attempt and then stow the probe afterwards. This repetitive deploying
|
||||||
|
@ -203,8 +197,7 @@ to True. On these devices it is a good idea to test the probe accuracy
|
||||||
before and after setting `probe_with_touch_mode` (use the
|
before and after setting `probe_with_touch_mode` (use the
|
||||||
`PROBE_ACCURACY` command to test).
|
`PROBE_ACCURACY` command to test).
|
||||||
|
|
||||||
Calibrating the BL-Touch offsets
|
## Calibrating the BL-Touch offsets
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
Follow the directions in the [Probe Calibrate](Probe_Calibrate.md)
|
Follow the directions in the [Probe Calibrate](Probe_Calibrate.md)
|
||||||
guide to set the x_offset, y_offset, and z_offset config parameters.
|
guide to set the x_offset, y_offset, and z_offset config parameters.
|
||||||
|
@ -218,8 +211,7 @@ far above the nozzle as possible to avoid it touching printed parts.
|
||||||
If an adjustment is made to the probe position, then rerun the probe
|
If an adjustment is made to the probe position, then rerun the probe
|
||||||
calibration steps.
|
calibration steps.
|
||||||
|
|
||||||
BL-Touch output mode
|
## BL-Touch output mode
|
||||||
--------------------
|
|
||||||
|
|
||||||
* A BL-Touch V3.0 supports setting a 5V or OPEN-DRAIN output mode,
|
* A BL-Touch V3.0 supports setting a 5V or OPEN-DRAIN output mode,
|
||||||
a BL-Touch V3.1 supports this too, but can also store this in its
|
a BL-Touch V3.1 supports this too, but can also store this in its
|
||||||
|
|
|
@ -2,8 +2,7 @@
|
||||||
|
|
||||||
This document describes Klipper benchmarks.
|
This document describes Klipper benchmarks.
|
||||||
|
|
||||||
Micro-controller Benchmarks
|
## Micro-controller Benchmarks
|
||||||
---------------------------
|
|
||||||
|
|
||||||
This section describes the mechanism used to generate the Klipper
|
This section describes the mechanism used to generate the Klipper
|
||||||
micro-controller step rate benchmarks.
|
micro-controller step rate benchmarks.
|
||||||
|
@ -25,7 +24,7 @@ or other innocuous pins. **Always verify that it is safe to drive the
|
||||||
configured pins prior to running a benchmark.** It is not recommended
|
configured pins prior to running a benchmark.** It is not recommended
|
||||||
to drive an actual stepper during a benchmark.
|
to drive an actual stepper during a benchmark.
|
||||||
|
|
||||||
### Step rate benchmark test ###
|
### Step rate benchmark test
|
||||||
|
|
||||||
The test is performed using the console.py tool (described in
|
The test is performed using the console.py tool (described in
|
||||||
[Debugging.md](Debugging.md)). The micro-controller is configured for
|
[Debugging.md](Debugging.md)). The micro-controller is configured for
|
||||||
|
@ -88,7 +87,7 @@ delay"). This configuration is believed to be valid in real-world
|
||||||
usage when one is solely using Trinamic stepper drivers. The results
|
usage when one is solely using Trinamic stepper drivers. The results
|
||||||
of these benchmarks are not reported in the Features.md document.
|
of these benchmarks are not reported in the Features.md document.
|
||||||
|
|
||||||
### AVR step rate benchmark ###
|
### AVR step rate benchmark
|
||||||
|
|
||||||
The following configuration sequence is used on AVR chips:
|
The following configuration sequence is used on AVR chips:
|
||||||
```
|
```
|
||||||
|
@ -111,7 +110,7 @@ results match tests on both a 16Mhz at90usb and a 16Mhz atmega2560).
|
||||||
| 2 stepper | 296 |
|
| 2 stepper | 296 |
|
||||||
| 3 stepper | 472 |
|
| 3 stepper | 472 |
|
||||||
|
|
||||||
### Arduino Due step rate benchmark ###
|
### Arduino Due step rate benchmark
|
||||||
|
|
||||||
The following configuration sequence is used on the Due:
|
The following configuration sequence is used on the Due:
|
||||||
```
|
```
|
||||||
|
@ -133,7 +132,7 @@ The test was last run on commit `8d4a5c16` with gcc version
|
||||||
| 1 stepper (no delay) | 77 |
|
| 1 stepper (no delay) | 77 |
|
||||||
| 3 stepper (no delay) | 299 |
|
| 3 stepper (no delay) | 299 |
|
||||||
|
|
||||||
### Duet Maestro step rate benchmark ###
|
### Duet Maestro step rate benchmark
|
||||||
|
|
||||||
The following configuration sequence is used on the Duet Maestro:
|
The following configuration sequence is used on the Duet Maestro:
|
||||||
```
|
```
|
||||||
|
@ -155,7 +154,7 @@ The test was last run on commit `8d4a5c16` with gcc version
|
||||||
| 1 stepper (no delay) | 70 |
|
| 1 stepper (no delay) | 70 |
|
||||||
| 3 stepper (no delay) | 254 |
|
| 3 stepper (no delay) | 254 |
|
||||||
|
|
||||||
### Duet Wifi step rate benchmark ###
|
### Duet Wifi step rate benchmark
|
||||||
|
|
||||||
The following configuration sequence is used on the Duet Wifi:
|
The following configuration sequence is used on the Duet Wifi:
|
||||||
```
|
```
|
||||||
|
@ -179,7 +178,7 @@ The test was last run on commit `59a60d68` with gcc version
|
||||||
| 3 stepper | 525 |
|
| 3 stepper | 525 |
|
||||||
| 4 stepper | 703 |
|
| 4 stepper | 703 |
|
||||||
|
|
||||||
### Beaglebone PRU step rate benchmark ###
|
### Beaglebone PRU step rate benchmark
|
||||||
|
|
||||||
The following configuration sequence is used on the PRU:
|
The following configuration sequence is used on the PRU:
|
||||||
```
|
```
|
||||||
|
@ -200,7 +199,7 @@ The test was last run on commit `b161a69e` with gcc version `pru-gcc
|
||||||
| 2 stepper | 853 |
|
| 2 stepper | 853 |
|
||||||
| 3 stepper | 883 |
|
| 3 stepper | 883 |
|
||||||
|
|
||||||
### STM32F042 step rate benchmark ###
|
### STM32F042 step rate benchmark
|
||||||
|
|
||||||
The following configuration sequence is used on the STM32F042:
|
The following configuration sequence is used on the STM32F042:
|
||||||
```
|
```
|
||||||
|
@ -220,7 +219,7 @@ The test was last run on commit `0b0c47c5` with gcc version
|
||||||
| 2 stepper | 328 |
|
| 2 stepper | 328 |
|
||||||
| 3 stepper | 558 |
|
| 3 stepper | 558 |
|
||||||
|
|
||||||
### STM32F103 step rate benchmark ###
|
### STM32F103 step rate benchmark
|
||||||
|
|
||||||
The following configuration sequence is used on the STM32F103:
|
The following configuration sequence is used on the STM32F103:
|
||||||
```
|
```
|
||||||
|
@ -242,7 +241,7 @@ The test was last run on commit `8d4a5c16` with gcc version
|
||||||
| 1 stepper (no delay) | 71 |
|
| 1 stepper (no delay) | 71 |
|
||||||
| 3 stepper (no delay) | 288 |
|
| 3 stepper (no delay) | 288 |
|
||||||
|
|
||||||
### STM32F4 step rate benchmark ###
|
### STM32F4 step rate benchmark
|
||||||
|
|
||||||
The following configuration sequence is used on the STM32F4:
|
The following configuration sequence is used on the STM32F4:
|
||||||
```
|
```
|
||||||
|
@ -277,7 +276,7 @@ using a 168Mhz clock).
|
||||||
| 1 stepper (no delay) | 52 |
|
| 1 stepper (no delay) | 52 |
|
||||||
| 3 stepper (no delay) | 226 |
|
| 3 stepper (no delay) | 226 |
|
||||||
|
|
||||||
### LPC176x step rate benchmark ###
|
### LPC176x step rate benchmark
|
||||||
|
|
||||||
The following configuration sequence is used on the LPC176x:
|
The following configuration sequence is used on the LPC176x:
|
||||||
```
|
```
|
||||||
|
@ -308,7 +307,7 @@ results were obtained by overclocking an LPC1768 to 120Mhz.
|
||||||
| 1 stepper (no delay) | 56 |
|
| 1 stepper (no delay) | 56 |
|
||||||
| 3 stepper (no delay) | 240 |
|
| 3 stepper (no delay) | 240 |
|
||||||
|
|
||||||
### SAMD21 step rate benchmark ###
|
### SAMD21 step rate benchmark
|
||||||
|
|
||||||
The following configuration sequence is used on the SAMD21:
|
The following configuration sequence is used on the SAMD21:
|
||||||
```
|
```
|
||||||
|
@ -331,7 +330,7 @@ micro-controller.
|
||||||
| 1 stepper (no delay) | 83 |
|
| 1 stepper (no delay) | 83 |
|
||||||
| 3 stepper (no delay) | 321 |
|
| 3 stepper (no delay) | 321 |
|
||||||
|
|
||||||
### SAMD51 step rate benchmark ###
|
### SAMD51 step rate benchmark
|
||||||
|
|
||||||
The following configuration sequence is used on the SAMD51:
|
The following configuration sequence is used on the SAMD51:
|
||||||
```
|
```
|
||||||
|
@ -362,7 +361,7 @@ micro-controller.
|
||||||
| 1 stepper (no delay) | 42 |
|
| 1 stepper (no delay) | 42 |
|
||||||
| 3 stepper (no delay) | 194 |
|
| 3 stepper (no delay) | 194 |
|
||||||
|
|
||||||
### RP2040 step rate benchmark ###
|
### RP2040 step rate benchmark
|
||||||
|
|
||||||
The following configuration sequence is used on the RP2040:
|
The following configuration sequence is used on the RP2040:
|
||||||
|
|
||||||
|
@ -388,7 +387,7 @@ Pico board.
|
||||||
| 1 stepper (no delay) | 5 |
|
| 1 stepper (no delay) | 5 |
|
||||||
| 3 stepper (no delay) | 22 |
|
| 3 stepper (no delay) | 22 |
|
||||||
|
|
||||||
### Linux MCU step rate benchmark ###
|
### Linux MCU step rate benchmark
|
||||||
|
|
||||||
The following configuration sequence is used on a Raspberry Pi:
|
The following configuration sequence is used on a Raspberry Pi:
|
||||||
```
|
```
|
||||||
|
@ -409,7 +408,7 @@ The test was last run on commit `db0fb5d5` with gcc version `gcc
|
||||||
| 2 stepper | 350 |
|
| 2 stepper | 350 |
|
||||||
| 3 stepper | 400 |
|
| 3 stepper | 400 |
|
||||||
|
|
||||||
## Command dispatch benchmark ##
|
## Command dispatch benchmark
|
||||||
|
|
||||||
The command dispatch benchmark tests how many "dummy" commands the
|
The command dispatch benchmark tests how many "dummy" commands the
|
||||||
micro-controller can process. It is primarily a test of the hardware
|
micro-controller can process. It is primarily a test of the hardware
|
||||||
|
@ -450,8 +449,7 @@ hub.
|
||||||
| stm32f446 (USB) | 870K | 01d2183f | arm-none-eabi-gcc (Fedora 7.4.0-1.fc30) 7.4.0 |
|
| stm32f446 (USB) | 870K | 01d2183f | arm-none-eabi-gcc (Fedora 7.4.0-1.fc30) 7.4.0 |
|
||||||
| rp2040 (USB) | 873K | c5667193 | arm-none-eabi-gcc (Fedora 10.2.0-4.fc34) 10.2.0 |
|
| rp2040 (USB) | 873K | c5667193 | arm-none-eabi-gcc (Fedora 10.2.0-4.fc34) 10.2.0 |
|
||||||
|
|
||||||
Host Benchmarks
|
## Host Benchmarks
|
||||||
---------------
|
|
||||||
|
|
||||||
It is possible to run timing tests on the host software using the
|
It is possible to run timing tests on the host software using the
|
||||||
"batch mode" processing mechanism (described in
|
"batch mode" processing mechanism (described in
|
||||||
|
|
|
@ -25,7 +25,7 @@ application. This document is not an authoritative reference; it is
|
||||||
intended as a collection of useful information that the Klipper
|
intended as a collection of useful information that the Klipper
|
||||||
developers have accumulated.
|
developers have accumulated.
|
||||||
|
|
||||||
## AVR micro-controllers ##
|
## AVR micro-controllers
|
||||||
|
|
||||||
|
|
||||||
In general, the Arduino project is a good reference for bootloaders
|
In general, the Arduino project is a good reference for bootloaders
|
||||||
|
@ -46,7 +46,7 @@ use.
|
||||||
The "avrdude" program is the most common tool used to flash atmega
|
The "avrdude" program is the most common tool used to flash atmega
|
||||||
chips (both bootloader flashing and application flashing).
|
chips (both bootloader flashing and application flashing).
|
||||||
|
|
||||||
### Atmega2560 ###
|
### Atmega2560
|
||||||
|
|
||||||
This chip is typically found in the "Arduino Mega" and is very common
|
This chip is typically found in the "Arduino Mega" and is very common
|
||||||
in 3d printer boards.
|
in 3d printer boards.
|
||||||
|
@ -65,7 +65,7 @@ To flash an application use something like:
|
||||||
avrdude -cwiring -patmega2560 -P/dev/ttyACM0 -b115200 -D -Uflash:w:out/klipper.elf.hex:i
|
avrdude -cwiring -patmega2560 -P/dev/ttyACM0 -b115200 -D -Uflash:w:out/klipper.elf.hex:i
|
||||||
```
|
```
|
||||||
|
|
||||||
### Atmega1280 ###
|
### Atmega1280
|
||||||
|
|
||||||
This chip is typically found in earlier versions of the "Arduino
|
This chip is typically found in earlier versions of the "Arduino
|
||||||
Mega".
|
Mega".
|
||||||
|
@ -84,7 +84,7 @@ To flash an application use something like:
|
||||||
avrdude -carduino -patmega1280 -P/dev/ttyACM0 -b57600 -D -Uflash:w:out/klipper.elf.hex:i
|
avrdude -carduino -patmega1280 -P/dev/ttyACM0 -b57600 -D -Uflash:w:out/klipper.elf.hex:i
|
||||||
```
|
```
|
||||||
|
|
||||||
### Atmega1284p ###
|
### Atmega1284p
|
||||||
|
|
||||||
This chip is commonly found in "Melzi" style 3d printer boards.
|
This chip is commonly found in "Melzi" style 3d printer boards.
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ application use something like this instead:
|
||||||
avrdude -carduino -patmega1284p -P/dev/ttyACM0 -b57600 -D -Uflash:w:out/klipper.elf.hex:i
|
avrdude -carduino -patmega1284p -P/dev/ttyACM0 -b57600 -D -Uflash:w:out/klipper.elf.hex:i
|
||||||
```
|
```
|
||||||
|
|
||||||
### At90usb1286 ###
|
### At90usb1286
|
||||||
|
|
||||||
This document does not cover the method to flash a bootloader to the
|
This document does not cover the method to flash a bootloader to the
|
||||||
At90usb1286 nor does it cover general application flashing to this
|
At90usb1286 nor does it cover general application flashing to this
|
||||||
|
@ -124,7 +124,7 @@ One can flash an application with it using something like:
|
||||||
teensy_loader_cli --mcu=at90usb1286 out/klipper.elf.hex -v
|
teensy_loader_cli --mcu=at90usb1286 out/klipper.elf.hex -v
|
||||||
```
|
```
|
||||||
|
|
||||||
### Atmega168 ###
|
### Atmega168
|
||||||
|
|
||||||
The atmega168 has limited flash space. If using a bootloader, it is
|
The atmega168 has limited flash space. If using a bootloader, it is
|
||||||
recommended to use the Optiboot bootloader. To flash that bootloader
|
recommended to use the Optiboot bootloader. To flash that bootloader
|
||||||
|
@ -143,8 +143,7 @@ like:
|
||||||
avrdude -carduino -patmega168 -P/dev/ttyACM0 -b115200 -D -Uflash:w:out/klipper.elf.hex:i
|
avrdude -carduino -patmega168 -P/dev/ttyACM0 -b115200 -D -Uflash:w:out/klipper.elf.hex:i
|
||||||
```
|
```
|
||||||
|
|
||||||
SAM3 micro-controllers (Arduino Due)
|
## SAM3 micro-controllers (Arduino Due)
|
||||||
------------------------------------
|
|
||||||
|
|
||||||
It is not common to use a bootloader with the SAM3 mcu. The chip
|
It is not common to use a bootloader with the SAM3 mcu. The chip
|
||||||
itself has a ROM that allows the flash to be programmed from 3.3V
|
itself has a ROM that allows the flash to be programmed from 3.3V
|
||||||
|
@ -167,8 +166,7 @@ bossac -U -p /dev/ttyACM0 -a -e -w out/klipper.bin -v -b
|
||||||
bossac -U -p /dev/ttyACM0 -R
|
bossac -U -p /dev/ttyACM0 -R
|
||||||
```
|
```
|
||||||
|
|
||||||
SAM4 micro-controllers (Duet Wifi)
|
## SAM4 micro-controllers (Duet Wifi)
|
||||||
----------------------------------
|
|
||||||
|
|
||||||
It is not common to use a bootloader with the SAM4 mcu. The chip
|
It is not common to use a bootloader with the SAM4 mcu. The chip
|
||||||
itself has a ROM that allows the flash to be programmed from 3.3V
|
itself has a ROM that allows the flash to be programmed from 3.3V
|
||||||
|
@ -187,8 +185,7 @@ To flash an application use something like:
|
||||||
bossac --port=/dev/ttyACM0 -b -U -e -w -v -R out/klipper.bin
|
bossac --port=/dev/ttyACM0 -b -U -e -w -v -R out/klipper.bin
|
||||||
```
|
```
|
||||||
|
|
||||||
SAMD21 micro-controllers (Arduino Zero)
|
## SAMD21 micro-controllers (Arduino Zero)
|
||||||
---------------------------------------
|
|
||||||
|
|
||||||
The SAMD21 bootloader is flashed via the ARM Serial Wire Debug (SWD)
|
The SAMD21 bootloader is flashed via the ARM Serial Wire Debug (SWD)
|
||||||
interface. This is commonly done with a dedicated SWD hardware dongle.
|
interface. This is commonly done with a dedicated SWD hardware dongle.
|
||||||
|
@ -226,8 +223,7 @@ flash command within the first few seconds of boot - something like:
|
||||||
avrdude -c stk500v2 -p atmega2560 -P /dev/ttyACM0 -u -Uflash:w:out/klipper.elf.hex:i
|
avrdude -c stk500v2 -p atmega2560 -P /dev/ttyACM0 -u -Uflash:w:out/klipper.elf.hex:i
|
||||||
```
|
```
|
||||||
|
|
||||||
SAMD51 micro-controllers (Adafruit Metro-M4 and similar)
|
## SAMD51 micro-controllers (Adafruit Metro-M4 and similar)
|
||||||
--------------------------------------------------------
|
|
||||||
|
|
||||||
Like the SAMD21, the SAMD51 bootloader is flashed via the ARM Serial
|
Like the SAMD21, the SAMD51 bootloader is flashed via the ARM Serial
|
||||||
Wire Debug (SWD) interface. To flash a bootloader with
|
Wire Debug (SWD) interface. To flash a bootloader with
|
||||||
|
@ -255,8 +251,7 @@ like:
|
||||||
bossac -U -p /dev/ttyACM0 --offset=0x4000 -w out/klipper.bin -v -b -R
|
bossac -U -p /dev/ttyACM0 --offset=0x4000 -w out/klipper.bin -v -b -R
|
||||||
```
|
```
|
||||||
|
|
||||||
STM32F103 micro-controllers (Blue Pill devices)
|
## STM32F103 micro-controllers (Blue Pill devices)
|
||||||
-----------------------------------------------
|
|
||||||
|
|
||||||
The STM32F103 devices have a ROM that can flash a bootloader or
|
The STM32F103 devices have a ROM that can flash a bootloader or
|
||||||
application via 3.3V serial. To access this ROM, one should connect
|
application via 3.3V serial. To access this ROM, one should connect
|
||||||
|
@ -276,7 +271,7 @@ for details on enabling the full uart on the Raspberry Pi GPIO pins.
|
||||||
After flashing, set both "boot 0" and "boot 1" back to low so that
|
After flashing, set both "boot 0" and "boot 1" back to low so that
|
||||||
future resets boot from flash.
|
future resets boot from flash.
|
||||||
|
|
||||||
### STM32F103 with stm32duino bootloader ###
|
### STM32F103 with stm32duino bootloader
|
||||||
|
|
||||||
The "stm32duino" project has a USB capable bootloader - see:
|
The "stm32duino" project has a USB capable bootloader - see:
|
||||||
[https://github.com/rogerclarkmelbourne/STM32duino-bootloader](https://github.com/rogerclarkmelbourne/STM32duino-bootloader)
|
[https://github.com/rogerclarkmelbourne/STM32duino-bootloader](https://github.com/rogerclarkmelbourne/STM32duino-bootloader)
|
||||||
|
@ -301,7 +296,8 @@ bootloader is still active (the bootloader will flash a board led
|
||||||
while it is running). Alternatively, set the "boot 0" pin to low and
|
while it is running). Alternatively, set the "boot 0" pin to low and
|
||||||
"boot 1" pin to high to stay in the bootloader after a reset.
|
"boot 1" pin to high to stay in the bootloader after a reset.
|
||||||
|
|
||||||
### STM32F103 with HID bootloader ###
|
### STM32F103 with HID bootloader
|
||||||
|
|
||||||
The [HID bootloader](https://github.com/Serasidis/STM32_HID_Bootloader) is a
|
The [HID bootloader](https://github.com/Serasidis/STM32_HID_Bootloader) is a
|
||||||
compact, driverless bootloader capable of flashing over USB. Also available
|
compact, driverless bootloader capable of flashing over USB. Also available
|
||||||
is a [fork with builds specific to the SKR Mini E3 1.2](
|
is a [fork with builds specific to the SKR Mini E3 1.2](
|
||||||
|
@ -389,8 +385,8 @@ not available, so it may be done by setting pin PA2 low if you flashed
|
||||||
the SKR Mini E3's "PIN" document. There is a ground pin next to PA2
|
the SKR Mini E3's "PIN" document. There is a ground pin next to PA2
|
||||||
which you can use to pull PA2 low.
|
which you can use to pull PA2 low.
|
||||||
|
|
||||||
STM32F4 micro-controllers (SKR Pro 1.1)
|
## STM32F4 micro-controllers (SKR Pro 1.1)
|
||||||
===============================================
|
|
||||||
STM32F4 microcontrollers come equipped with a built-in system bootloader
|
STM32F4 microcontrollers come equipped with a built-in system bootloader
|
||||||
capable of flashing over USB (via DFU), 3.3v Serial, and various other
|
capable of flashing over USB (via DFU), 3.3v Serial, and various other
|
||||||
methods (see STM Document AN2606 for more information). Some
|
methods (see STM Document AN2606 for more information). Some
|
||||||
|
@ -423,8 +419,7 @@ setting "boot 0" low, "boot 1" high and plugging in the device. After
|
||||||
programming is complete unplug the device and set "boot 1" back to low
|
programming is complete unplug the device and set "boot 1" back to low
|
||||||
so the application will be loaded.
|
so the application will be loaded.
|
||||||
|
|
||||||
LPC176x micro-controllers (Smoothieboards)
|
## LPC176x micro-controllers (Smoothieboards)
|
||||||
------------------------------------------
|
|
||||||
|
|
||||||
This document does not describe the method to flash a bootloader
|
This document does not describe the method to flash a bootloader
|
||||||
itself - see:
|
itself - see:
|
||||||
|
@ -439,8 +434,7 @@ this bootloader is to copy the application file (eg,
|
||||||
`out/klipper.bin`) to a file named `firmware.bin` on an SD card, and
|
`out/klipper.bin`) to a file named `firmware.bin` on an SD card, and
|
||||||
then to reboot the micro-controller with that SD card.
|
then to reboot the micro-controller with that SD card.
|
||||||
|
|
||||||
Running OpenOCD on the Raspberry PI
|
## Running OpenOCD on the Raspberry PI
|
||||||
-----------------------------------
|
|
||||||
|
|
||||||
OpenOCD is a software package that can perform low-level chip flashing
|
OpenOCD is a software package that can perform low-level chip flashing
|
||||||
and debugging. It can use the GPIO pins on a Raspberry Pi to
|
and debugging. It can use the GPIO pins on a Raspberry Pi to
|
||||||
|
|
|
@ -3,8 +3,7 @@
|
||||||
This document describes the overall code layout and major code flow of
|
This document describes the overall code layout and major code flow of
|
||||||
Klipper.
|
Klipper.
|
||||||
|
|
||||||
Directory Layout
|
## Directory Layout
|
||||||
----------------
|
|
||||||
|
|
||||||
The **src/** directory contains the C source for the micro-controller
|
The **src/** directory contains the C source for the micro-controller
|
||||||
code. The **src/atsam/**, **src/atsamd/**, **src/avr/**,
|
code. The **src/atsam/**, **src/atsamd/**, **src/avr/**,
|
||||||
|
@ -40,8 +39,7 @@ contains temporary build time objects. The final micro-controller
|
||||||
object that is built is **out/klipper.elf.hex** on AVR and
|
object that is built is **out/klipper.elf.hex** on AVR and
|
||||||
**out/klipper.bin** on ARM.
|
**out/klipper.bin** on ARM.
|
||||||
|
|
||||||
Micro-controller code flow
|
## Micro-controller code flow
|
||||||
--------------------------
|
|
||||||
|
|
||||||
Execution of the micro-controller code starts in architecture specific
|
Execution of the micro-controller code starts in architecture specific
|
||||||
code (eg, **src/avr/main.c**) which ultimately calls sched_main()
|
code (eg, **src/avr/main.c**) which ultimately calls sched_main()
|
||||||
|
@ -91,8 +89,7 @@ inlining functions across compilation units, so most of these tiny
|
||||||
gpio functions are inlined into their callers, and there is no
|
gpio functions are inlined into their callers, and there is no
|
||||||
run-time cost to using them.
|
run-time cost to using them.
|
||||||
|
|
||||||
Klippy code overview
|
## Klippy code overview
|
||||||
--------------------
|
|
||||||
|
|
||||||
The host code (Klippy) is intended to run on a low-cost computer (such
|
The host code (Klippy) is intended to run on a low-cost computer (such
|
||||||
as a Raspberry Pi) paired with the micro-controller. The code is
|
as a Raspberry Pi) paired with the micro-controller. The code is
|
||||||
|
@ -117,8 +114,7 @@ response messages from the micro-controller in the Python code (see
|
||||||
the log (see **klippy/queuelogger.py**) so that the other threads
|
the log (see **klippy/queuelogger.py**) so that the other threads
|
||||||
never block on log writes.
|
never block on log writes.
|
||||||
|
|
||||||
Code flow of a move command
|
## Code flow of a move command
|
||||||
---------------------------
|
|
||||||
|
|
||||||
A typical printer movement starts when a "G1" command is sent to the
|
A typical printer movement starts when a "G1" command is sent to the
|
||||||
Klippy host and it completes when the corresponding step pulses are
|
Klippy host and it completes when the corresponding step pulses are
|
||||||
|
@ -229,8 +225,7 @@ kinematic classes. It's this part of the code which specifies the
|
||||||
movements and their timings. The remaining parts of the processing is
|
movements and their timings. The remaining parts of the processing is
|
||||||
mostly just communication and plumbing.
|
mostly just communication and plumbing.
|
||||||
|
|
||||||
Adding a host module
|
## Adding a host module
|
||||||
--------------------
|
|
||||||
|
|
||||||
The Klippy host code has a dynamic module loading capability. If a
|
The Klippy host code has a dynamic module loading capability. If a
|
||||||
config section named "[my_module]" is found in the printer config file
|
config section named "[my_module]" is found in the printer config file
|
||||||
|
@ -309,8 +304,7 @@ The following may also be useful:
|
||||||
sure to place a copyright notice at the top of the module. See the
|
sure to place a copyright notice at the top of the module. See the
|
||||||
existing modules for the preferred format.
|
existing modules for the preferred format.
|
||||||
|
|
||||||
Adding new kinematics
|
## Adding new kinematics
|
||||||
---------------------
|
|
||||||
|
|
||||||
This section provides some tips on adding support to Klipper for
|
This section provides some tips on adding support to Klipper for
|
||||||
additional types of printer kinematics. This type of activity requires
|
additional types of printer kinematics. This type of activity requires
|
||||||
|
@ -349,8 +343,7 @@ Useful steps:
|
||||||
to micro-controller commands. This is useful to exercise corner
|
to micro-controller commands. This is useful to exercise corner
|
||||||
cases and to check for regressions.
|
cases and to check for regressions.
|
||||||
|
|
||||||
Porting to a new micro-controller
|
## Porting to a new micro-controller
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
This section provides some tips on porting Klipper's micro-controller
|
This section provides some tips on porting Klipper's micro-controller
|
||||||
code to a new architecture. This type of activity requires good
|
code to a new architecture. This type of activity requires good
|
||||||
|
@ -402,8 +395,7 @@ Useful steps:
|
||||||
the micro-controller with the main klippy.py program.
|
the micro-controller with the main klippy.py program.
|
||||||
9. Consider adding build test cases in the test/ directory.
|
9. Consider adding build test cases in the test/ directory.
|
||||||
|
|
||||||
Coordinate Systems
|
## Coordinate Systems
|
||||||
------------------
|
|
||||||
|
|
||||||
Internally, Klipper primarily tracks the position of the toolhead in
|
Internally, Klipper primarily tracks the position of the toolhead in
|
||||||
cartesian coordinates that are relative to the coordinate system
|
cartesian coordinates that are relative to the coordinate system
|
||||||
|
@ -488,8 +480,7 @@ cartesian coordinates relative to the coordinate system specified in
|
||||||
the config file) after a `G28` home command. The `SET_GCODE_OFFSET`
|
the config file) after a `G28` home command. The `SET_GCODE_OFFSET`
|
||||||
command can alter this value.
|
command can alter this value.
|
||||||
|
|
||||||
Time
|
## Time
|
||||||
----
|
|
||||||
|
|
||||||
Fundamental to the operation of Klipper is the handling of clocks,
|
Fundamental to the operation of Klipper is the handling of clocks,
|
||||||
times, and timestamps. Klipper executes actions on the printer by
|
times, and timestamps. Klipper executes actions on the printer by
|
||||||
|
|
|
@ -197,7 +197,7 @@ stepper_position = (sqrt(arm_length^2
|
||||||
+ cartesian_z_position)
|
+ cartesian_z_position)
|
||||||
```
|
```
|
||||||
|
|
||||||
### Stepper motor acceleration limits ###
|
### Stepper motor acceleration limits
|
||||||
|
|
||||||
With delta kinematics it is possible for a move that is accelerating
|
With delta kinematics it is possible for a move that is accelerating
|
||||||
in cartesian space to require an acceleration on a particular stepper
|
in cartesian space to require an acceleration on a particular stepper
|
||||||
|
@ -218,7 +218,7 @@ this limit, moves at the extreme edge of the build envelope (where a
|
||||||
stepper arm may be nearly horizontal) will have a lower maximum
|
stepper arm may be nearly horizontal) will have a lower maximum
|
||||||
acceleration and velocity.
|
acceleration and velocity.
|
||||||
|
|
||||||
### Extruder kinematics ###
|
### Extruder kinematics
|
||||||
|
|
||||||
Klipper implements extruder motion in its own kinematic class. Since
|
Klipper implements extruder motion in its own kinematic class. Since
|
||||||
the timing and speed of each print head movement is fully known for
|
the timing and speed of each print head movement is fully known for
|
||||||
|
@ -232,7 +232,7 @@ generation uses the same formulas that cartesian robots use:
|
||||||
stepper_position = requested_e_position
|
stepper_position = requested_e_position
|
||||||
```
|
```
|
||||||
|
|
||||||
### Pressure advance ###
|
### Pressure advance
|
||||||
|
|
||||||
Experimentation has shown that it's possible to improve the modeling
|
Experimentation has shown that it's possible to improve the modeling
|
||||||
of the extruder beyond the basic extruder formula. In the ideal case,
|
of the extruder beyond the basic extruder formula. In the ideal case,
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
Measuring Resonances
|
# Measuring Resonances
|
||||||
====================
|
|
||||||
|
|
||||||
Klipper has built-in support for ADXL345 accelerometer, which can be used to
|
Klipper has built-in support for ADXL345 accelerometer, which can be used to
|
||||||
measure resonance frequencies of the printer for different axes, and auto-tune
|
measure resonance frequencies of the printer for different axes, and auto-tune
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
Resonance Compensation
|
# Resonance Compensation
|
||||||
====================
|
|
||||||
|
|
||||||
Klipper supports Input Shaping - a technique that can be used to reduce ringing
|
Klipper supports Input Shaping - a technique that can be used to reduce ringing
|
||||||
(also known as echoing, ghosting or rippling) in prints. Ringing is a surface
|
(also known as echoing, ghosting or rippling) in prints. Ringing is a surface
|
||||||
|
|
|
@ -3,8 +3,7 @@
|
||||||
This document describes the process of running Klipper on a Beaglebone
|
This document describes the process of running Klipper on a Beaglebone
|
||||||
PRU.
|
PRU.
|
||||||
|
|
||||||
Building an OS image
|
## Building an OS image
|
||||||
--------------------
|
|
||||||
|
|
||||||
Start by installing the
|
Start by installing the
|
||||||
[Debian 9.9 2019-08-03 4GB SD IoT](https://beagleboard.org/latest-images)
|
[Debian 9.9 2019-08-03 4GB SD IoT](https://beagleboard.org/latest-images)
|
||||||
|
@ -20,8 +19,7 @@ git clone https://github.com/KevinOConnor/klipper
|
||||||
./klipper/scripts/install-beaglebone.sh
|
./klipper/scripts/install-beaglebone.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Install Octoprint
|
## Install Octoprint
|
||||||
-----------------
|
|
||||||
|
|
||||||
One may then install Octoprint:
|
One may then install Octoprint:
|
||||||
```
|
```
|
||||||
|
@ -56,8 +54,7 @@ sudo systemctl start octoprint
|
||||||
Make sure the octoprint web server is accessible - it should be at:
|
Make sure the octoprint web server is accessible - it should be at:
|
||||||
[http://beaglebone:5000/](http://beaglebone:5000/)
|
[http://beaglebone:5000/](http://beaglebone:5000/)
|
||||||
|
|
||||||
Building the micro-controller code
|
## Building the micro-controller code
|
||||||
----------------------------------
|
|
||||||
|
|
||||||
To compile the Klipper micro-controller code, start by configuring it
|
To compile the Klipper micro-controller code, start by configuring it
|
||||||
for the "Beaglebone PRU":
|
for the "Beaglebone PRU":
|
||||||
|
@ -87,15 +84,13 @@ make flash
|
||||||
sudo service klipper start
|
sudo service klipper start
|
||||||
```
|
```
|
||||||
|
|
||||||
Remaining configuration
|
## Remaining configuration
|
||||||
-----------------------
|
|
||||||
|
|
||||||
Complete the installation by configuring Klipper and Octoprint
|
Complete the installation by configuring Klipper and Octoprint
|
||||||
following the instructions in
|
following the instructions in
|
||||||
[the main installation document](Installation.md#configuring-klipper).
|
[the main installation document](Installation.md#configuring-klipper).
|
||||||
|
|
||||||
Printing on the Beaglebone
|
## Printing on the Beaglebone
|
||||||
--------------------------
|
|
||||||
|
|
||||||
Unfortunately, the Beaglebone processor can sometimes struggle to run
|
Unfortunately, the Beaglebone processor can sometimes struggle to run
|
||||||
OctoPrint well. Print stalls have been known to occur on complex
|
OctoPrint well. Print stalls have been known to occur on complex
|
||||||
|
|
Loading…
Reference in New Issue