Bigtreetech enters fully into Klipper solutions all in one with its Pad 7.
If a few weeks ago we enjoyed a similar solution, the Raspberry Pad 5, which left us an excellent taste in our mouths, which we have controlling two of our laboratory machines. Now Bigtreetech has launched its big sister Pad 7 that make it a perfect all-in-one solution.
As always before continuing with the article, remind you that you can join 3DWork in our Telegram channel full of deranged by 3D printing, or in our social networks Facebook, Twitter, Instagram.
Below you can see more details of its characteristics, as well as how it behaves.
The Bigtreetech Pad 7 has an imposing 7″ screen in addition to mounting its CM4 module, in our case a CB1 module based on an Allwinner H616 chip, which is a perfect solution for running Klipper.
To complete the device we have excellent relatively compact housing in which we have easy access to the multitude of available connections that we will detail later.
In the software part and depending on the CM4 module that we use we will have access to different distributions of Linux / Raspberry Pi OS that will allow us to enjoy a perfect experience with Klipper. Something that in other similar devices of other brands has ended up being a big headache … Again Bigtreetech thinks about the maker community that is always appreciated!!
As usual in Bigtreetech the Pad 7 comes with excellent hardware features:
Here are some diagrams of Pad 7:
As we anticipated in the specifications, the Pad 7 comes prepared with several expansion/improvement connections that we can use to expand its functionalities such as the use of accelerometers, CANbus, etc …
The installation of ADXL345 accelerometer, included in our kit, can not be simpler and once adjusted the configuration of our system will simply connect it to the SPI port of our Pad 7
In the previous diagram we can find the order of pins of the connector in case we want to use another accelerometer.
Our Pad 7 has a CANbus connection that can be very interesting for many machines greatly simplifying the wiring to our print head.
In the above diagram you can find the order of pins of the connector.
Bigtreetech CB1 modules are, in terms of quality/price, probably the best choice today for use with Klipper.
In any case we have the option to use Raspberry CM4 modules in our Pad 7.
Bigtreetech has always been very aware of users, so it is one of the few brands that support projects related to Klipper which ensures a better experience in its use.
That is why, and depending on the CM4 module we use, we will have different options of Klipper distributions to install:
Next we will proceed to install the Klipper system in our CB1 module, we have two options:
#hostname="BTT-CB1"
hostname="BTT-Pad7"
overlays=ws2812 light mcp2515 spidev1_1
allow-hotplug can0
iface can0 can static
bitrate 1000000
up ifconfig $IFACE txqueuelen 1024
# Enable our CB1 as a secondary MCU
[mcu CB1]
serial: /tmp/klipper_host_mcu
[adxl345]
cs_pin: CB1:None
spi_bus: spidev1.1
axes_map: z,y,-x # Modify according to the actual orientation of the ADXL345 installed on the printer.
To install the Klipper system in our CM4 module, we recommend two options:
Once downloaded the Klipper distribution that we like the most, we will perform the same steps that we described with the CM1 module to apply the OS to our CM4, we advise you to go through the installation guide of the Bigtreetech Pad 5 where you will have more detail of the process.
As is done with a CB1 module we must make some adjustments in the configuration:
console=serial0,115200
if it existsenable_uart=1
if it existsdtoverlay=gpio-led
dtparam=gpio=14,label=Pad7-lcd,active_low=1
hdmi_group=2
hdmi_mode=87
hdmi_cvt 1024 600 60 6 0 0 0
hdmi_drive=1
dtoverlay=dwc2,dr_mode=host
dtparam=spi=on
dtoverlay=mcp2515-can0,oscillator=12000000,interrupt=24,spimaxfrequency=10000000
allow-hotplug can0
iface can0 can static
bitrate 1000000
up ifconfig $IFACE txqueuelen 1024
# Enable our CM4 as a secondary MCU
[mcu CM4]
serial: /tmp/klipper_host_mcu
[adxl345]
cs_pin: CM4:None
spi_bus: spidev0.1
axes_map: z,y,-x # Modify according to the actual orientation of the ADXL345 installed on the printer.
Once we have installed our operating system on Pad 7 we will start this. If all goes well, the screen will show the KlipperScreen interface which will inform us of an error for not finding our printer.cfg with the configuration of our printer.
Do not panic, we simply do not have any configuration enabled and therefore tells us that our Klipper found an error.
To start with the configuration we will connect to the web interface (Mainsail) from our web browser using http://btt-pad7.local or if we customize this name during the configuration we will use the custom one.
In order to find the IP of our Pad 7 we can use Fing which is a cross-platform application that will scan us and list all the devices in our network. It should appear with the hostname btt-pad7 or the one defined in our system.cfg above.
Once our IP is identified, we will go to our browser and use it to access the Klipper web interface… We advise you that the first thing to do is an update of all Klipper components:
Already with access to the interface we only have to create and apply the Klipper firmware to our MCU (electronics) and find our serialID, you have information about these steps here.
Once we have applied the firmware to our MCU and with the communication serialID we only have to create and adjust our Klipper machine configuration, connection, and macros that we want to use.
If everything has gone well, our Pad 7 can already connect to our MCU and our screen will show a control interface of this!!
We advise you to follow the steps described in our Klipper configuration guides. Some of them you can launch from the screen options themselves, we advise you to follow the configuration guides in order to make sure we leave everything perfect.
You have more detailed information about this process in our Input Shaper guide, in any case, we will guide you through the process using our Pad 7.
We will start by connecting our ADXL345 included in the kit to the SPI port.
We will update our printer.cfg adding as a second MCU our CB1 and we will define the accelerometer (in our case for a CB1, remember that in CM4 this configuration is slightly different)
[mcu CB1]
serial: /tmp/klipper_host_mcu
[adxl345]
cs_pin: CB1:None
spi_bus: spidev1.1
axes_map: z,y,-x # Modify according to the actual orientation of the ADXL345 installed on the printer.
In our case we are going to launch the process in one of our Cartesian printers, so we must place the sensor on the X axis (print head) and after making the measurements anchor it to our Y axis (bed). In the event that we have a CoreXY printer anchoring it in the print head is enough.
For more information about the process, we advise you to follow our Input Shaper guide.
You can also perform the process from the Printer/Configuration/Input Shaper/Auto-calibrate screen.
Klipper is an incredibly flexible and powerful 3D printer firmware as we have seen, an important aspect is its integration and configuration of our slicer.
An important aspect is to make sure that our slicer generates the laminate or g-code (G-code flavor) valid for it to be interpreted by Klipper.
Today slicers such as PrusaSlicer/SuperSlicer and Bambu Studio/OrcaSlicer support the generation of the g-code for Klipper for which they are usually the most advisable.
Other slicers can be used without problem, since Klipper can process g-codes generated for Marlin or Smoothiware, but may need certain adjustments to avoid including g-codes that are not supported by Klipper.
Similarly, generating g-code for other systems can cause similar issues, for example, selecting Marlin2.
In this case, it is advisable to review the configuration of our laminator and select to generate the slice in Klipper, Marlin or Smoothiware format… In this order, ideally.
Another important aspect is to adjust our start and end of print g-codes, at least, for the use of Klipper macros instead of the traditional and limited g-codes. You can find more information and details in the Klipper configuration guide in laminators. By way of example:
The use of macros in Klipper will allow us to raise the control and customization of our machines to incredible levels.
Another great improvement is that we can upload our g-codes directly from the laminator, something that is very comfortable. Moonraker emulates the Octoprint API, something very useful to make it compatible with any tool that uses Octoprint:
As we have already mentioned on many occasions, Klipper is an extremely versatile system that together to a host like our Pad 7 can allow us to control several printers simultaneously.
Next, we are going to guide you through the process to have multiple instances of Klipper on our Pad 7 which will allow us to control our machines centrally.
We will start by connecting to our Pad 7 using an SSH client, launching an ls -l command we will see what we have installed on our Pad 7:
It is possible to install our Klipper instances manually, but we prefer to use Kiauh.
Kiauh is a sensational module for Klipper which allows us to easily launch different actions from a simple menu system. Let’s proceed to install it by launching the command:
cd ~ && git clone https://github.com/th33xitus/kiauh.git
Once we have Kiauh installed we will launch it with the following command that will show us the Kiauh menu system :
./kiauh/kiauh.sh
As we see in the previous screenshot, in our case we have 1 instance of Klipper, Moonraker as well as KlipperScreen or Crowsnest.
Then we will proceed to uninstall Moonraker, clicking on option 3 (Remove) and then 2 (Moonraker) … During the process, we will be asked for the password of our user:
Once the process is finished, press 1 (Klipper) to delete our Klipper instance:
If everything has gone correctly Kiauh will show us that we do not have instances of Klipper and Moonraker:
Now we will proceed to install Klipper using option 1 (Install), 1 (Klipper) and 1 (Python 3.x)… it will ask us for the number of instances we want to install, in our case we will use our Pad 7 to control 2 printers.
Before installing the instances it will ask us if we want to assign each instance a custom name, our advice is that we do NOT customize the instances since later we can do it on the other hand that will prevent our Klipper instances from using a non-standardized name structure:
Once the process is finished, and if everything worked as expected, we will go to the main menu of Kiauh (B) that we have our 2 installed instances:
Next we are going to install our Moonraker instances by pressing 1 (Install) and 2 (Moonraker)… Kiauh itself will detect our Moonraker instances and suggest the number of these to install:
Once the process is finished, and in the main menu of Kiauh, we will be able to see our Moonraker instances… It is very important that we write down the port of each of our instances since later it will be necessary:
We already have all our instances installed, we only have to leave Kiauh and restart our Pad 7 with the sudo reboot
command. We will reconnect by SSH to our Pad 7 and we will launch the ls -l command again to verify that we have our configuration directories for each of our instances:
We will continue with the following steps to perform from our web interface, in our case Mainsail, where we will open our favorite web browser on our computer / tablet using its IP or hostname where it will ask us to add a printer:
Adding our instances of Moonraker, and remember the information of the instances that Kiauh previously provided us:
We will enter our instances and change the name, and also from UI_SETTINGS we can customize the color of the logo, to be able to identify each instance clearly. We can also use the drop-down to choose between one instance or another:
Now you will have to configure each of our instances with its own printer.cfg and includes that we have for our printers.
The next step will be to configure our KlipperScreen so that we can connect to our instances to be able to manage them comfortably from the screen of our Pad 7. To do this, we will have to return to our SSH client to edit the KlipperScreen configuration file:
sudo nano KlipperScreen.conf
And we will copy the following settings, adjust the names of printers and ports of Moonraker to your own installation:
[main]
job_complete_timeout: 0
job_error_timeout: 0
#default_printer: ElegooN3Max
use_default_menu: True
[printer ElegooN3Max]
moonraker_host: localhost
moonraker_port: 7125
moonraker_api_key: False
[printer Voron01]
moonraker_host: localhost
moonraker_port: 7126
moonraker_api_key: False
To finish, we will press CTRL + X and Y to exit and save the changes and restart KlipperScreen with the following command sudo service KlipperScreen restart
. If all has gone correctly, our screen will show access to our two printers, being able to change from one to the other by clicking on the icon of the two crossed arrows.
During the last months we have tested all kinds of solutions for Klipper and without a doubt if you plan to switch to Klipper, if you do not use it already, Bigtreetech electronics are the best option we have tried.
In the case of the Bigtreetech Pad7, and after being delighted with the Pad 5, it is an ideal team to get started in Klipper, since we have everything in the same device, with a very competitive price, and also being able to freely use Klipper.
In addition, the inclusion of tools, screws, and accessories such as the accelerometer help to make the start-up and use of Klipper relatively simple.
With a great screen, perhaps sometimes too big although our tired eyes appreciate it, a good handful of connections and a very correct finish, the colleagues of Bigtreetech have made a great product.
In addition, as always with Bigtreetech we will find abundant documentation and good support from both the manufacturer and the community, which often helps… Especially if you are new to Klipper because it is a new world totally different from other firmwares for 3D printer.
Below we help you solve some problems that we can find with our Pad 7.
Although Klipper increasingly improves the processes sometimes we may find that our accelerometer does not work correctly, in these cases we advise you to review the following points:
ls /dev/spi
… in the case that we have a CB1 module we will see a spidev1.1
device and if we use a CM4 module spidev0.1
The use of CANbus, in certain machines and circumstances, can be a great-added value that allows us to simplify the wiring of our machine a lot.
On the other hand, it will add more complexity to our configuration and more points of failure. We give you some tips to keep in mind for our Pad 7:
dmesg | grep
can where it should indicate MCP2515 successfully initialized
.sudo nano /etc/network/interfaces.d/can0
to verify that our CAN interface configuration is correct.allow-hotplug can0
iface can0 can static
bitrate 1000000
up ifconfig $IFACE txqueuelen 1024
Normally we tend to focus on devices and accessories related to 3D printing, in this…
Our colleagues at TwoTrees have launched a very interesting new printer, the Twotrees SK1. TwoTrees is an old acquaintance…
Creality is a well-known brand in the world of 3D printing, it is probably one of…
Our Revopoint partners continue to renew their models, in this case we have been able to test…
The new Bigtreetech Manta series, which has four versions to adapt to any machine, as well as…
Today we bring you another printer that we really wanted to get our hands on,…
Ver comentarios
Sorry, I'll leave my comment in English.
I'm struggling with my Pad 7.
Have any of you made a backup of the original image of your BTT Pad 7? If so can you upload it to Dropbox or another service? I'll be glad to receive a PM with the link.
Normally I understand that it is an update in the OS that broke something. here is my problem: I wish I had made a backup of my BTT Pad 7. It worked a charm. Now I getting many inconsistencies. My printer is an Ender 3 S! F4 and used to work very well. Some of the updates have made my Klipper unusable. I read all the manuals (RTFM) and I know I need to start mine with a CB1, not the last. Can someone point me to the original version?
Better yet if anyone has uploaded the original card!
Mine apparently works but I have the dreadful ls/dev/by-id/* issue.
When I try to do ‘ls /dev/serial/by-id/', Pad 7 says "ls: cannot access '/dev/serial/by-id/’: No such file or directory"
So, get to the basics. Can someone help me?
Yes, I know E3S1 F4 implies flashing FW under a directory.
And yes, it works with Sonic Pad. So it's not on the printer's side.
Hi Jacques, no worries about English we will try to provide solutions for your problem.
You can install different CB1 images on your Bigtreetech Pad 7 the most important are:
- Official Bigtreetech CB1 - https://github.com/bigtreetech/CB1/releases
- RatOS - https://github.com/Rat-OS/RatOS/releases
From Assets artifacts from those releases you can install old versions, and adapt the settings to enable the special Pad 7 parts as display, SPI, touch, etc...
In any case if your main problem it´s related with the by-id this is a Linux issue started at May 2023 affecting distributions based on Debian due an incorrect Udev package. This issue will probably happens on all versions with the incorrect package as soon you update OS and should solved, without any action, on newer versions.
You have different options to check and solve this issue:
- How to identify? basically if after update you do ls /dev/serial/by-id/ and nothing appears listed or launching apt show udev and your udev version is versión 247.3-7+deb11u2... you have a third one checking the udev rules but previous are much more easy
- How to resolve? the best it´s to try to use an update released firmwrare without the udev package issue, a second option is to update udev package launching cd ~;wget http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_252.5-2~bpo11+1_`dpkg --print-architecture`.deb http://ftp.us.debian.org/debian/pool/main/s/systemd/udev_252.5-2~bpo11+1_`dpkg --print-architecture`.deb;APT_LISTCHANGES_FRONTEND=none sudo apt install --fix-broken ./libudev1_252.5-2~bpo11+1_`dpkg --print-architecture`.deb ./udev_252.5-2~bpo11+1_`dpkg --print-architecture`.deb; rm libudev1_252.5-2~bpo11+1_`dpkg --print-architecture`.deb udev_252.5-2~bpo11+1_`dpkg --print-architecture`.deb ... your have another options like use by-path instead by-id but if you change your USB port the serialID will change... another solution will be to adapt udev rules
If you visit our LABS documentation https://3dwork.gitbook.io/labs/klipper/troubleshooting (english link at the beginnig to translate) you will have all the information about the Udev patch.