126

Odp: Wgranie OpenWRT do NSA310

cat /etc/init.d/hwmon_fancontrol

zobaczysz jak progi temperaturowe są ustawiane. A tak w ogóle - odepnij ten bzdurny wentylator i naklej radiator na SoC. Też tak będzie działało  a nie będzie trzeszczał.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

127

Odp: Wgranie OpenWRT do NSA310

a jak go nakleić, czego używasz do tego?

128

Odp: Wgranie OpenWRT do NSA310

https://www.gotronik.pl/klej-termoprzew … p-659.html

Nie że ten konkretny, ale są po prostu kleje termoprzewodzące.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

129

Odp: Wgranie OpenWRT do NSA310

Ja kupiłem do tego celu na AliExpress radiator do dysku SSD.m2. ma 5,5 mm wysokości oraz wymiary 70x22 mm.

Chyba powinien być ok, a Ty jak duży radiator użyłeś do tego SoC w NSA310? bo tam miejsca zbyt wiele to nie ma.

I co wyłaczyłeś wtedy całkowicie wentylator?

130

Odp: Wgranie OpenWRT do NSA310

Pierwszy lepszy który miałem pod ręką. I tak, fizycznie wydłubałem wentylator z obudowy.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

131

Odp: Wgranie OpenWRT do NSA310

W pliku sa takie wartości:

    zyxel,nsa310b)
40                 path_to_hwmon='/sys/devices/platform/ocp@f1000000/f1011000.i2c/i2c-0/0-002e/hwmon/hwmon0'
41                 # use the max. value of (temp1) OR (temp2) OR (temp3) as an input
42                 # for the PWM of the cooling fan
43                 echo 123 > "$path_to_hwmon/pwm1_auto_channels"
44                 # Temperature sensor #1 placed on mainboard
45                 echo 30000 > "$path_to_hwmon/temp1_auto_temp_min"
46                 echo 49600 > "$path_to_hwmon/temp1_auto_temp_max"
47                 # Temperature sensor #2 placed on mainboard
48                 # range: 0 to 127000 in steps of 1000 [millicelsius]
49                 echo 30000 > "$path_to_hwmon/temp2_auto_temp_min"
50                 # range: 0 to 127000 in steps of ???? [millicelsius]
51                 echo 49600 > "$path_to_hwmon/temp2_auto_temp_max"
52                 # Temperature sensor #3 placed close to a chipset
53                 # range: 0 to 60000 in steps of 1000 [millicelsius]
54                 echo 23000 > "$path_to_hwmon/temp3_auto_temp_min"
55                 # pre-defined steps: 103000, 122000, 143300, 170000 in [millicelsius]
56                 echo 103000 > "$path_to_hwmon/temp3_auto_temp_max"
57                 ;;
58         esac

czym to się zmienia i jak?

132

Odp: Wgranie OpenWRT do NSA310

Ale pytanie zadałeś....

edytorem tekstowym  (vi, nano) i na takie wartości jakie potrzebujesz. *_min określa poziom od którego wiatraczek startuje i obecnie jest on sterowany wypadkową trzech czujników temeratury. Pozmianij je sobie na jakieś inne i zobacz czy ci to będzie odpowiadało.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

133

Odp: Wgranie OpenWRT do NSA310

Ale kłopot w tym, że ja nie rozumiem tej składni pliku. Mało to czytelne jest dla mnie.

czy zamiana z 30000 na np. 35000 spowoduję że najniższe obroty wzrosną, takiego efektu szukam.

134

Odp: Wgranie OpenWRT do NSA310

Zanim Ci odpowiem - zmień wartości, zrestartuj skrypt i zobacz co będzie? Nie zepsuje ci to zyxela, więc po prostu sprawdź eksperymentalnie?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

135

Odp: Wgranie OpenWRT do NSA310

zrobiłem 35000 35000 i 28000 i nie terkocze tak. Czy liczbę obrotów wentylatora to da się jakoś ocenić, odczytać?

136

Odp: Wgranie OpenWRT do NSA310

