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:
USB Adapter Mount, this is the mount for the USB adapter PCB. It is designed to be used with a standard Voron DIN clip and can be mounted in two different orientations. It also features a cover to reduce the chance of static discharge onto the PCB.
The mount for your toolboard will depend on the toolhead and specifically the extruder which the PCB is typically mounted behind. The following lists some of the toolboard mounts that are designed specifically for, or are compatible with Nitehawk-36:
If you designed a mount for Nitehawk-36 and wish for it to be highlighted here, please contact a member of the LDO team on Discord!
If you wish to design your own mount, we provide here some dimensions to reference:
A Klipper Configuation can be found in the Nitehawk-36 github repo here.
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. |
Aux. Port | (P12) | JST-PH2.0 2P (unpopulated) | This is an unpopulated port that can be optionally soldered with a PH2.0 connector. It can be used as an always-on 24V fan port. | |
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.
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.
Nitehawk-36 has been tested to operate in enclosed printer environments with temperatures of up to 65°C. However, this is a nominal temperature rating of which many factors will influence the actual temperature on your toolboard:
Note that elevated operating temperatures can reduce the lifespan of components (mosfets, power supplies, microcontrollers) on your toolboard.
The connector used at the toolboard side is Amass XT30(2+2)-F. You may encounter three variants. all variants are compatible with Nitehawk-36, Nitehawk-SB, and Orbitool Toolboards but have different form factors,
The following shows the detailed pinout of the XT30 connector:
Pin # | Name | Colour | Description |
1 | GND/Shielding | Black | Cable shielding and GND on the PCB share this pin. |
2 | 24V | Red | Provides 24V power to the toolboard. |
3 | D+ | Brown/Green | USB Data +. This conductor may be brown or green depending on batch. |
4 | D- | White | USB Data - |
Micro-Fit 3.0 is the connector used at the USB adapter side of the umbilical cable. This connector is fairly easy to crimp and allows for the cable to be easily shortened if needed. Never plug or unplug this connector when the machine is powered! Doing so may risk damage to the Nitehawk or your Host (Raspberry Pi). The following shows the detailed pinout of the connector:
Pin # | Name | Colour | Description |
1 | NC/GND | This pin is not connected at the cable, but is connected to GND on the PCB. | |
2 | NC/Shielding/GND | Cable shielding is connected to GND on the PCB. In newer versions this pin is not used. | |
3 | GND | Black | In newer versions, GND and shielding share the same conductor. |
4 | D+ | Brown/Green | USB Data +. This conductor may be brown or green depending on batch. |
5 | D- | White | USB Data - |
6 | 24V | Red | Provides 24V power to the toolboard. |
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 |