====== UGREEN NASync DXP2800 ======
Un NAS bastato su architettura **Intel N100** con una dotazione di RAM sufficiente e abbastanza spazio su SSD eMMC per installare un sistema operativo completo, ad esempio **Debian 13 Trixie**. La dotazione di una porta HDMI lo rende capace di essere anche un **media center** completo.
{{.:ugreen:ugreen-dxp2800.jpg?direct&400|UGREEN NASync DXP2800}}
**Caratteristiche tecniche**
^ CPU | Intel(R) N100 4-cores |
^ RAM | 8 Gb |
^ SSD | 32 Gb eMMC |
^ Ethernet | Intel Corporation Ethernet Controller I226-V 2.5 GbE |
^ Video | Intel Corporation Alder Lake-N [UHD Graphics] |
^ SATA | 2 bays for 3.5 or 2.5 inches, not hot-swappable |
^ USB | 1xUSB 3.2 Gen2, 1xType-C USB 3.2, 1xUSB 3.2 Gen1, 2xUSB 2.0 |
^ HDMI | 1xHDMI up to 4K |
^ M.2 slots | 2 x NVMe 2280 SSD |
^ LEDs | 4 x multi-color LEDs for power, netdev, disk1 and disk2. Programmable via I2C. Unofficial Debian packages exist to compile a custom kernel module and to provide controlling scripts. |
^ Power | 12v/5A |
^ BIOS Build date and time | 12/11/2024 10:48:40 |
^ Boot mode | UEFI / Legacy |
^ Power Loss | Power Off / Power On / Last State |
^ Boot from USB | Yes. Use the USB 2.0 port, disable the watchdog. |
^ Wake on LAN | Supported |
^ RTC Wakeup | Supported. Only HH:MM:SS, no weekday, no monthday. |
**Accesso al BIOS e Boot Menu**
Collega un **monitor** alla porta **HDMI** e una **tastiera** a una porta **USB**, accendi il dispositivo e premi la combinazione di tasti quando vedi il logo UGREEN:
^ BIOS Keys ^^
^ Ctrl+F2 | Enter BIOS setup |
^ Ctrl+F12 | Boot device selection |
Per impostazione di fabbrica, c'è un **watchdog** abilitato (tempo predefinito 180 secondi) che riavvia il dispositivo se il sistema operativo non provvede periodicamente ad azzerare il contatore. È necessario disabilitare il watchdog se si desidera installare un sistema operativo diverso. Anche durante la configurazione del BIOS il watchdog è attivo e bisogna essere rapidi a salvare le impostazioni.
Queste sono le impostazioni del BIOS più interessanti:
* **BIOS**
* Advanced
* WatchDog Setting
* **Watch Dog Control** [Disabled]
* Power Settings
* **Power Loss**
* **Wake on LAN**
* RTC Wakeup from S5
* Hardware Monitor
* Smart Fan Function
Alcune persone in rete affermano che è necessario premere **Ctrl+F1** nel BIOS per abilitare il menu **Advanced**; nel mio caso quella pagina è abilitata di default.
Nei menu del BIOS si trovano le impostazioni per il **Power Loss** (con le tre opzioni classiche: //Power Off//, //Power On// e //Last State//), il **Wake on LAN** e il **RTC Wakeup** (avvio all'ora impostata). Purtroppo quest'ultimo è configurabile solo con ora, minuti e secondi, non è possibile scegliere il giorno della settimana o del mese.
{{.:ugreen:bios-advanced-power-settings.jpg?direct&360|UGREEN DXP2800 - Power Settings}}
===== Sistema operativo UGOS =====
Il sistema operativo UGOS (UGREEN O.S.) è basato su **Debian 12 Bookworm**, collegando un **monitor HDMI** e una **testiera USB** è possibile vedere il boot loader GRUB e assistere al boot del sistema operativo GNU/Linux. Al termine del boot sul display HDMI viene visualizzata la grafica di un player multimediale che invita a scaricare l'app di controllo (in cinese,
[[#Video player su porta HDMI|vedi più avanti]]):
{{.:ugreen:ugreen-hdmi-video-player.jpg?direct&480|UGREEN DXP2800 Multimedia Player on HDMI}}
Premendo Alt-F1 è possibile accedere al terminale VT1 ed effettuare login come utente **root** con password **ugreen**. Al termine della configurazione iniziale eseguibile da pagina web, la password dell'utente root viene disabilitata e l'utente amministratore creato ha la possibilità di diventare root con **sudo**.
===== Configurazione web =====
Collegando il NAS alla rete locale questo acquisisce un indirizzo IP dal server DHCP. Puntando il browser HTTP sull'indirizzo IP si trova una procedura di configurazione iniziale. Vengono chieste le seguenti informazioni:
- Nome del device.
- Creazione di un account di amministrazione (scelta di login e password).
- Registrazione di un numero di telefono per accesso remoto tramite app e per ricevere SMS (prefisso bloccato su +86, forse perché al device non era stato dato accesso a internet).
- Impostazioni degli aggiornament: solo importanti, tutti, solo notifica.
- Tentativo di upgrade via internet.
===== Desktop operativo su pagina web =====
Al termine della procedura di inizializzazione l'accesso HTTP fornisce una interfaccia grafica **web desktop**.
{{.:ugreen:ugos-pro-web-os.png?direct&480|UGREEN DXP2800 UGOS Pro Web Operating System}}
Il servizio **ssh** è disabilitato; può essere abilitato dalla riga di comando con **%%systemctl enable --now ssh%%**, ma al reboot successivo sarà di nuovo disabilitato. Eventualmente va abilitato da //Control Panel// => //Terminal//.
Il disco SSD **/dev/mmcblk0** da **32 Gb** contiene la partizione **p2** da 2G che contiene il root filesystem in formato **squashfs** montato read-only, sul quale viene montato in **overlay** la partizione **p7** da **18.9 Gb** formattata **ext4**. La procedura di reset indicata nel manuale e attivabile con il microswitch relativo probabilmente elimina il contenuto della partizione overlay restituendo il contenuto originale del filesystem squashfs.
È possibile installare pacchetti Debian aggiuntivi con i normali comandi **apt update**, **apt install**, ecc.
===== Video player su porta HDMI =====
Sulla porta HDMI si trova l'interfaccia grafica in cinese di un player multimediale. Dopo aver effettuato la configurazione iniziale l'interfaccia viene nazionalizzata in inglese:
{{.:ugreen:ugreen-hdmi-video-player-eng.jpg?direct&480|UGREEN DXP2800 Multimedia Player English}}
La pagina in cinese ha titolo **Riproduzione diretta HDMI**, la traduzione del menu più o meno è come segue:
- Apri l'app Greenlink Cloud
- Seleziona il video da riprodurre
- Fai click sull'angolo in alto a destra
- Seleziona la riproduzione HDMI
Le note dicono:
- Supporta la riproduzione diretta dei codec più diffusi, come H.264 e H.265
- Se durante la riproduzione non si sente l'audio o esso non è sincronizzato, provare a cambiare traccia audio.
- Questa è una versione beta. Se riscontri problemi prova a fare nuovamente play o invia una richiesta di supporto tecnico.
===== Login root =====
Prima di effettuare la configurazione iniziale del device da interfaccia web, è possibile accedere ad un terminale come utente root. Avendo collegato monitor e tastiera, dalla schermata grafica del video player è possibile digitare **Ctrl+Alt+F1** per accedere al terminale VT1 ed effettuare login come **root** con password **ugreen**.
Il sistema operativo è basato su **Debian 12 Bookworm**, se si collega la porta Ethernet ad una LAN con server DHCP l'interfaccia verrà configurata automaticamente. Per abilitare l'accesso via SSH da remoto è sufficiente aggiungere l'opzione ''PermitRootLogin yes'' ad un file ''/etc/ssh/sshd_config.d/00-local.conf'' e riavviare il servizio con ''systemctl restart ssh''.
Una volta completata la configurazione iniziale del NAS, il servizio SSH viene avviato solo se è stato abilitato nel sistema operativo web, da //Control Panel// => //Terminal//.
Ecco alcuni output per capire come si presenta il sistema:
mount | grep mmcb
/dev/mmcblk0p2 on /rom type squashfs (ro,relatime,errors=continue)
/dev/mmcblk0p6 on /ugreen type ext4 (rw,relatime)
/dev/mmcblk0p1 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro)
/dev/mmcblk0p7 on /overlay type ext4 (rw,relatime)
/dev/mmcblk0p3 on /mnt/factory type ext4 (rw,relatime)
df -h | grep mmcblk | sort
/dev/mmcblk0p1 256M 66M 190M 26% /boot
/dev/mmcblk0p2 930M 930M 0 100% /rom
/dev/mmcblk0p3 8.6M 31K 7.8M 1% /mnt/factory
/dev/mmcblk0p6 3.9G 2.4G 1.4G 64% /ugreen
/dev/mmcblk0p7 19G 180M 18G 2% /overlay
Questo l'output di **parted** sul device **/dev/mmcblk0**:
Model: MMC MMC32G (sd/mmc)
Disk /dev/mmcblk0: 61194240s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
128 34s 511s 478s bios_grub
1 512s 524799s 524288s fat16 legacy_boot
2 524800s 4719103s 4194304s
3 4720640s 4741119s 20480s ext4
4 4741120s 8935423s 4194304s ext4
5 8935424s 13129727s 4194304s linux-swap(v1)
6 13129728s 21518335s 8388608s ext4
7 21518336s 61194206s 39675871s ext4
Il comando **free** riporta:
total used free shared buff/cache available
Mem: 7870148 1036568 3841088 58448 3485060 6833580
Swap: 6029292 0 6029292
I 6 Gb di swap sono in effetti costituiti da 2 Gb della partizione **p5** della memoria eMMC più 4 blocchi da 1 Gb ciascuno di [[wp>zram]] (compressed RAM block device) **%%/dev/zram{0|1|2|3}%%**. Usare la zram come swap consente una ottimizzazione
della RAM disponibile e consente di ricorrere con minor frequenza al disco eMMC aumentandone la vita utile.
===== Contenuto delle partizioni =====
^ N. ^ Size ^ Filesystem ^ Mounting point ^ Note ^
| 1 | 256M | fat16 | /boot | GRUB boot loader EFI |
| 2 | 2G | squashfs | /rom | Root filesystem read-only. |
| 3 | 8.6M | ext4 | /mnt/factory | Contiene dei file con informazioni di fabbrica per identificare il device, ad esempio una //activation key//, il //serial number//, ecc. |
| 4 | 2G | ext4 | | Partizione vuota. |
| 5 | 2G | swap | | Linux Swap |
| 6 | 4G | ext4 | /ugreen | File relativi al web O.S. UGOS Pro. |
| 7 | 20G | ext4 | /overlay | Root filesystem montato read-write in overlay. |
| 128 | 239k | | | BIOS GRUB, probabilmente usato solo in caso di boot legacy. |
===== Installazione di Debian GNU/Linux 13 Trixie =====
Seguendo le istruzioni di **[[https://wiki.debian.org/InstallingDebianOn/Ugreen|Installing Debian On Ugreen]]** l'installazione di **Debian GNU/Linux 13 Trixie** sul NAS DXP2800 è stata fatta con una normale chiavetta USB **Debian netinst**. Dopo aver disabilitato il watchdog nel BIOS, si è fatto accesso al boot menu con Ctrl+F12 e selezionato l'avvio da chiavetta USB. L'avvio avviene in modalità UEFI e si procederà con una installazione UEFI.
Si consiglia di utilizzare una porta USB 2 per fare il boot da chiavetta, alcuni utenti riportano che l'installer non riesce a gestire le porte USB 3.
Si è scelta l'opzione di **partizionare il disco in modo manuale** e si sono rimosse tutte le partizioni ad eccezione delle due partizioni esistenti relative al boot loader, cioè la #1 (con il flag **legacy_boot**) e la #128 (con il flag **bios_grub**). Non è chiaro come avviene il boot con il boot loader e sistema operativo originali, infatti il sistema parte in modalità EFI, ma la partizione #1 che contiene i relativi file non ha i flag **boot** e **esp** propri di una partizione EFI. Inoltre durante l'installazione tale partizione non viene riconosciuta automaticamente come destinataria dell'installazione del boot loader, è necessario forzare manualmente l'uso della **partizione #1** come partizione EFI.
Abbiamo optato per creare una singola partizione per il root filesystem e una per lo swap, questo lo schema risultante al termine dell'installazione:
Number Start End Size File system Name Flags
128 0.00GB 0.00GB 0.00GB bios_grub
1 0.00GB 0.27GB 0.27GB fat16 boot, legacy_boot, esp
2 0.27GB 27.3GB 27.0GB ext4
3 27.3GB 31.3GB 4.06GB linux-swap(v1) swap
La partizione con il flag **bios_grub** è in effetti inutilizzata e il flag **legacy_boot** sulla partizione #1 non è coerente e può essere tolto.
===== Hard disk funzione SMART e stand-by spin-down =====
Vogliamo attivare il monitoraggio della **[[wp>Self-Monitoring,_Analysis_and_Reporting_Technology|funzione SMART]]** degli hard disk e vogliamo anche abilitare lo **spin-down** degli stessi se non vi è attività di lettura o scrittura. Infatti si prevede di tenere il NAS accesso h24, ma l'attività del disco sarà necessaria solo durante alcune funzioni di backup programmate.
Avendo installato il pacchetto **smartmontools** è possibile conoscere lo stato del disco con il comando:
smartctl -a /dev/sda
Inoltre il demone **smartd** è attivo per effettuare il monitoraggio continuativo. Per configurare l'attività di monitoraggio si modifica opportunamente il file **/etc/smartd.conf**:
# Disable DEVICESCAN, which does not work in our environment.
#DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/smartd-runner
# Use the suggedested subset of checks, instead of the '-a'.
# NOTICE: We are running smartd with option --interval=3600 instead of the
# 1800 default, i.e. device polling occurs every 1 our instead of 30 minutes.
# The number of skipped checks (option -n) must be multipled by that value
# to obtain the maximum time that checks will be skipped:
# 1 hour interval * 168 times = 7 days.
/dev/sda \
-H \ # Check the health with the SMART RETURN STATUS command
-l selftest \ # Report increasing number of failed Self-Test
-l error \ # Report increasing errors number in the Summary SMART error log
-f \ # Check for 'failure' of any Usage Attributes
-n standby,168 \ # Skip smartd checks during standby (max 168 times, add ',q' for quiet)
-W 0,50,60 \ # Temperature (SMART att. 194): WARN=50 (log), CRIT=60 (mail)
\ # Schedule a short Self-Test at 23:00 of every monday.
\ # Schedule an Offline Immediate Test every day at 21:00.
-s (S/../../1/23|O/../.././21) \
-m root@localhost \ # Send a warning email on failures and errors
-M daily \ # Repeat email warnings daily
-M test # Send an email test on daemon start
Ovviamente se i dischi sono due la configurazione va ripetuta anche per **/dev/sdb**. Per verificare il log dei selftest eseguiti:
smartctl -d sat -l selftest /dev/sda
Per configurare lo **stand-by timeout** (spin-down) del disco si installa il pacchetto **hdparm**. Non useremo la funzione **Advanced Power Management** (APM) perché non è supportata da tutti i modelli di hard disk e con essa non è possibile impostare con precisione il timeout dello spin-down. Per verificare se il disco supporta APM:
hdparm -B /dev/sd[ab]
nel nostro caso **sda** non supporta APM mentre **sdb** sì:
/dev/sda:
APM_level = not supported
/dev/sdb:
APM_level = 254
Utilizzeremo piuttosto l'opzione **hdparm -S** da riga di comando:
hdparm -S 241 /dev/sda
hdparm -S 241 /dev/sdb
dove il valore di timeout se è compreso fra 1 e 240 rappresenta unità da 5 secondi (quindi da 5 a 1200 secondi), se è compreso fra 241 e 251 rappresenta da 1 fino a 11 unità di 30 minuti ciascuna (quindi da 30 a 330 minuti). Per impostare il timeout ad ogni reboot si configura il file **/etc/hdparm.conf**:
# Enable hard disk standby (spin-down) timeout at 30 minutes.
# It is advisable to disable write cache in this case.
# See man hdparm(8), -S and -W options.
# A value of the spindown_time between 1 and 240 represents units of 5 seconds,
# a value between 241 and 251 represents 1 to 11 units of 30 minutes.
/dev/sda {
write_cache = off
spindown_time = 241
}
/dev/sdb {
write_cache = off
spindown_time = 241
}
===== Controllo delle ventole e temperatura =====
Il sistema è dotato di **due ventole**, una sulla CPU e una sul retro del case. Nel BIOS è possibile impostare il funzionamento delle ventole con notevole dettaglio:
{{.:ugreen:bios-advanced-hardware-monitor.jpg?direct&360|UGREEN DXP2800 - Hardware Monitor}}
{{.:ugreen:bios-advanced-hardware-monitor-smart-fan-function.jpg?direct&360|UGREEN DXP2800 - Smart Fan Function}}
Da software è possibile leggere la temperatura di 6 sensori: si tratta dei 4 core della CPU più un sensore per la **System temperature** e uno per la **CPU temperature**.
* **/sys/devices/virtual/thermal/thermal_zone0/temp**
* **/sys/devices/virtual/thermal/thermal_zone1/temp**
FIXME Il BIOS riporta la velocità di rotazione solo della ventola di sistema. È possibile leggere la velocità dal sistema operativo?
===== Controllo dei LED =====
L'UGREEN DXP2800 dispone di **4 LED multicolore** che è possibile controllare via software, ma è necessario compilare e caricare un modulo kernel ad-hoc che non si trova nei pacchetti ufficiali Debian.
Fortunatamente su GitHub si trova il repository **[[https://github.com/miskcoo/ugreen_leds_controller|ugreen_leds_controller]]** che fornisce i sorgenti per il modulo kernel e per alcuni tool di controllo. Il repository contiene anche la release di **due pacchetti Debian compilati**
Il pacchetto **led-ugreen-dkms** fornisce il modulo kernel utilizzando il framework **dkms** (Dynamic Kernel Module Support), cioè il pacchetto contiene i sorgenti del modulo e quando lo si installa esso provvede a compilare il modulo binario utilizzando le dipendenze necessarie (strumenti di sviluppo e header del kernel). Questo garantisce che quando si installerà una nuova versione del kernel, il modulo sarà ricompilato e installato automaticamente.
Il pacchetto **led-ugreen-utils** contiene invece script ed eseguibii di supporto, nonché le unit Systemd per attivare il funzionamento dei LED nella loro normale funzione di monitoraggio attività e/o guasti.
I pacchetti Debian da installare per soddisfare le dipendenze sono:
* **dkms**
* **linux-headers-6.12.57+deb13-amd64**
* **i2c-tools**
I pacchetti extra da installare possono essere scaricati da **[[https://github.com/miskcoo/ugreen_leds_controller/releases/latest|GitHub]]**. Noi abbiamo usato la versione 0.3:
* **{{.:ugreen:led-ugreen-utils_0.3_amd64.deb}}**
* **{{.:ugreen:led-ugreen-dkms_0.3_amd64.deb}}**
* **{{.:ugreen:ugreen_leds_controller_v0.3.tar.gz}}** (sorgenti)
Il pacchetto **led-ugreen-utils** contiene l'utility da riga di comando **ugreen_leds_cli** per interrogare e impostare lo stato dei LED accedendo direttamente al bus I2C. Essa non ha bisogno del modulo kernel aggiuntivo, anzi **è incompatibile con esso**. Per utilizzarla bisogna essere certi di caricare il modulo I2C e rimuovere il modulo LED UGREEN:
modprobe i2c-dev
modprobe -r led-ugreen
Ecco alcuni esempi di utilizzo:
ugreen_leds_cli all -status
disk1: status = off, brightness = 128, color = RGB(255, 255, 255)
disk2: status = off, brightness = 128, color = RGB(255, 255, 255)
disk3: status = off, brightness = 128, color = RGB(255, 255, 255)
disk4: status = off, brightness = 128, color = RGB(255, 255, 255)
netdev: status = off, brightness = 128, color = RGB(255, 255, 255)
power: status = off, brightness = 128, color = RGB(255, 255, 255)
ugreen_leds_cli netdev -breath 600 400 -color 255 0 0 -brightness 255
==== Il modulo kernel ====
In condizioni normali non si userà il comando **ugreen_leds_cli**, ma si vorrà usare il **modulo kernel** fornito dal pacchetto **led-ugreen-dkms** configurando gli opportuni //trigger//, cioè gli eventi che provocano l'accensione dei LED. In questo modo sarà possibile ad esempio far lampeggiare un LED quando c'è attività di rete o dei dischi. Il tutto avverrà automaticamente senza che debbano essere eseguiti comandi speciali.
Dopo aver installato il pacchetto **led-ugreen-dkms** si avrà il modulo kernel **led-ugreen** compilato e installato nella directory ''/lib/modules/6.12.57+deb13-amd64/updates/dkms/''. Il modulo si carica con
modprobe led-ugreen
per attivare il nuovo device I2C si esegue lo script (fornito dal pacchetto **led-ugreen-utils**):
ugreen-probe-leds
dopodiché nella directory **/sys/class/leds/** dello pseudofilesystem compaiono i link **disk1**, **disk2**, **netdev** e **power**.
È possibile manipolare lo stao dei LED scrivendo gli opportuni valori nei nodi relativi. Ad esempio per controllare la brillantezza:
echo '0' > /sys/class/leds/netdev/brightness
echo '127' > /sys/class/leds/netdev/brightness
echo '255' > /sys/class/leds/netdev/brightness
oppure è possibile determinare il colore con i valori RGB, ad esempio per avere il rosso:
echo '255 0 0' > /sys/class/leds/netdev/color
Si possono impostare gli effetti **blink** e **breath** oppure una luce fissa con l'effetto **none**:
echo 'blink 100 100' > /sys/class/leds/netdev/blink_type
echo 'breath 500 300' > /sys/class/leds/netdev/blink_type
echo 'none' > /sys/class/leds/netdev/blink_type
Un esempio più complesso che collega il lampeggiamento del LED **netdev** all'attività dell'interfaccia di rete **enp1s0**:
#!/bin/sh
modprobe led-ugreen
modprobe ledtrig-netdev
led="netdev"
echo netdev > /sys/class/leds/$led/trigger
echo enp1s0 > /sys/class/leds/$led/device_name
echo 1 > /sys/class/leds/$led/link
echo 1 > /sys/class/leds/$led/tx
echo 1 > /sys/class/leds/$led/rx
echo 100 > /sys/class/leds/$led/interval
==== Gli script di supporto ====
Il pacchetto **led-ugreen-utils** fornisce gli script per impostare il normale funzionamento dei LED. Si tratta principalmente di due **script Bash** che gireranno in background, uno si occupa del LED **netdev** e l'altro dei LED **disk[12]**. Per ragioni di efficienza lo script che gestisce i LED dei dischi si appoggia a due programmi esterni scritti in C++ e compilati, questo perché il lampeggiamento a seguito di attività disco richiede il polling continuo e molto frequente di uno pseudofile in ''/sys/devices/'', che è sconsigliabile effettuare con uno shell script. Anche il monitoraggio dello stato di stand-by dei dischi è preferibile effettuarlo con un progamma esterno in C++ compilato, per gli stessi motivi di efficienza.
^ Comandi contenuti nel pacchetto led-ugreen-utils ^^
^ ugreen-probe-leds | Script shell per inizializzare il bus I2C. Carica i moduli kernel **i2c-dev** e **led-ugreen** e cerca di individuare il **SMBus I801 adapter**. In caso di successo lo attiva come //new_device// e quindi troveremo un nodo del tipo **/sys/bus/i2c/devices/0-003a/name** che contiene la stringa ''led-ugreen''. A seguito di questa attivazione appariranno i nodi **/sys/class/leds/{disk1|disk2|netdev|power}**. |
^ ugreen-netdevmon | Script Bash da eseguire in loop infinito. Imposta il colore del LED netdev in base alla velocità del link e in base alla raggiungibilità del gateway. Legge la configurazione da ''/etc/ugreen-leds.conf''. |
^ ugreen-diskiomon | Script Bash da eseguire in loop infinito. Imposta la configurazione inziale dei LED dei dischi quindi aggiorna periodicamente il colore in base allo stato di salute S.M.A.R.T., allo stato on-line e allo stato di stand-by. Sempre in loop infinito invia un impulso al led se rileva attività del disco. Legge la configurazione da ''/etc/ugreen-leds.conf''. |
^ ugreen-blink-disk | Eseguibile compilato, gira in loop infinito. Provvede a far lampeggiare i LED dei dischi se rileva attività di lettura o scrittura. Questo eseguibile, se esiste, viene usato dallo script ''ugreen-diskiomon'' invece di usare equivalenti istruzioni shell. |
^ ugreen-check-standby | **NOTA**: Non è incluso nel pacchetto Debian, va compilato dal sorgente ''scripts/check-standby.cpp''. Gira in loop infinito: cambia il colore dei LED dei dischi da COLOR_DISK_HEALTH a COLOR_DISK_STANDBY e viceversa quando il disco entra o esce dalla modalità stand-by. Se il LED ha colorazioni diverse, non le modifica. Questo eseguibile, se esiste, viene usato dallo script ''ugreen-diskiomon''. |
Il modo più efficiente per far lampeggiare i LED dei dischi è usare il programma **ugreen-blink-disk** (eseguibile compilato da sorgente C++), che deve essere lanciato e fatto girare in background. Ecco un esempio che effettua il polling ogni **0.1 secondi** per rilevare attività sui device **/dev/sda** e **/dev/sdb**, in caso affermativo fa lampeggiare i LED **disk1** e **disk2** rispettivamente:
ugreen-blink-disk 0.1 sda disk1 sdb disk2
Esiste anche il comando **ugreen-check-standby** (eseguibile compilato da sorgente C++) che cambia il colore dei LED dei dischi da COLOR_DISK_HEALTH a COLOR_DISK_STANDBY e viceversa quando il disco entra o esce dalla modalità stand-by. Se il LED ha una colorazione diversa (es. COLOR_DISK_UNAVAIL oppure COLOR_ZPOOL_FAIL) non modifica il colore. Il programma esegue un loop infinito e deve girare in background, ecco come può essere lanciato:
ugreen-check-standby 1 "0 0 255" "255 255 255" sda disk1 sdb disk2
**ATTENZIONE**: L'assegnamento dei nomi sda ed sdb non è garantito che avvenga sempre nello stesso ordine ad ogni boot, si deve fare riferimento al contenuto di ''/dev/disk/by-id/'' e al seriale del disco per essere certi di abbinare il disco al rispettivo LED.
==== Attivazione dei servizi e configurazione ====
Il pacchetto **led-ugreen-utils** mette a disposizione tre servizi Systemd che provvedono - facendo uso degli script shell visti sopra - a inizializzare i LED e a monitorare lo stato dei dischi e della scheda di rete rispettivamente. La configurazione è contenuta in **/etc/ugreen-leds.conf** di cui viene fornito un esempio ''/etc/ugreen-leds.example.conf''.
=== Attivazione del device I2C ===
Per far sì che i moduli vengano caricati e che il device I2C sia registrato ad ogni bootstrap si attiva il servizio Systemd **ugreen-probe-leds** fornito dal pacchetto:
systemctl enable --now ugreen-probe-leds.service
=== Monitoraggio dischi ===
Il servizio **ugreen-diskiomon.service**, se attivato, esegue in background lo script **/usr/bin/ugreen-diskiomon**:
systemctl enable --now ugreen-diskiomon.service
Tale script molto complesso si occupa di monitorare lo stato dei dischi tramite le funzioni SMART, lo stato di stand-by, l'eventuale messa off-line per guasto e riflettere le varie condizioni con i colori configurati in **/etc/ugreen-leds.conf**. Lo script a sua volta esegue in background il programma **/usr/bin/ugreen-blink-disk** che monitora l'attività dei dischi ed eventualmente manda segnali al ''/sys/class/leds/disk{1|2}/shot'' Per questo viene caricato il modulo kernel ''ledtrig-oneshot''. Anche il programma **/usr/bin/ugreen-check-stanby** viene eventualmente eseguito in background, per riflettere lo stato di stand-by dei dischi nel colore dei LED.
=== Monitoraggio scheda di rete ===
Il servizio **ugreen-netdevmon@enp1s0.service**, se attivato, esegue in background lo script **/usr/bin/ugreen-netdevmon** (Verificare che il nome della scheda di rete sia effettivamente **enp1s0**):
systemctl enable --now ugreen-netdevmon@enp1s0.service
Il LED viene inizializzato per eseguire la funzione di base di lampeggiamento in caso di attività di rete, per questo viene caricato il modulo kernel ''ledtrig-netdev''. Questa funzione di base non ha bisogno dell'esecuzione di altri programmi in background, ma lo script resta in esecuzione per monitorare la raggiungibilità del gateway (tramite ping) e la velocità del link. Eventuali anomalie sono segnalate con gli opportuni colori, configurati a loro volta in **/etc/ugreen-leds.conf**.
===== Web References =====
* **[[https://github.com/TheLinuxGuy/ugreen-nas|My public notes, findings and experience with UGREEN DXP6800 Pro NAS from kickstarter]]**
* **[[https://www.reddit.com/r/UgreenNASync/comments/1e83h8l/trying_to_modify_bios_to_lower_power_consumption/|Trying to modify BIOS to lower power consumption]]**
* **{{.:ugreen:dxp2800_product_documentation-en.pdf|DXP2800 Product Documentation}}**
* **[[https://github.com/miskcoo/ugreen_leds_controller|LED Controller for UGREEN's DX/DXP NAS Series]]**
* **[[https://wiki.debian.org/InstallingDebianOn/Ugreen|Installing Debian On Ugreen]]**
* **[[https://marcismal.com/238/how-to-control-and-customize-led-lights-ugreen-nas-2025/|How to Control and Customize LED Lights UGREEN NAS 2025]]**
* **[[https://www.reddit.com/r/UgreenNASync/comments/1l171v5/ugreen_nasync_dxp2800_bios_smart_fan_settings_to/|UGREEN NASync DXP2800 BIOS Smart Fan Settings to Lower Temps]]**