Zainstaluj  lm-sensors i polecenie sensors

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

137

Odp: Wgranie OpenWRT do NSA310

jednak coś nie tak, a Ty jakbyś regulował minimalne obroty? którą wartością.

138

Odp: Wgranie OpenWRT do NSA310

Wentylatorem steruje pwm, domyślnie zalezny od temperatur. Zobacz czy możesz ręcznie sterować tym pwm (wpisy jakieśw /sys/devices/platform/ocp@f1000000/f1011000.i2c/i2c-0/0-002e/hwmon/hwmon0/pwm* )

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

139

Odp: Wgranie OpenWRT do NSA310

zatrudniłem ChatGPT:

   zyxel,nsa310b)
40                 path_to_hwmon='/sys/devices/platform/ocp@f1000000/f1011000.i2c/i2c-0/0-002e/hwmon/hwmon0'
41                 # use the max. value of (temp1) OR (temp2) OR (temp3) as an input
42                 # for the PWM of the cooling fan
43                 echo 123 > "$path_to_hwmon/pwm1_auto_channels"
44                 # Temperature sensor #1 placed on mainboard
45                 echo 30000 > "$path_to_hwmon/temp1_auto_temp_min"
46                 echo 49600 > "$path_to_hwmon/temp1_auto_temp_max"
47                 # Temperature sensor #2 placed on mainboard
48                 # range: 0 to 127000 in steps of 1000 [millicelsius]
49                 echo 30000 > "$path_to_hwmon/temp2_auto_temp_min"
50                 # range: 0 to 127000 in steps of ???? [millicelsius]
51                 echo 49600 > "$path_to_hwmon/temp2_auto_temp_max"
52                 # Temperature sensor #3 placed close to a chipset
53                 # range: 0 to 60000 in steps of 1000 [millicelsius]
54                 echo 23000 > "$path_to_hwmon/temp3_auto_temp_min"
55                 # pre-defined steps: 103000, 122000, 143300, 170000 in [millicelsius]
56                 echo 103000 > "$path_to_hwmon/temp3_auto_temp_max"
57                 ;;
58         esac
ChatGPT powiedział:

To fragment skryptu konfiguracyjnego dla chłodzenia w serwerze NAS Zyxel NSA310B. Wygląda na to, że konfiguruje automatyczne sterowanie wentylatorem na podstawie odczytów temperatury z kilku czujników.
Co robi ten kod?

    Określa ścieżkę do interfejsu sprzętowego (hwmon), gdzie znajdują się dane z czujników temperatury.
    Ustawia tryb sterowania wentylatorem – echo 123 > "$path_to_hwmon/pwm1_auto_channels", co oznacza, że wentylator będzie sterowany na podstawie najwyższej temperatury spośród trzech czujników (temp1, temp2, temp3).
    Konfiguruje zakresy temperatur:
        temp1 (czujnik na płycie głównej):
            Minimalna temperatura dla działania wentylatora: 30°C (30000 millicelsjuszy)
            Maksymalna temperatura: 49,6°C (49600 millicelsjuszy)
        temp2 (drugi czujnik na płycie głównej):
            Zakres taki sam jak temp1.
        temp3 (czujnik blisko chipsetu):
            Minimalna temperatura: 23°C (23000 millicelsjuszy)
            Maksymalna temperatura: 103°C (103000 millicelsjuszy) (czyli pewnie graniczna wartość krytyczna dla układu).

Co można poprawić lub dostosować?

    Sprawdzenie faktycznych zakresów temperatur chipsetu – 103°C to bardzo wysoka wartość.
    Dostosowanie temperatur minimalnych – jeśli wentylator działa głośno, można podnieść wartości *_auto_temp_min.
    Dodanie logowania – np. zapis aktualnych temperatur i ustawień do pliku logów.

Może komuś cos to pomoże:

140 (edytowany przez WodnyTraper 2025-03-09 22:03:16)

Odp: Wgranie OpenWRT do NSA310

I jeszcze:

Zapytałem:
jak włączyć automatyczne sterowanie pwm1

