Nitehawk-36 by LDO is a toolboard featuring RP2040 MCU, TMC2209 stepper drive, ADXL345 accelerometer, and USB port. Nitehawk-36's USB based connection method allows for a simple and easy setup compared to other CAN toolboards. The USB connnection also allows for a secondary USB port to connect your nozzle webcam or eddy current probe.
The Nitehawk system consists of two PCBs and the Umbilical Cable. A simplified wiring diagram is shown below:
The printed part is available in the Nitehawk github repo here.
A Klipper Configuation can be found in the Nitehawk-36 github repo here.
Note: There is a possibility that the heatsink on the Nitehawk-36 board is misaligned. Accidentally pressing on the heatsink can squeeze the resistor, causing a short circuit. If you have already received the Nitehawk-36 but have not yet installed it, for safety reasons, we recommend that you carefully remove the heatsink from the board. Not having the heatsink will not affect the use of th board.Those who have installed and working boards don't need to worry about it and may choose to leave the heatsinks on.
Device/Port | PCB Label | Connector Type | RP2040 Pin | Description |
E Motor | MOTOR | JST-XH2.5 4P | gpio23/24/25/0/1 (step/dir/ena/uart/tx) | A stepper motor port for the extruder. Driven by a TMC2209 chip. The current sense resistor is 100 mΩ. Enable is active low |
Filament Sensor | JST-PH2.0 2P | gpio3 | Connects to the filament sensor. Supports switch based sensors only. | |
Probe | PRB | JST-PH2.0 3P | gpio10 | Probe for bed leveling and/or Z sensing. |
X Endstop | X-STOP | JST-PH2.0 2P | gpio13 | Connects to the X endstop. Supports switch based endstops only. |
Part Fan | PCF | JST-PH2.0 2P | gpio6 | Connects to part cooling fan. |
Hotend Fan | HEF | JST-PH2.0 3P | gpio5/16 (fan/tacho) | Connects to hotend fan. The fan control pin is gpio5 and the tachometer sensor pin is gpio16. |
PCF Voltage Selector | 2.0mm Jumper | Selects the supply voltage of the part fan. Selection of 24V or 5V. | ||
HEF Voltage Selector | 2.0mm Jumper | Selects the supply voltage of the hotend fan. Selection of 24V or 5V. | ||
Probe Votage Selector | 2.0mm Jumper | Selects the supply voltage of the probe port. Selection of 24V or 5V. | ||
USB Expansion Port | JST-ZH1.5 5P | Connects to USB expansion board. | ||
Neopixel | JST-PH2.0 3P | gpio7 | Connects to neopixel LEDs. | |
Hotend Heater | HE0 | E0506 Ferrule | gpio9 | Connects to the hotend heater. |
Hotend Thermistor | TH0 | JST-PH2.0 2P | gpio29 | Connects to the hotend thermistor. Uses a 2.2kΩ pull up resistor. |
Activity LED | ACT | gpio8 | A small software controlled onboard LED. Active low. | |
Accelerometer | gpio27/18/20/19 (cs/clk/mosi/miso) | ADXL345 accelerometer for input shaping. Controlled via software SPI. | ||
Toolhead Cable | XT30(2+2) | A USB port for toolhead. |
Parameter | Symbol | Minimum | Typical | Maximum | Unit | Comments |
Power Supply Input | Vin | 20 | 24 | 28 | V | power input for the toolboard. |
Temperature | Tenv | 65* | °C | operating ambient temperature | ||
5V Current | Irpi | 5 | A | current output for the 5V buck converter. | ||
Fan Current | Ifan | TBD | A | current rating for each fan port (HEF and PCF). |
*This was previously incorrectly marked 85°C. Note that board temperature is also influenced by heat from the extruder motor and the onboard stepper drive. Setting the onboard stepper drive to a higher current setting can increase the overall temperature of the toolboard and its components.
Note: The max wattage is 120W.
Note: If the rated current of your stepper motor is 1A, we recommend setting it below 0.7A. If you need more than 0.7A, please add extra heat dissipation for your board.
The firmware for Nitehawk consists of two components: Katapult and Klipper. Katapult is a bootloader designed specifically for Klipper, it ensures that the software on the RP2040 MCU boots up smoothly and allows for easy updating of the Klipper firmware. You can learn more about Katapult here. Klipper is the main firmware that runs on the RP2040 MCU, you can learn more here.
Your Nitehawk will come shipped with both Katapult and Klipper installed. Ideally, you will only ever need to occasionally update the Klipper firmware and never have to touch Katapult. If the Katapult bootloader was erased or is not present for any reason, you can check this below Installing the Katapult Bootloader section for instructions on how to reupload Katapult.
No special setup is required for installing either Klipper or Katapult. Nitehawk simply needs to be hooked up as it operates normally in your 3D printer, with the toolboard connected to your Klipper host device (e.g. Raspberry Pi) via the USB adapter board. You also need access to the two buttons (RESET and BOOT0) on the toolboard. Also ACT light are important later. Reference the photo below to find the buttons and the ACT light.
The following instructions are for compiling and upload new Klipper firmware to your Nitehawk toolboard. You need to perform these steps if you want to update your klipper firmware to the newest version or if you are doing a fresh install and just uploaded Katapult (see the previous sections). Before compiling the firmware, you will need to have Klipper already installed on your host device (e.g. Raspberry Pi).
ssh
command in their command line terminal. Run the following commands to open the firmware configuration interface:cd ~/klipper
make menuconfig
In the configurator, Enable extra low-level configuration options, choose Raspberry Pi RP2040, match the rest of the settings with the screenshot below:
16KiB bootloader
offset. Otherwise you will erase the Katapult bootloader!Q
to quit and confirm with Y
es when prompted to save. And run the following to generate the firmware file:make clean
make
A firmware file called will now be generated and can be located in the directory ~/klipper/out
. You are now ready to upload this firmware to the Nitehawk toolboard. The recommended method is uploading via the make flash
command.
ls /dev/serial/by-id
to find the USB ID of your Nitehawk toolboard. The USB ID should have a format similar to this: usb-Klipper_rp2040_1234567890000000-if00
.python
, pip
, and the pyserial
python module if it is not present. You may receive an error: externally managed environment
when running the last command. This simply means pyserial
has already been installed and you may move on to the next step.sudo apt install python3 python3-pip
pip install pyserial
Run the following commands to upload the firmware to the MCU directly:
cd ~/klipper
sudo service klipper stop
make flash FLASH_DEVICE=/dev/serial/by-id/<your USB ID>
sudo service klipper start
If you encounter any connection issues after flashing the new firmware, reboot your printer. Your toolboard should now have the newest firmware. If the flashing process failed, you may want to try using the the second method and upload Klipper via Katapult
In this section we will use an alternative method to upload klipper firmware using the Katapult bootloader. If your toolboad is missing the Katapult bootloader for any reason, you should follow the next section to install it first.
test -e ~/katapult && (cd ~/katapult && git pull) || (cd ~ && git clone https://github.com/Arksine/katapult) ; cd ~
To upload Klipper, we will use a Python script to communicate with the Katapult bootloader inside of the Nitehawk Toolboard. First, we will first need to setup a Python3 environment. Run the following:
virtualenv -p python3 ~/katapult-env
~/katapult-env/bin/pip3 install pyserial
This creates a Python 3 environment in the location ~/katapult-env/
and installs the module pyserial
which is required to run the upload script.
ls /dev/serial/by-id/
. You should see something like usb-katapult_rp2040_A1234567898D1234-if00
- note that the address contains the word katapult
. If not, this means either your Nitehawk did not have Katapult installed or you did not enter the Katapult bootloader properly. Copy the address down for the next step, do not exit the bootloader yet.Flash Success
at the end.~/katapult-env/bin/python3 ~/katapult/scripts/flashtool.py -d /dev/serial/by-id/usb-katapult_rp2040_A1234567898D1234-if00
As a finally verification, run ls /dev/serial/by-id/
. you should see a Klipper USB serial address in the form of usb-Klipper_rp2040_E1234567A12D9835-if00
.
In this section we will compile and upload the Katapult Bootloader. Note that your Nitehawk toolboard normally ships with Katapult pre-installed and you only need to perform the following operations if Katapult was inadvertently overwritten or lost.
test -e ~/katapult && (cd ~/katapult && git pull) || (cd ~ && git clone https://github.com/Arksine/katapult) ; cd ~
Now we will configure need to configure some options:
cd ~/katapult
make menuconfig
This will bring us to the configuration menu. Make sure to set the options as below:
Q
to quit and confirm with Y
es when prompted to save. next run the following command to compile and generate the Katapult binary files:make clean
make
A binary file called katapult.uf2
will now be created in the location ~/katapult/out/
. Our next job is to upload this file into the RP2040 MCU on the Nitehawk toolboard.
ls /dev/sda*
to confirm. You should see something like /dev/sda/ dev/sda1
. If you get something like ls: cannot access '/dev/sda*': No such file or directory
this means either Nitehawk didn't enter boot mode or there is a problem with the physical connection between the Raspberry Pi and Nitehawk.sudo mkdir -p /mnt/pico
sudo mount /dev/sda1 /mnt/pico
sudo cp ~/katapult/out/katapult.uf2 /mnt/pico
sudo sync
sudo umount /mnt/pico
The above commands basically mount the Nitehawk as a storage drive and copies the katapult binary files into that drive. It then unmounts the drive. If everything went smoothly, you should now be able to see the ACT light located below the BOOT0 button blink slowly. To double check that Katapult is installed, run ls /dev/serial/by-id
. You should see something like: usb-katapult_rp2040_A1234567898D1234-if00
which is USB serial address of Nitehawk running Katapult. A few small details to note here:
Items | QTY |
Toolhead PCB | 1 |
USB Adapter PCB | 1 |
USB Umbilical Cable 2.15m | 1 |
USB-A to USB-C Data Cable, 0.4m | 1 |
24V Power Cable | 1 |
USB Hookup Cable | 1 |
Self-Tapping Screw, M2x10 | 3 |
Machine Screw, SHCS, M3x8 | 2 |
Machine Screw, SHCS, M3x12 | 4 |
MicroFit3 style Male Connector, 3x2pin | 1 |
MicroFit3 style Female Crimp Terminal | 8 |
XH2.5 Female Connector, 4pin | 1 |
XH2.5 Female Crimp Terminal | 8 |
PH2.0 Female Connector, 2pin | 5 |
PH2.0 Female Connector, 3pin | 3 |
PH2.0 Female Crimp Terminal | 30 |
Ferrule, 1008 | 4 |
Ferrule, 0508 | 4 |