Odczyt danych z czujników
Ostatnia zmiana: 2019-07-22 18:07
System OpenWrt używany może być na wielu różnych urządzeniach w różnej konfiguracji sprzętowej. Niektóre z nich posiadają wbudowane czujniki czy sensory dzięki którym można poznać stan urządzenia. Wykorzystywane są one do różnych celu takich jak kontrola systemu chłodzenia (wentylatory) czy korekcji temperaturowej (obniżenie częstotliwości procesora czy mocy nadawania). Aby odczytać sensory najprościej skorzystać z programu
sensors z pakietu
lm-sensors:
# opkg update
# opkg install lm-sensors
# sensors
Choć zapewne dobrze będzie wiedzieć jak ręcznie można odczytać dostępne czujniki. Nie wszystkie modele routerów zawierają czujniki. Jeżeli sterownik czujnika pochodzi z kernela, jest duże prawdopodobieństwo że będzie obsługiwany w "standardowy" sposób.
Czujniki temperatury
Najczęściej temperatury podawane są z dokładnością do jednego stopnia Celsjusza, choć fizyczny odczyt jest z dokładnością 1/1000 stopnia. Dane z czujników można odczytać poleceniem:
# cat /sys/class/hwmon/hwmon*/temp*_input
W zależności od ilości czujników, liczna katalogów
hwmon może być różna. W zależności od możliwości czujnika, liczba plików z temperaturami (temp1_input, temp2_input itd) może być różna. Aby poznać typy dostępnych czujników można wydać polecenie
# cat /sys/class/hwmon/hwmon*/name
Wbudowane w SOC/procesor
Wbudowane czujniki temperatury posiadają procesory Intela i AMD (x86), niektóre urządzenia architektury Lantiq oraz nowe Linksysy serii WRT1200/1900/3200/32X. Czujniki ma także SoC Qualcomma IPQ806x, jednakże temperatury należy szukać w innym miejscu:
# cat /sys/class/thermal/thermal_zone*/temp
Wbudowane w inne układy
Współczesne układy radiowe AC Qualcomma obsługiwane przez sterownik
ath10k posiadają wbudowany czujnik temperatury służący do
thermal throttlingu, czyli do zmniejszania mocy nadawania w przypadku przegrzewania się układów. Odczyt temperatury możliwy jest po kompilacji sterownika ath10k z odpowiednią włączoną opcją. Odczyt temperatury układów Wi-Fi możliwe jest także dla sterownika
mwlwifi obecnego w niektórych nowszych routerach Linksysa.
Odczyt temperatury układów pamięci RAM umożliwiają nowsze routery Linksysa
Niektóre modemy GSM także umożliwiają odczyt temperatury. Niestety nie jest to ujednolicona opcja i zależy od konkretnego modelu modemu. Temperaturę zwykle można odczytać wysyłając odpowiednie polecenie AT do modemu:
- dla Huawei (nie hilink), na USB lub minipcie: AT^CHIPTEMP
- dla Quectel: AT+QTEMP
- dla Sierra Wireless: AT!GSTATUS?
Temperaturę można także odczytać z niektórych dysków HDD czy SSD wykorzystując dane ze SMART (odczyt po instalacji pakietu
smartmontools)
- zewnętrzne czujniki temperatury
Niektóre urządzenia posiadają zewnętrzne czujniki temperatury podłączone np. do magistrali I2C. Odczyt temperatury zależy wówczas od typu czujnika. Np. dla urządzeń jjPlus JA76PF czy JWAP003 (moduł LM75) wygląda następująco:
# cat /sys/devices/platform/i2c-gpio.0/i2c-0/0-0048/temp1_input
Częstotliwość procesora
Chwilowa częstotliwość taktowania możliwa jest do odczytu dla procesorów Intel i AMD (x86) oraz Qualcomm IPQ806x:
# cat /sys/bus/cpu/devices/cpu*/cpufreq/cpuinfo_cur_freq
lub
# cat /sys/bus/cpu/devices/cpu*/cpufreq/scaling_cur_freq
Wynik należy podzielić przez 1000 jeżeli chcemy otrzymać taktowanie w MHz.
Zużycie mocy
Dla płyt głównych wyposażonych w procesor AMD (np. PCEngines APU2/APU3) możliwe jest odczytanie chwilowego zużycie mocy:
# cat /sys/class/hwmon/hwmon*/power1_average
Wynik należy podzielić przez 1000000 jeżeli chcemy otrzymać zużycie mocy w watach (W).