ChatGPT:

Jeśli chcesz włączyć automatyczne sterowanie PWM1 w Zyxel NSA310 z OpenWRT, musisz sprawdzić, czy system obsługuje sterowanie wentylatorem i czy odpowiednie pliki w /sys/class/hwmon/ istnieją.
1. Sprawdzenie dostępnych sensorów i PWM

Najpierw sprawdź, czy Twój system ma czujniki temperatury i obsługuje sterowanie wentylatorem:

ls -l /sys/class/hwmon/

Jeśli widzisz katalog hwmon0, sprawdź, co to za sprzęt:

cat /sys/class/hwmon/hwmon0/name

Jeśli masz więcej katalogów (hwmon1, hwmon2), sprawdź wszystkie.

Potem sprawdź, czy jest obsługa PWM:

ls -l /sys/class/hwmon/hwmon0/ | grep pwm

Jeśli są pliki pwm1, pwm1_enable, to znaczy, że system wspiera sterowanie wentylatorem.
2. Włączenie automatycznego sterowania PWM

Jeśli masz plik pwm1_enable, spróbuj włączyć automatyczne sterowanie:

echo 1 > /sys/class/hwmon/hwmon0/pwm1_enable

Sprawdź, czy działa:

cat /sys/class/hwmon/hwmon0/pwm1_enable

Jeśli wynik to 1, oznacza, że wentylator powinien teraz działać automatycznie.
3. Ustawienie temperatur dla wentylatora

Jeśli system obsługuje sterowanie temperaturą, ustaw minimalne i maksymalne temperatury dla czujników:

echo 30000 > /sys/class/hwmon/hwmon0/temp1_auto_temp_min
echo 50000 > /sys/class/hwmon/hwmon0/temp1_auto_temp_max

Sprawdź dostępne czujniki:

ls /sys/class/hwmon/hwmon0/ | grep temp

Dostosuj wartości według nazw plików (temp2_auto_temp_min, temp3_auto_temp_min, itd.).
4. Zapisanie ustawień na stałe

Zmiany w /sys/class/hwmon/ znikają po restarcie, więc dodaj je do /etc/rc.local:

echo "echo 1 > /sys/class/hwmon/hwmon0/pwm1_enable" >> /etc/rc.local
echo "echo 30000 > /sys/class/hwmon/hwmon0/temp1_auto_temp_min" >> /etc/rc.local
echo "echo 50000 > /sys/class/hwmon/hwmon0/temp1_auto_temp_max" >> /etc/rc.local

Zapisz plik i uruchom ponownie OpenWRT:

reboot

Co jeśli pwm1_enable nie istnieje?

Jeśli plik pwm1_enable nie istnieje, sterownik może nie obsługiwać automatycznego sterowania. Wtedy trzeba:

    Sprawdzić, czy masz odpowiedni moduł jądra (np. pwm_fan).

lsmod | grep pwm

Jeśli nie ma pwm_fan, spróbuj załadować moduł:

modprobe pwm_fan

141

Odp: Wgranie OpenWRT do NSA310

Niezłe narzędzie, myślę że może być czasami przydatne

142 (edytowany przez WodnyTraper 2025-03-09 23:46:35)

Odp: Wgranie OpenWRT do NSA310

Natrafiłem na problem, nie startuje automatycznie sterowanie pwm1.

zrobiłem skrypt /etc/rc.local:

1 # Put your custom commands here that should be executed once
2 # the system init finished. By default this file does nothing.
3
4 # Czekaj na załadowanie hwmon
5
6 while [ ! -f /sys/class/hwmon/hwmon0/pwm1_enable ]; do
7     sleep 5
8 done
9
10 # Włącz sterowanie PWM
11 echo 1 > /sys/class/hwmon/hwmon0/pwm1_enable
12 echo 40 > /sys/class/hwmon/hwmon0/pwm1
13
14 # Ustaw temperatury sterowania (jeśli obsługiwane)
15 echo 30000 > /sys/class/hwmon/hwmon0/temp1_auto_temp_min
16 echo 50000 > /sys/class/hwmon/hwmon0/temp1_auto_temp_max
17
18
19 exit 0

