December 25, 20241 yr Author @Enfoxed That's odd. Can you log into your Unraid system and check if you have `/dev/ttyACM0`? I can see `/dev/ttyACM0` is specified as the COM port `Dec 18 2024 16:53:29.840 pid:7 webserver.py 295 INFO Using COM port `/dev/ttyACM0` (specified in `OPENFANCOMPORT` env variable).` But immediately underneath it's selecting `/dev/ttyS0` which is obviously wrong `Dec 18 2024 16:53:29.843 pid:7 serial_driver.py 89 DEBUG /dev/ttyS0`
December 25, 20241 yr Hmm, i cant find it... Do i need to reactivate it (hardware side) after restart after an update? Never had this issue before root@Unraid-Server:~# ls -l /dev/ total 0 crw------- 1 root root 10, 126 Dec 18 16:38 aer_inject drwxr-xr-x 2 root root 740 Dec 18 17:22 block/ drwxr-xr-x 2 root root 460 Dec 18 16:38 bsg/ crw-rw---- 1 root disk 10, 234 Dec 18 16:38 btrfs-control drwxr-xr-x 3 root root 60 Dec 18 16:37 bus/ drwxr-xr-x 2 root root 6020 Dec 25 01:51 char/ crw------- 1 root root 5, 1 Dec 18 16:41 console lrwxrwxrwx 1 root root 11 Dec 18 16:38 core -> /proc/kcore drwxr-xr-x 66 root root 1320 Dec 18 16:37 cpu/ crw------- 1 root root 10, 125 Dec 18 16:38 cpu_dma_latency drwxr-xr-x 7 root root 140 Dec 18 16:38 disk/ drwxrwxrwx 3 root root 100 Dec 18 16:38 dri/ crw-rw---- 1 root video 29, 0 Dec 18 16:38 fb0 lrwxrwxrwx 1 root root 13 Dec 18 16:38 fd -> /proc/self/fd/ crw-rw-rw- 1 root root 1, 7 Dec 18 16:38 full crw-rw-rw- 1 root root 10, 229 Dec 18 16:38 fuse crw------- 1 root root 10, 228 Dec 18 16:38 hpet crw------- 1 root root 10, 183 Dec 18 16:38 hwrng prw------- 1 root root 0 Dec 18 16:38 initctl| drwxr-xr-x 3 root root 140 Dec 18 16:38 input/ crw-r--r-- 1 root root 1, 11 Dec 18 16:38 kmsg crw-rw---- 1 root users 10, 232 Dec 18 17:23 kvm srw-rw-rw- 1 root root 0 Dec 18 16:38 log= crw-rw---- 1 root disk 10, 237 Dec 18 16:38 loop-control brw-rw---- 1 root disk 7, 0 Dec 18 16:38 loop0 brw-rw---- 1 root disk 7, 1 Dec 18 16:38 loop1 brw-rw---- 1 root disk 7, 2 Dec 18 17:22 loop2 brw-rw---- 1 root disk 7, 3 Dec 18 17:23 loop3 brw-rw---- 1 root disk 7, 4 Dec 18 16:38 loop4 brw-rw---- 1 root disk 7, 5 Dec 18 16:38 loop5 brw-rw---- 1 root disk 7, 6 Dec 18 16:38 loop6 brw-rw---- 1 root disk 7, 7 Dec 18 16:38 loop7 drwxr-xr-x 2 root root 60 Dec 18 16:38 mapper/ crw------- 1 root root 10, 227 Dec 18 16:38 mcelog brw-rw---- 1 root disk 9, 1 Dec 18 17:22 md1p1 brw-rw---- 1 root disk 9, 2 Dec 18 17:22 md2p1 brw-rw---- 1 root disk 9, 3 Dec 18 17:22 md3p1 brw-rw---- 1 root disk 9, 4 Dec 18 17:22 md4p1 brw-rw---- 1 root disk 9, 5 Dec 18 17:22 md5p1 crw-r----- 1 root kmem 1, 1 Dec 18 16:38 mem lrwxrwxrwx 1 root root 10 Dec 18 16:38 mouse -> input/mice crw------- 1 root root 10, 221 Dec 18 16:38 mpt2ctl crw------- 1 root root 10, 222 Dec 18 16:38 mpt3ctl drwxr-xr-x 2 root root 60 Dec 18 16:38 net/ crw------- 1 root root 244, 0 Dec 18 16:38 ng0n1 crw-rw-rw- 1 root root 1, 3 Dec 18 16:38 null drwxr-xr-x 2 root root 80 Dec 18 16:44 nvidia-caps/ crw-rw-rw- 1 root root 195, 254 Dec 18 16:44 nvidia-modeset crw-rw-rw- 1 root root 240, 0 Dec 18 16:44 nvidia-uvm crw-rw-rw- 1 root root 240, 1 Dec 18 16:44 nvidia-uvm-tools crw-rw-rw- 1 root root 195, 0 Dec 18 16:44 nvidia0 crw-rw-rw- 1 root root 195, 255 Dec 18 16:44 nvidiactl crw------- 1 root root 245, 0 Dec 18 16:38 nvme0 brw-rw---- 1 root disk 259, 0 Dec 18 16:38 nvme0n1 brw-rw---- 1 root disk 259, 1 Dec 18 16:38 nvme0n1p1 crw-r----- 1 root kmem 1, 4 Dec 18 16:38 port crw-rw---- 1 root dialout 108, 0 Dec 18 16:38 ppp crw-rw-rw- 1 root tty 5, 2 Dec 25 01:57 ptmx drwxr-xr-x 2 root root 0 Dec 18 16:38 pts/ crw-rw-rw- 1 root root 1, 8 Dec 18 16:38 random lrwxrwxrwx 1 root root 4 Dec 18 16:38 rtc -> rtc0 crw-r--r-- 1 root root 252, 0 Dec 18 16:38 rtc0 brw-rw---- 1 root plugdev 8, 0 Dec 18 16:38 sda brw-rw---- 1 root plugdev 8, 1 Dec 18 16:38 sda1 brw-rw---- 1 root disk 8, 16 Dec 18 16:38 sdb brw-rw---- 1 root disk 8, 17 Dec 18 16:38 sdb1 brw-rw---- 1 root disk 8, 32 Dec 18 16:38 sdc brw-rw---- 1 root disk 8, 33 Dec 18 16:38 sdc1 brw-rw---- 1 root disk 8, 48 Dec 18 16:38 sdd brw-rw---- 1 root disk 8, 49 Dec 18 16:38 sdd1 brw-rw---- 1 root disk 8, 64 Dec 18 16:38 sde brw-rw---- 1 root disk 8, 65 Dec 18 16:38 sde1 brw-rw---- 1 root disk 8, 80 Dec 18 16:38 sdf brw-rw---- 1 root disk 8, 81 Dec 18 16:38 sdf1 brw-rw---- 1 root disk 8, 96 Dec 18 16:38 sdg brw-rw---- 1 root disk 8, 97 Dec 18 16:38 sdg1 brw-rw---- 1 root disk 8, 112 Dec 18 16:38 sdh brw-rw---- 1 root disk 8, 113 Dec 18 16:38 sdh1 brw-rw---- 1 root disk 8, 128 Dec 18 16:38 sdi brw-rw---- 1 root disk 8, 129 Dec 18 16:38 sdi1 brw-rw---- 1 root disk 8, 144 Dec 18 16:38 sdj brw-rw---- 1 root disk 8, 145 Dec 18 16:38 sdj1 crw-rw---- 1 root disk 21, 0 Dec 18 16:38 sg0 crw-rw---- 1 root disk 21, 1 Dec 18 16:38 sg1 crw-rw---- 1 root disk 21, 2 Dec 18 16:38 sg2 crw-rw---- 1 root disk 21, 3 Dec 18 16:38 sg3 crw-rw---- 1 root disk 21, 4 Dec 18 16:38 sg4 crw-rw---- 1 root disk 21, 5 Dec 18 16:38 sg5 crw-rw---- 1 root disk 21, 6 Dec 18 16:38 sg6 crw-rw---- 1 root disk 21, 7 Dec 18 16:38 sg7 crw-rw---- 1 root disk 21, 8 Dec 18 16:38 sg8 crw-rw---- 1 root disk 21, 9 Dec 18 16:38 sg9 drwxrwxrwt 2 root root 40 Dec 18 16:38 shm/ drwxr-xr-x 2 root root 60 Dec 18 16:38 snd/ lrwxrwxrwx 1 root root 15 Dec 18 16:38 stderr -> /proc/self/fd/2 lrwxrwxrwx 1 root root 15 Dec 18 16:38 stdin -> /proc/self/fd/0 lrwxrwxrwx 1 root root 15 Dec 18 16:38 stdout -> /proc/self/fd/1 crw-rw-rw- 1 root tty 5, 0 Dec 18 16:38 tty crw--w---- 1 root tty 4, 0 Dec 18 16:38 tty0 crw--w---- 1 root tty 4, 1 Dec 18 16:41 tty1 crw--w---- 1 root tty 4, 10 Dec 18 16:38 tty10 crw--w---- 1 root tty 4, 11 Dec 18 16:38 tty11 crw--w---- 1 root tty 4, 12 Dec 18 16:38 tty12 crw--w---- 1 root tty 4, 13 Dec 18 16:38 tty13 crw--w---- 1 root tty 4, 14 Dec 18 16:38 tty14 crw--w---- 1 root tty 4, 15 Dec 18 16:38 tty15 crw--w---- 1 root tty 4, 16 Dec 18 16:38 tty16 crw--w---- 1 root tty 4, 17 Dec 18 16:38 tty17 crw--w---- 1 root tty 4, 18 Dec 18 16:38 tty18 crw--w---- 1 root tty 4, 19 Dec 18 16:38 tty19 crw--w---- 1 root tty 4, 2 Dec 18 16:41 tty2 crw--w---- 1 root tty 4, 20 Dec 18 16:38 tty20 crw--w---- 1 root tty 4, 21 Dec 18 16:38 tty21 crw--w---- 1 root tty 4, 22 Dec 18 16:38 tty22 crw--w---- 1 root tty 4, 23 Dec 18 16:38 tty23 crw--w---- 1 root tty 4, 24 Dec 18 16:38 tty24 crw--w---- 1 root tty 4, 25 Dec 18 16:38 tty25 crw--w---- 1 root tty 4, 26 Dec 18 16:38 tty26 crw--w---- 1 root tty 4, 27 Dec 18 16:38 tty27 crw--w---- 1 root tty 4, 28 Dec 18 16:38 tty28 crw--w---- 1 root tty 4, 29 Dec 18 16:38 tty29 crw--w---- 1 root tty 4, 3 Dec 18 16:41 tty3 crw--w---- 1 root tty 4, 30 Dec 18 16:38 tty30 crw--w---- 1 root tty 4, 31 Dec 18 16:38 tty31 crw--w---- 1 root tty 4, 32 Dec 18 16:38 tty32 crw--w---- 1 root tty 4, 33 Dec 18 16:38 tty33 crw--w---- 1 root tty 4, 34 Dec 18 16:38 tty34 crw--w---- 1 root tty 4, 35 Dec 18 16:38 tty35 crw--w---- 1 root tty 4, 36 Dec 18 16:38 tty36 crw--w---- 1 root tty 4, 37 Dec 18 16:38 tty37 crw--w---- 1 root tty 4, 38 Dec 18 16:38 tty38 crw--w---- 1 root tty 4, 39 Dec 18 16:38 tty39 crw--w---- 1 root tty 4, 4 Dec 18 16:41 tty4 crw--w---- 1 root tty 4, 40 Dec 18 16:38 tty40 crw--w---- 1 root tty 4, 41 Dec 18 16:38 tty41 crw--w---- 1 root tty 4, 42 Dec 18 16:38 tty42 crw--w---- 1 root tty 4, 43 Dec 18 16:38 tty43 crw--w---- 1 root tty 4, 44 Dec 18 16:38 tty44 crw--w---- 1 root tty 4, 45 Dec 18 16:38 tty45 crw--w---- 1 root tty 4, 46 Dec 18 16:38 tty46 crw--w---- 1 root tty 4, 47 Dec 18 16:38 tty47 crw--w---- 1 root tty 4, 48 Dec 18 16:38 tty48 crw--w---- 1 root tty 4, 49 Dec 18 16:38 tty49 crw--w---- 1 root tty 4, 5 Dec 18 16:41 tty5 crw--w---- 1 root tty 4, 50 Dec 18 16:38 tty50 crw--w---- 1 root tty 4, 51 Dec 18 16:38 tty51 crw--w---- 1 root tty 4, 52 Dec 18 16:38 tty52 crw--w---- 1 root tty 4, 53 Dec 18 16:38 tty53 crw--w---- 1 root tty 4, 54 Dec 18 16:38 tty54 crw--w---- 1 root tty 4, 55 Dec 18 16:38 tty55 crw--w---- 1 root tty 4, 56 Dec 18 16:38 tty56 crw--w---- 1 root tty 4, 57 Dec 18 16:38 tty57 crw--w---- 1 root tty 4, 58 Dec 18 16:38 tty58 crw--w---- 1 root tty 4, 59 Dec 18 16:38 tty59 crw--w---- 1 root tty 4, 6 Dec 18 16:41 tty6 crw--w---- 1 root tty 4, 60 Dec 18 16:38 tty60 crw--w---- 1 root tty 4, 61 Dec 18 16:38 tty61 crw--w---- 1 root tty 4, 62 Dec 18 16:38 tty62 crw--w---- 1 root tty 4, 63 Dec 18 16:38 tty63 crw--w---- 1 root tty 4, 7 Dec 18 16:38 tty7 crw--w---- 1 root tty 4, 8 Dec 18 16:38 tty8 crw--w---- 1 root tty 4, 9 Dec 18 16:38 tty9 crw-rw---- 1 root dialout 4, 64 Dec 18 16:38 ttyS0 crw-rw---- 1 root dialout 4, 65 Dec 18 16:38 ttyS1 crw-rw---- 1 root dialout 4, 66 Dec 18 16:38 ttyS2 crw-rw---- 1 root dialout 4, 67 Dec 18 16:38 ttyS3 crw------- 1 root root 10, 223 Dec 18 16:38 uinput crw-rw-rw- 1 root root 1, 9 Dec 18 16:38 urandom crw-rw---- 1 root tty 7, 0 Dec 18 16:38 vcs crw-rw---- 1 root tty 7, 1 Dec 18 16:38 vcs1 crw-rw---- 1 root tty 7, 2 Dec 18 16:41 vcs2 crw-rw---- 1 root tty 7, 3 Dec 18 16:41 vcs3 crw-rw---- 1 root tty 7, 4 Dec 18 16:41 vcs4 crw-rw---- 1 root tty 7, 5 Dec 18 16:41 vcs5 crw-rw---- 1 root tty 7, 6 Dec 18 16:41 vcs6 crw-rw---- 1 root tty 7, 128 Dec 18 16:38 vcsa crw-rw---- 1 root tty 7, 129 Dec 18 16:38 vcsa1 crw-rw---- 1 root tty 7, 130 Dec 18 16:41 vcsa2 crw-rw---- 1 root tty 7, 131 Dec 18 16:41 vcsa3 crw-rw---- 1 root tty 7, 132 Dec 18 16:41 vcsa4 crw-rw---- 1 root tty 7, 133 Dec 18 16:41 vcsa5 crw-rw---- 1 root tty 7, 134 Dec 18 16:41 vcsa6 crw-rw---- 1 root tty 7, 64 Dec 18 16:38 vcsu crw-rw---- 1 root tty 7, 65 Dec 18 16:38 vcsu1 crw-rw---- 1 root tty 7, 66 Dec 18 16:41 vcsu2 crw-rw---- 1 root tty 7, 67 Dec 18 16:41 vcsu3 crw-rw---- 1 root tty 7, 68 Dec 18 16:41 vcsu4 crw-rw---- 1 root tty 7, 69 Dec 18 16:41 vcsu5 crw-rw---- 1 root tty 7, 70 Dec 18 16:41 vcsu6 drwxr-xr-x 2 root root 60 Dec 18 16:37 vfio/ crw------- 1 root root 10, 127 Dec 18 16:38 vga_arbiter crw------- 1 root root 10, 137 Dec 18 16:38 vhci crw-rw---- 1 root users 10, 238 Dec 18 17:23 vhost-net prw-r----- 1 root root 0 Dec 18 16:38 xconsole| crw-rw-rw- 1 root root 1, 5 Dec 18 16:38 zero crw-rw-rw- 1 root root 10, 249 Dec 18 16:41 zfs
December 25, 20241 yr Author @Enfoxed You can try power-cycling the OpenFAN Controller and/or restarting the Unraid. For some reason your system is not registering the board. Maybe the one of the cables got disconnected?
December 25, 20241 yr A restart didnt work, i have to open the server tomorrow to check all cables but i dont think they are disconnected. maybe a replug will work
December 25, 20241 yr Author 16 minutes ago, Enfoxed said: A restart didnt work, i have to open the server tomorrow to check all cables but i dont think they are disconnected. maybe a replug will work If you can power cycle everything and double check that all the cable are plugged in correctly, that would be great. Please let me know how it goes.
January 6, 20251 yr @SasaKaranovic this actually looks really good. While i understand the unraid service is there, wouldn't it be possible to integrate the service into the docker? At least that the openfan docker has the ability to view temps and build scripts from within it, as this kinda feels like the last part to make this a truly great piece of hardware... And honestly you are only a few steps away from having something which is extremely good.
January 8, 20251 yr Author Thanks @PeterDB! I can't make any promises but I will try to add GUI to the Unraid Service app and also create a community application so it's easier to install. Right now it's more of a "set it and forget it" kind of Unraid app, at least for my use case. To be honest I am also hoping that Unraid adds an API that we could use instead of sensors.ini file and/or include CPU/GPU temperatures as well so we can use those to create fan curves as well.
January 10, 20251 yr For anyone interested in this great project, i created an updated 3d printable case. This remix allows the installation of the fancontroller in a 2.5" SATA SSD slot. https://makerworld.com/en/models/973679
January 18, 20251 yr Hello there. I am having an error when starting the openfanservice docker. my .yaml is a copy paste of the provided example and then changes sensors, temperatures, speeds, along with per header assignments made to the profiles. Per yamlchecker it is valid. Totally possible I am missing something super simple. Thank you for your help! Here is the log, Jan 18 2025 14:47:47.357 pid:7 base_logger.py 62 INFO Logging level: DEBUG Jan 18 2025 14:47:47.357 pid:7 start.py 127 INFO ---- Starting OpenFAN UnRAID Service ---- Jan 18 2025 14:47:47.357 pid:7 start.py 128 INFO -- API Host: `192.168.10.25:3000` Jan 18 2025 14:47:47.357 pid:7 start.py 129 INFO -- Sensors: `/mnt/OpenFanService/sensors/disks.ini` Jan 18 2025 14:47:47.357 pid:7 start.py 130 INFO -- Profile: `/mnt/OpenFanService/data/fan_profiles.yaml` Jan 18 2025 14:47:47.357 pid:7 start.py 131 INFO -- LiveReload: `True` Jan 18 2025 14:47:47.357 pid:7 start.py 20 INFO Starting OpenFAN - Unraid fan control app Jan 18 2025 14:47:47.357 pid:7 start.py 22 INFO Loading temperature sensors Jan 18 2025 14:47:47.361 pid:7 temperature_sensors.py 24 DEBUG Sensor `parity` temperature is `25°C` Jan 18 2025 14:47:47.361 pid:7 temperature_sensors.py 24 DEBUG Sensor `disk1` temperature is `24°C` Jan 18 2025 14:47:47.361 pid:7 temperature_sensors.py 24 DEBUG Sensor `disk2` temperature is `23°C` Jan 18 2025 14:47:47.361 pid:7 temperature_sensors.py 24 DEBUG Sensor `disk3` temperature is `24°C` Jan 18 2025 14:47:47.361 pid:7 temperature_sensors.py 24 DEBUG Sensor `disk4` temperature is `24°C` Jan 18 2025 14:47:47.361 pid:7 temperature_sensors.py 24 DEBUG Sensor `disk5` temperature is `25°C` Jan 18 2025 14:47:47.361 pid:7 temperature_sensors.py 24 DEBUG Sensor `disk6` temperature is `24°C` Jan 18 2025 14:47:47.361 pid:7 temperature_sensors.py 24 DEBUG Sensor `disk7` temperature is `29°C` Jan 18 2025 14:47:47.361 pid:7 temperature_sensors.py 24 DEBUG Sensor `disk8` temperature is `28°C` Jan 18 2025 14:47:47.361 pid:7 temperature_sensors.py 24 DEBUG Sensor `disk9` temperature is `27°C` Jan 18 2025 14:47:47.361 pid:7 temperature_sensors.py 24 DEBUG Sensor `disk10` temperature is `28°C` Jan 18 2025 14:47:47.361 pid:7 temperature_sensors.py 24 DEBUG Sensor `disk11` temperature is `27°C` Jan 18 2025 14:47:47.361 pid:7 temperature_sensors.py 24 DEBUG Sensor `disk12` temperature is `27°C` Jan 18 2025 14:47:47.361 pid:7 temperature_sensors.py 24 DEBUG Sensor `disk13` temperature is `39°C` Jan 18 2025 14:47:47.361 pid:7 temperature_sensors.py 24 DEBUG Sensor `disk14` temperature is `40°C` Jan 18 2025 14:47:47.361 pid:7 temperature_sensors.py 24 DEBUG Sensor `disk15` temperature is `32°C` Jan 18 2025 14:47:47.361 pid:7 temperature_sensors.py 24 DEBUG Sensor `parity2` temperature is `25°C` Jan 18 2025 14:47:47.361 pid:7 temperature_sensors.py 24 DEBUG Sensor `cache` temperature is `33°C` Jan 18 2025 14:47:47.361 pid:7 temperature_sensors.py 24 DEBUG Sensor `cache2` temperature is `33°C` Jan 18 2025 14:47:47.361 pid:7 temperature_sensors.py 24 DEBUG Sensor `downloadcache` temperature is `33°C` Jan 18 2025 14:47:47.362 pid:7 temperature_sensors.py 24 DEBUG Sensor `downloadcache2` temperature is `33°C` Jan 18 2025 14:47:47.362 pid:7 temperature_sensors.py 24 DEBUG Sensor `vm` temperature is `33°C` Jan 18 2025 14:47:47.362 pid:7 temperature_sensors.py 24 DEBUG Sensor `vm2` temperature is `27°C` Jan 18 2025 14:47:47.362 pid:7 temperature_sensors.py 24 DEBUG Sensor `vm4tb` temperature is `26°C` Jan 18 2025 14:47:47.362 pid:7 temperature_sensors.py 24 DEBUG Sensor `flash` temperature is `*°C` Jan 18 2025 14:47:47.362 pid:7 start.py 25 INFO Loading fan profiles Jan 18 2025 14:47:47.362 pid:7 fan_configuration.py 23 ERROR Error parsing json file Jan 18 2025 14:47:47.362 pid:7 fan_configuration.py 24 ERROR Error: Expecting value: line 1 column 1 (char 0)
January 18, 20251 yr On 1/10/2025 at 5:26 AM, visiolab said: For anyone interested in this great project, i created an updated 3d printable case. This remix allows the installation of the fancontroller in a 2.5" SATA SSD slot. https://makerworld.com/en/models/973679 Thanks! I ordered a print of them and they look great. Sadly I ordered two sets be accident, so if anyone is interested I have a spare.
January 19, 20251 yr Author 9 hours ago, Gingersnap155 said: Hello there. I am having an error when starting the openfanservice docker. my .yaml is a copy paste of the provided example and then changes sensors, temperatures, speeds, along with per header assignments made to the profiles. Per yamlchecker it is valid. Totally possible I am missing something super simple. Thank you for your help! Hey @Gingersnap155 There is a docs page for UnraidService (which is a different service/app from the one this thread is for). It is probably easier if you use .yaml for your fan profile definition since it's easier to use and less strict compared to .json Keep in mind that the application expects you to provide two files, one is Unraid's `sensors.ini` file and the other one is your fan `profiles.yaml` where you have defined your fan curves and assigned them to each sensor/fan. p.s. I am also working on a more user-friendly version of the application that will have a GUI and also allow for different drivers (ie. interact with OpenFAN via serial port, Web API, multiple devices etc) and different sensors (ie. load data from a text file, API, shell/python command etc). But obviously this will take a while so I can't promise when it will be available...
January 19, 20251 yr 56 minutes ago, SasaKaranovic said: Hey @Gingersnap155 There is a docs page for UnraidService (which is a different service/app from the one this thread is for). It is probably easier if you use .yaml for your fan profile definition since it's easier to use and less strict compared to .json Keep in mind that the application expects you to provide two files, one is Unraid's `sensors.ini` file and the other one is your fan `profiles.yaml` where you have defined your fan curves and assigned them to each sensor/fan. p.s. I am also working on a more user-friendly version of the application that will have a GUI and also allow for different drivers (ie. interact with OpenFAN via serial port, Web API, multiple devices etc) and different sensors (ie. load data from a text file, API, shell/python command etc). But obviously this will take a while so I can't promise when it will be available... Yes I read through the documentation. That is why I am here. I created the YAML as instructed, placed it where instructed. So where do I ask for support for this issue then? It’s a separate docker that you provide and is required for the automatic fan control. The documentations talks about a disks.ini but no where to obtain it? It’s in the location mapped in the suggested docker compose command. It appears the log shows disk temperatures so I would assume that means that part is covered and working. I never mentioned that I am using a json the log file is stating it. The docker run command I used came from that page and it’s set to use the YAML. I am not sure what I’m missing in my errors. Or where to get help with something you’ve provided documentation to. I’m fine without a community app and just using the background service and YAML. Just need it to work since following what’s provided did not work for me.
January 19, 20251 yr 13 minutes ago, Gingersnap155 said: Yes I read through the documentation. That is why I am here. I created the YAML as instructed, placed it where instructed. So where do I ask for support for this issue then? It’s a separate docker that you provide and is required for the automatic fan control. The documentations talks about a disks.ini but no where to obtain it? It’s in the location mapped in the suggested docker compose command. It appears the log shows disk temperatures so I would assume that means that part is covered and working. I never mentioned that I am using a json the log file is stating it. The docker run command I used came from that page and it’s set to use the YAML. I am not sure what I’m missing in my errors. Or where to get help with something you’ve provided documentation to. I’m fine without a community app and just using the background service and YAML. Just need it to work since following what’s provided did not work for me. Ok so I switch to using a JSON and adjusted the docker run command accordingly. Now it works fine. It’s possible I messed up something with my docker run command with a typo and that was the problem. Either way it works perfectly fine now. And I can even edit it in notepad++ and save and it will adjust on the fly.
January 21, 20251 yr Is there anyone working on getting open fan to automate fab speeds based on drive temps?
January 22, 20251 yr 2 hours ago, crowdx42 said: Is there anyone working on getting open fan to automate fab speeds based on drive temps? I am! Currently there is a docker app called "OpenFAN Unraid Service" which is documented here and source code is on GitHub. Feel free to contribute. This is a relatively "hacked up" solution but it works exactly what you asked for (I use it every day and know multiple people who said it does the job for them). But I am also working on a more functional version that will support plugins, drivers and eventually have a nice GUI. Obviously this will take some time... p.s. Keep in mind that this is not a stand-alone app. You will also need to run the original OpenFAN Unraid App (link here).
January 22, 20251 yr 35 minutes ago, ColdKeyboard said: I am! Currently there is a docker app called "OpenFAN Unraid Service" which is documented here and source code is on GitHub. Feel free to contribute. This is a relatively "hacked up" solution but it works exactly what you asked for (I use it every day and know multiple people who said it does the job for them). But I am also working on a more functional version that will support plugins, drivers and eventually have a nice GUI. Obviously this will take some time... p.s. Keep in mind that this is not a stand-alone app. You will also need to run the original OpenFAN Unraid App (link here). Very cool, I have Open Fan Controller working with the docker, I think I will wait until there is an update with a less hack version lol
January 22, 20251 yr 6 hours ago, crowdx42 said: Very cool, I have Open Fan Controller working with the docker, I think I will wait until there is an update with a less hack version lol I'm waiting for mine, but honestly this "hacky version" is still better than trying to get Dynamix Auto Fan to work with various chipsets and fans, and on top of it Dynamix Auto Fan will only control one PWM fan, so you need a splitter. I gave up on getting my chipset working with Dynamix Auto Fan and after reading a lot settled on either OpenFan or Aqua Computer OCTO Fan. After 4 days of battling with Dynamix Auto Fan and Aqua Computer OCTO Fan or running scripts, I gave up. I'm sticking with OpenFan (and I don't even have it yet, but I know and can see that it will work better!)
January 22, 20251 yr 7 hours ago, ColdKeyboard said: I am! Currently there is a docker app called "OpenFAN Unraid Service" which is documented here and source code is on GitHub. Feel free to contribute. This is a relatively "hacked up" solution but it works exactly what you asked for (I use it every day and know multiple people who said it does the job for them). But I am also working on a more functional version that will support plugins, drivers and eventually have a nice GUI. Obviously this will take some time... p.s. Keep in mind that this is not a stand-alone app. You will also need to run the original OpenFAN Unraid App (link here). If you need any help testing your "more functional version" sign me up
April 5, 20251 yr I have two of these bad boys (OpenFan Controller). Absolutely loving it in my Windows machine, the plugin for 'FanControl' works a treat! It provides quite alot of flexibility. Just wondering if there is any more functionality coming to the docker container on unraid? I'd love to be able to set a fan curve (based off of a sensor reading); I've just gone from full fan curves via IPMI to being able to set static fan profiles via the docker container I'm a little underwhelmed to be honest. Any movement on the approval of the 'automated' install of the OpenFanService for unraid? I do very much appreciate the hard work! absolutely banger of a product you've created.
April 10, 20251 yr On 12/25/2024 at 3:27 AM, SasaKaranovic said: If you can power cycle everything and double check that all the cable are plugged in correctly, that would be great. Please let me know how it goes. Hi, this helped for a short time. I have to shutdown the complete server and disconnect the fancontroller a few minutes and plug it back in and boot up the server again. Then it works for a period of time. Since this post i had to do several of these restarts because of the fan controller. The usb port works fine for other devices and also changing the port doesnt help. I also dont knwo why the connection from Hardware to docker has to be there. everytime the docker is not reachable because of this connection issue, the fans will run in 100%mode. I have another fan controller from aquacomputer in another rig and there it works without any usb connection after a first setup. The Docker Log when it happens: Apr 10 2025 08:57:29.623 pid:7 base_logger.py 59 INFO Logging level: INFO Apr 10 2025 08:57:29.633 pid:7 config.py 49 DEBUG Server config: Apr 10 2025 08:57:29.633 pid:7 config.py 58 DEBUG {'hostname': 'localhost', 'port': 3000, 'communication_timeout': 1} Apr 10 2025 08:57:29.633 pid:7 config.py 60 DEBUG Hardware config: Apr 10 2025 08:57:29.633 pid:7 config.py 69 DEBUG {'port': None} Apr 10 2025 08:57:29.633 pid:7 config.py 71 DEBUG Fan profile config: Apr 10 2025 08:57:29.633 pid:7 config.py 80 DEBUG {'1000 RPM': {'type': 'rpm', 'values': [1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000], 'name': '1000 RPM'}, 'MadMax': {'type': 'PWM', 'values': [100, 100, 100, 100, 100, 100, 100, 100, 100, 100], 'name': 'MadMax'}, '1200RPM': {'type': 'RPM', 'values': [1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200], 'name': '1200RPM'}} Apr 10 2025 08:57:29.633 pid:7 config.py 83 DEBUG Fan aliases: Apr 10 2025 08:57:29.633 pid:7 config.py 92 DEBUG {0: 'Fan #1', 1: 'Fan #2', 2: 'Fan #3', 3: 'Fan #4', 4: 'Fan #5', 5: 'Fan #6', 6: 'Fan #7', 7: 'Fan #8', 8: 'Fan #9', 9: 'Fan #10'} Apr 10 2025 08:57:29.633 pid:7 webserver.py 295 INFO Using COM port `/dev/ttyACM0` (specified in `OPENFANCOMPORT` env variable). Apr 10 2025 08:57:29.633 pid:7 webserver.py 304 INFO Fan Controller port: /dev/ttyACM0 Apr 10 2025 08:57:29.634 pid:7 serial_driver.py 87 DEBUG Searching for COM port `/dev/ttyACM0` Apr 10 2025 08:57:29.634 pid:7 webserver.py 373 ERROR OpenFan API service crashed during setup. Traceback (most recent call last): File "/mnt/OpenFan/webserver.py", line 371, in main FAN_API_Service().run_forever() File "/mnt/OpenFan/webserver.py", line 305, in __init__ self.fan_commander = FanCommander(self.serialPort) File "/mnt/OpenFan/FanCommander.py", line 10, in __init__ super(FanCommander, self).__init__(port_info, timeout=2) File "/mnt/OpenFan/serial_driver.py", line 28, in __init__ raise TypeError("The port_info must be of type {} (given: {})".format(self.__class__, _lpc.ListPortInfo)) TypeError: The port_info must be of type <class 'FanCommander.FanCommander'> (given: <class 'serial.tools.list_ports_common.ListPortInfo'>) ls -l dev.txt
April 19, 20251 yr Author Hey @Enfoxed! Sorry about the delay. In the future, if you need support, please email shop [at] sasakaranovic [dot] com directly. There can be a lot of reasons why the app is intermittently not working as expected and it's very hard to debug it remotely. I suggest opening a support ticket by emailing the above mentioned address. Also make sure you are running the latest version of the docker application and that you have a good quality (and as short-as-possible) USB cable. The Docker application is just one of the ways you can use this controller (with Unraid). The official documentation should help you jump off if you want to build your own solution. Quote everytime the docker is not reachable because of this connection issue, the fans will run in 100%mode I am not sure what is going on in your setup but this should _not_ be the possible, by design... If your docker application stops/is-not running, the fans will remain in the last state they were until told otherwise. They will not spin up to 100% on their own. Is it possible that you have some other application that is "fighting" to control this COM port? I have to admit that even though I try my best, this is probably still a very "hacky" open-source open-hardware DIY project. But I still think people should be happy with their purchase, especially if they are supporting my project! With that said, if you are not happy with the controller (for whatever reason) or you have a better solution that you would like to use, please email me and we can arrange to have you ship the unit back and I will issue a refund for your order, no questions asked.
April 19, 20251 yr Author On 4/5/2025 at 7:57 AM, chomeop said: I have two of these bad boys (OpenFan Controller). Absolutely loving it in my Windows machine, the plugin for 'FanControl' works a treat! It provides quite alot of flexibility. Just wondering if there is any more functionality coming to the docker container on unraid? I'd love to be able to set a fan curve (based off of a sensor reading); I've just gone from full fan curves via IPMI to being able to set static fan profiles via the docker container I'm a little underwhelmed to be honest. Any movement on the approval of the 'automated' install of the OpenFanService for unraid? I do very much appreciate the hard work! absolutely banger of a product you've created. Thank you @chomeop! I am still working on the improved version of the docker app. But you are right, I should submit the control app to the app store and make installation and update a bit easier. Until then, there is documentation explaining on how to get it up and running manually and how to define curves. Personally I did this once and forgot about it, so while it's not an "easy" way to do it, I doubt people will have to adjust their fan curves often. p.s. Keep in mind that there are two docker applications, one is OpenFan Controller and the second one is Unraid service. The first talks to the controller and provides an API/GUI and the latter allows you to define fan curves based on the HDD temperatures. Once you give it a try, let me know if you have any suggestions!
April 22, 20251 yr Hi there, I installed the main container which works well, and followed the doc for the service container with a custom yaml (that I checked with the yaml tool), but it keeps telling me Error parsing json file. Apr 22 2025 08:51:41.777 pid:7 start.py 25 INFO Loading fan profiles Apr 22 2025 08:51:41.777 pid:7 fan_configuration.py 23 ERROR Error parsing json file Apr 22 2025 08:51:41.777 pid:7 fan_configuration.py 24 ERROR Error: Expecting value: line 1 column 1 (char 0) How can I fix that? It sounds to me that the container is expecting a json file even though I'm using a yaml file? Was the container installation command in the doc tested with yaml? I converted to json and modified the install command accordingly, and indeed it works now, there seems to be an issue with how yaml is handled. Edit: I believe the container downloaded from ghcr.io/sasakaranovic/openfanunraidservice:release isn't up to date at all, the newer fan_configuration.py file doesn't contain the "Error parsing json file" error, it uses "Error parsing profile file" instead. It seems like the version installed predates the yaml addition... Edited April 22, 20251 yr by JayBee_Unraid Added details
April 22, 20251 yr There is another little issue in the guide, for the fan_profiles.yaml the fan identifiers are supposed to be starting with 0 not 1. So fan 1 is "OpenFAN/Fan/0", fan 2 is "OpenFAN/Fan/1" and so on. Would it be possible to have multiple temp sources per profile, and control the temp curve with the highest temp one? I have 2 fans that cool down 8 drives (4 for each fan) in my NAS, so having them controlled by only one HDD will cause issue whenever that specific disk isn't spinning, which forces me to use fixed speed.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.