У меня есть Ubuntu 21.04, установленная на Raspberry Pi 4. Я хочу управлять вентилятором на POE+ HAT (https://www.raspberrypi.org/products/poe-plus-hat/)
По умолчанию вентилятор вообще не крутится. Когда я добавляю dtoverlay=rpi-poe
в /boot/firmware/config.txt
, вентилятор работает вроде бы в режиме по умолчанию.
Но когда я делаю sudo dtoverlay -l
, оверлеи не загружаются, поэтому я не знаю, почему это имеет значение.
Пользовательские настройки, такие как эти, не работают, как ожидалось. Когда я добавляю их, вентилятор полностью останавливается или возвращается в режим по умолчанию.
dtparam=poe_fan_temp0=50000
dtparam=poe_fan_temp1=58000
dtparam=poe_fan_temp2=64000
dtparam=poe_fan_temp3=68000
Когда я пытаюсь загрузить оверлей rpi-poe
, я получаю ответ * Failed to apply overlay '0_rpi-poe' (kernel)
, что может означать, что он недоступен в этом ядре?
GNU/Linux 5.11.0-1012-raspi aarch64
Разочарованный отсутствием документации, я нашел этот проект github, который, кажется, решает эту проблему:
https://github.com/raspberrypi/linux/issues/2715#issuecomment-769405042
rpi- poe был обновлен в марте 2020 года с добавлением:
Name: rpi-poe
Info: Raspberry Pi PoE HAT fan
Load: dtoverlay=rpi-poe,<param>[=<val>]
Params: poe_fan_temp0 Temperature (in millicelcius) at which the fan
turns on (default 40000)
poe_fan_temp0_hyst Temperature delta (in millicelcius) at which
the fan turns off (default 2000)
poe_fan_temp1 Temperature (in millicelcius) at which the fan
speeds up (default 45000)
poe_fan_temp1_hyst Temperature delta (in millicelcius) at which
the fan slows down (default 2000)
poe_fan_temp2 Temperature (in millicelcius) at which the fan
speeds up (default 50000)
poe_fan_temp2_hyst Temperature delta (in millicelcius) at which
the fan slows down (default 2000)
poe_fan_temp3 Temperature (in millicelcius) at which the fan
speeds up (default 55000)
poe_fan_temp3_hyst Temperature delta (in millicelcius) at which
the fan slows down (default 5000)
Предлагаемая конфигурация:
# PoE Hat Fan Speeds
dtoverlay=rpi-poe
dtparam=poe_fan_temp0=65000
dtparam=poe_fan_temp0_hyst=1000
dtparam=poe_fan_temp1=70000
dtparam=poe_fan_temp1_hyst=2500
dtparam=poe_fan_temp2=80000
dtparam=poe_fan_temp2_hyst=5000
dtparam=poe_fan_temp3=90000
dtparam=poe_fan_temp3_hyst=5000
Проверьте, есть ли в dmesg ошибка, например, вы столкнулись с проблемой при обновлении прошивки:
[...] rpi-poe-fan rpi-poe-fan@0: Failed to get default PWM value: -5
[...] rpi-poe-fan: probe of rpi-poe-fan@0 failed with error -5
Пояснения по использованию предыдущей прошивки здесь: https://github.com/raspberrypi/firmware/issues/1531
После изменения config.txt и перезагрузки убедитесь, что значения подходят:
od -An --endian=big -td4 /proc/device-tree/thermal-zones/cpu-thermal/trips/trip?/temperature /proc/device-tree/thermal-zones/cpu-thermal/trips/trip?/hysteresis
Вы должны получить:
65000 70000 80000 90000
1000 2500 5000 5000
Ура