Ale nie uruchamia się sterowanie obrotami, ale jak wywołam /etc/rc.lokal ręcznie to rusza.

Cezary możesz masz jakiś pomysł czemu to nie chcę ruszać automatycznie.

143

Odp: Wgranie OpenWRT do NSA310

chmod 755 /etc/rc.local ?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

144 (edytowany przez WodnyTraper 2025-03-10 08:10:52)

Odp: Wgranie OpenWRT do NSA310

nadal nie działa, po resecie jest tak:

root@Zyxel_NSA310:~# sensors
lm85-i2c-0-2e
Adapter: mv64xxx_i2c adapter
in0:           1.78 V  (min =  +0.00 V, max =  +3.32 V)
in1:           1.07 V  (min =  +0.00 V, max =  +2.99 V)
in2:           3.20 V  (min =  +0.00 V, max =  +4.38 V)
in3:           5.05 V  (min =  +0.00 V, max =  +6.64 V)
in4:          12.19 V  (min =  +0.00 V, max = +15.94 V)
fan1:        3508 RPM  (min =    0 RPM)
fan2:           0 RPM  (min =    0 RPM)
fan3:           0 RPM  (min =    0 RPM)
fan4:           0 RPM  (min =    0 RPM)
temp1:        +36.0°C  (low  = -127.0°C, high = +127.0°C)
temp2:        +40.0°C  (low  = -127.0°C, high = +127.0°C)
temp3:        +43.0°C  (low  = -127.0°C, high = +127.0°C)
cpu0_vid:    +0.000 V

root@Zyxel_NSA310:~# cat /sys/class/hwmon/hwmon0/pwm1_enable
2
root@Zyxel_NSA310:~#

2 oznacza że PWM nie działa, jak go ręczenie włączę to ma wartość 1 i obroty spadają

145

Odp: Wgranie OpenWRT do NSA310

Wstaw sobie co drugą linię logger "1", logger "2" i zobaczysz w logach co i gdzie sie uruchamia.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

146

Odp: Wgranie OpenWRT do NSA310

Dobra okazało się, że ChatGPT mnie wprowadził w błąd. Ale zrobiłem taki sprytny rc.local. Może się komuś przyda:


1 # Put your custom commands here that should be executed once
2 # the system init finished. By default this file does nothing.
3
4
5    echo "$(date) - rc.local uruchomiony" >> /tmp/rc_local.log
6
7    logger "rc.local: Uruchamianie skryptu PWM"
8
9
10 # Czekaj na załadowanie hwmon
11    while [ ! -f /sys/class/hwmon/hwmon0/pwm1_enable ]; do
12      sleep 5
13    done
14    logger "rc.local: hwmon dostępny"
15
16 # Przeładowanie sterownika i2c-dev
17    logger "rc.local: Przeładowuję sterownik i2c-dev"
18    modprobe -r i2c-dev
19      sleep 2
20    modprobe i2c-dev
21    logger "rc.local: Sterownik i2c-dev załadowany ponownie"
22
23 # Sprawdzenie, czy plik pwm1_enable istnieje
24   if [ -f /sys/class/hwmon/hwmon0/pwm1_enable ]; then
25     logger "rc.local: Plik pwm1_enable istnieje, ustawiam wartości"
26
27 # Włącz sterowanie PWM
28     echo 1 > /sys/class/hwmon/hwmon0/pwm1_enable
29     echo 40 > /sys/class/hwmon/hwmon0/pwm1
30
31 # Ustaw temperatury sterowania (jeśli obsługiwane)
32     echo 30000 > /sys/class/hwmon/hwmon0/temp1_auto_temp_min
33     echo 50000 > /sys/class/hwmon/hwmon0/temp1_auto_temp_max
34     logger "rc.local: Ustawienia PWM zapisane"
35   else
36     logger "rc.local: BŁĄD - Plik pwm1_enable NIE istnieje!"
37   fi
38
39   exit 0



