ВАРНУНГ!
Нижеописанное относится к модели Orange Pi Zero с 1 гигабайтом памяти и установленным Debian Bookworm arm64. YMMV significantly.
На момент написания этого поста в комплекте поставки Debian не было оверлея, разрешающего работу модуля w1-gpio с GPIO.
Методом проб и ошибок оверлей написан самостоятельно:
/dts-v1/;
/plugin/;
/ {
fragment@0 {
target-path = "/";
__overlay__ {
w1: onewire {
compatible = "w1-gpio";
gpios = <&pio 0 79 0>;
status = "okay";
pins = "PC15";
};
};
};
};
Минус — не позволяет менять используемую ногу и значение pullup через /boot/orangepiEnv.txt. Работаю над этим.
Установка:
- Скопировать этот кусок кода в /boot/dtb/allwinner/overlay/sun50i-h616-w1-gpio.dts
- Установить dtc: apt-get install device-tree-compiler
- Скомпилировать оверлей, будучи в /boot/dtb/allwinner/overlay/: dtc -O dtb -o sun50i-h616-w1-gpio.dtbo sun50i-h616-w1-gpio.dts
- Занести полученный оверлей в /boot/orangepiEnv.txt вручную или с помощью orangepi-config: overlays=w1-gpio
- Перезагрузиться, проверить, что модули ядра wire, w1-gpio и w1-therm загрузились: dmesg |grep -i wire
- Навесить на шину термометр 18B20, убедиться, что он работает.
- Строки "param_w1_pin" и "param_w1_pin_int_pullup" хотя и пытаются обрабатываться скриптом на загрузке, но безуспешно из-за кривизны оверлея. Поэтому ногу и внутреннюю подтяжку нельзя изменить путём конфигурации через /boot/orangepiEnv.txt. Нога меняется путём изменения оверлея и его перекомпиляции, а подтяжка — вообще не знаю как.
Update: after asking Andre Przywara, a kernel maintainer of some ARM-based boards, I got a simplified but still working version of the overlay (sorry, Andre, your version didn't work without modifications on my board and kernel):
/dts-v1/;
/plugin/;
/ {
fragment@0 {
target-path = "/";
__overlay__ {
w1:onewire {
compatible = "w1-gpio";
gpios = <&pio 2 15 0>;
};
};
};
};