BTT Pi uses AllWinner H616 CPU, and on https://github.com/bigtreetech/CB1 system, w1-gpio
kernel module does not work.
However, there is an excellent custom module https://github.com/pstolarz/w1-gpio-cl
The following steps were tested on CB1 v2.3.3.
Connect sensor VCC pin to 3.3V, GND to GND (obviously), and signal pin to selected GPIO. I used PC7
, since it corresponds to the default w1 pin location on the Raspberry Pi header.
Don't forget to add a pull-up resistor between 3.3V and the signal pin. A 4.7 kOhm resistor is the recommended value.
NEVER connect anything while the printer is powered on!
I did not try parasitic power mode, and I don't recommend it. Klipper will shut down on subsequent read errors, and it might ruin your prints randomly. I did not have any problems with the standard 3-wire connection yet.
The easiest way is to compile it directly on the device. The official guide needed to be modified slightly.
sudo apt-get install build-essential bc bison flex libssl-dev
sudo apt-get install linux-headers-current-sun50iw9
git clone https://github.com/pstolarz/w1-gpio-cl.git
cd w1-gpio-cl
ln -s /lib/modules/`uname -r`/build/include/linux w1
make
sudo make install
Optionally, you can install it using DKMS
sudo dkms add .
sudo dkms install w1-gpio-cl/1.2.2
where 1.2.1
is the latest w1-gpio-cl
release version.
For details, read the original README.
The w1-gpio-cl
module does not accept pin names; instead, it needs pin index. To list all available pins, run
sudo cat /sys/kernel/debug/pinctrl/300b000.pinctrl/pinmux-pins
Find your preferred pin (note that some pins might not work). I used PC7
pin 71 (PC7): UNCLAIMED
Now you can configure module options
echo 'options w1-gpio-cl m1="gdt:71"' | sudo tee /etc/modprobe.d/w1-gpio-cl.conf
Try loading the module manually
sudo modprobe w1-gpio-cl
Verify that the module is loaded
lsmod | grep w1
You should see something like
w1_therm 28672 0
w1_gpio_cl 16384 0
You can verify the output of the dmesg
for errors.
To load the module during boot, run
echo 'w1-gpio-cl' | sudo tee /etc/modules-load.d/w1-gpio-cl.conf
Reboot and verify that the module is properly loaded and working.
See https://www.klipper3d.org/Config_Reference.html#ds18b20-temperature-sensor
Find out connected sensor addresses
sudo ls /sys/bus/w1/devices/
You will see output like
28-011319f769fe w1_bus_master1
With that address, add a Klipper config section like this
[temperature_sensor my_sensor]
sensor_type: DS18B20
serial_no: 28-011319f769fe
sensor_mcu: CB1
Note that sensor_mcu
must be set to the host, which is CB1
by default.
After restarting Klipper, your new temperature sensor should appear in the Mainsail/Fluidd UI automatically.
@mdvorak Good to know my module is still alive, working on platforms I even didn't think about while creating it... I've added small fix in the project's
Makefile
so there is no need to create link manually as described in the README. You may check it out.