i teraz jak to działa:

root@Zyxel_NSA310:~# logread | grep rc.local
Mon Mar 10 10:29:29 2025 user.notice root: rc.local: Uruchamianie skryptu PWM
Mon Mar 10 10:29:29 2025 user.notice root: rc.local: hwmon dostępny
Mon Mar 10 10:29:29 2025 user.notice root: rc.local: Przeładowuję sterownik i2c-dev
Mon Mar 10 10:29:31 2025 user.notice root: rc.local: Sterownik i2c-dev załadowany ponownie
Mon Mar 10 10:29:31 2025 user.notice root: rc.local: Plik pwm1_enable istnieje, ustawiam wartości
Mon Mar 10 10:29:31 2025 user.notice root: rc.local: Ustawienia PWM zapisane
root@Zyxel_NSA310:~# cat /sys/class/hwmon/hwmon0/pwm1_enable
2
root@Zyxel_NSA310:~# ^C

root@Zyxel_NSA310:~# sensors
lm85-i2c-0-2e
Adapter: mv64xxx_i2c adapter
in0:           1.78 V  (min =  +0.00 V, max =  +3.32 V)
in1:           1.07 V  (min =  +0.00 V, max =  +2.99 V)
in2:           3.20 V  (min =  +0.00 V, max =  +4.38 V)
in3:           5.05 V  (min =  +0.00 V, max =  +6.64 V)
in4:          12.19 V  (min =  +0.00 V, max = +15.94 V)
fan1:        3848 RPM  (min =    0 RPM)
fan2:           0 RPM  (min =    0 RPM)
fan3:           0 RPM  (min =    0 RPM)
fan4:           0 RPM  (min =    0 RPM)
temp1:        +38.0°C  (low  = -127.0°C, high = +127.0°C)
temp2:        +42.0°C  (low  = -127.0°C, high = +127.0°C)
temp3:        +45.0°C  (low  = -127.0°C, high = +127.0°C)
cpu0_vid:    +0.000 V


root@Zyxel_NSA310:~# cat /sys/class/hwmon/hwmon0/pwm1_enable
2
root@Zyxel_NSA310:~# cat /sys/class/hwmon/hwmon0/pwm1
204
root@Zyxel_NSA310:~# cat /sys/class/hwmon/hwmon0/temp1_auto_temp_max
50000
root@Zyxel_NSA310:~# cat /sys/class/hwmon/hwmon0/temp1_auto_temp_min
30000
root@Zyxel_NSA310:~# sensors
lm85-i2c-0-2e
Adapter: mv64xxx_i2c adapter
in0:           1.78 V  (min =  +0.00 V, max =  +3.32 V)
in1:           1.08 V  (min =  +0.00 V, max =  +2.99 V)
in2:           3.20 V  (min =  +0.00 V, max =  +4.38 V)
in3:           5.05 V  (min =  +0.00 V, max =  +6.64 V)
in4:          12.19 V  (min =  +0.00 V, max = +15.94 V)
fan1:        3805 RPM  (min =    0 RPM)
fan2:           0 RPM  (min =    0 RPM)
fan3:           0 RPM  (min =    0 RPM)
fan4:           0 RPM  (min =    0 RPM)
temp1:        +38.0°C  (low  = -127.0°C, high = +127.0°C)
temp2:        +42.0°C  (low  = -127.0°C, high = +127.0°C)
temp3:        +44.0°C  (low  = -127.0°C, high = +127.0°C)
cpu0_vid:    +0.000 V

147

Odp: Wgranie OpenWRT do NSA310

lm85-i2c-0-2e
Adapter: mv64xxx_i2c adapter
in0:           1.80 V  (min =  +0.00 V, max =  +3.32 V)
in1:           1.08 V  (min =  +0.00 V, max =  +2.99 V)
in2:           3.18 V  (min =  +0.00 V, max =  +4.38 V)
in3:           5.08 V  (min =  +0.00 V, max =  +6.64 V)
in4:          12.19 V  (min =  +0.00 V, max = +15.94 V)
fan1:           0 RPM  (min =    0 RPM)
fan2:           0 RPM  (min =    0 RPM)
fan3:           0 RPM  (min =    0 RPM)
fan4:           0 RPM  (min =    0 RPM)
temp1:        +40.0°C  (low  = -127.0°C, high = +127.0°C)
temp2:        +45.0°C  (low  = -127.0°C, high = +127.0°C)
temp3:        +47.0°C  (low  = -127.0°C, high = +127.0°C)
cpu0_vid:    +0.000 V

Ten wentylator można spokojnie rozłączyć, chyba z 10 lat NAS pracuje u mnie z wyłączonym wentylatorem wink

148

Odp: Wgranie OpenWRT do NSA310

założyłem radiatory na CPU i pamięci, czekam aż klej wyschnie.

A wentylator ustawię ręcznie na 1800 obrotów / minute i taki układ potestuje.

149

Odp: Wgranie OpenWRT do NSA310

jakie temperatury masz na dysku? w nsa325 dwa exosy 20TB  do 50* dochodziły...

Dom : router https://i.imgur.com/IuB6Zwy.png | TP-LINK T1700G-28TQ |Zyxel XGS-1210-12 | 6x Ruckus r310 unleashed  + Ruckus icx7150-c12p | Truenas scale 124TB 25Gb| Xpenology 12TB | apc smart ups 750 lcd smile 100Mb/s - 25Gb/s
Podróżne : GL.Inet MT3000  +1TB hdd
Działka : rb260gs 1j wdm 1Gb+ ruckus r310 + nb m5 + kilka kamer ip  + panel 285Wp + lifepo4 12v 60Ah .

150 (edytowany przez WodnyTraper 2025-03-11 09:03:28)

Odp: Wgranie OpenWRT do NSA310

Celem było pozbycie sie terkotania wentylatora:

Ostatecznie zrobiłem tak:

1. założyłem radiatory na Soc i pamięci

2. zrobiłem plik rc.local w konfiguracji która wymusza tryb automatyczny ale z ograniczniem obrotów maksymalnych wentylatora do "190" tj. ok. 3400 obr/min i jest idealnie.

plik rc.local - wygląda tak, może się komuś przyda:

root@Zyxel_NSA310:/etc# cat rc.local
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.


   echo "$(date) - rc.local uruchomiony" >> /tmp/rc_local.log

   logger "rc.local: Uruchamianie skryptu PWM"


# Czekaj na załadowanie hwmon
   while [ ! -f /sys/class/hwmon/hwmon0/pwm1_enable ]; do
     sleep 5
   done
   logger "rc.local: hwmon dostępny"

# Przeładowanie sterownika i2c-dev
   logger "rc.local: Przeładowuję sterownik i2c-dev"
   modprobe -r i2c-dev
     sleep 2
   modprobe i2c-dev
   logger "rc.local: Sterownik i2c-dev załadowany ponownie"

# Sprawdzenie, czy plik pwm1_enable istnieje
  if [ -f /sys/class/hwmon/hwmon0/pwm1_enable ]; then
    logger "rc.local: Plik pwm1_enable istnieje, ustawiam wartości"

# Włącz sterowanie Automatyczne PWM - z ograniczeniem maks. obrotów
    echo 2 > /sys/class/hwmon/hwmon0/pwm1_enable
    echo 123 > /sys/class/hwmon/hwmon0/pwm1_auto_channels
    echo 190 > /sys/class/hwmon/hwmon0/pwm1

# Ustaw temperatury sterowania (jeśli obsługiwane)
    echo 30000 > /sys/class/hwmon/hwmon0/temp1_auto_temp_min
    echo 50000 > /sys/class/hwmon/hwmon0/temp1_auto_temp_max
    logger "rc.local: Ustawienia PWM zapisane"
  else
    logger "rc.local: BŁĄD - Plik pwm1_enable NIE istnieje!"
  fi

  exit 0




Ważna Uwaga:
skrypt ma kontrolne logowanie oraz przeładowuje sterownik.