User Tools

Site Tools


doc:appunti:hardware:ugreen_dxp2800

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:hardware:ugreen_dxp2800 [2025/12/13 22:37] – [Controllo dei LED] niccolodoc:appunti:hardware:ugreen_dxp2800 [2025/12/16 09:53] (current) – [Attivazione dei servizi e configurazione] niccolo
Line 303: Line 303:
 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. 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 il modulo kernel è disponibile su GitHub come pacchetto Debian che utilizza 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 installato automaticamente.+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 controlloIl repository contiene anche la release di **due pacchetti Debian compilati**
  
-I pacchetti Debian da installare sono:+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**   * **dkms**
Line 324: Line 328:
 </code> </code>
  
-Ecco alcuni esempi:+Ecco alcuni esempi di utilizzo:
  
 <code> <code>
Line 339: Line 343:
 ugreen_leds_cli netdev -breath 600 400 -color 255 0 0 -brightness 255 ugreen_leds_cli netdev -breath 600 400 -color 255 0 0 -brightness 255
 </code> </code>
 +
 +==== 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. 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.
Line 348: Line 354:
 </code> </code>
  
-per attivare il nuovo device I2C si esegue lo script:+per attivare il nuovo device I2C si esegue lo script (fornito dal pacchetto **led-ugreen-utils**):
  
 <code> <code>
Line 392: Line 398:
 echo 100 > /sys/class/leds/$led/interval echo 100 > /sys/class/leds/$led/interval
 </code> </code>
 +
 +==== 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  ^^ ^ 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-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 shell 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-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 shell 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-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. Se questo eseguibile esiste viene usato dallo script ''ugreen-diskiomon'' per generare un carico minore sulla CPU.  |+^ 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 esisteviene usato dallo script ''ugreen-diskiomon'' |
  
-Il modo più efficiente per far lampeggiare i LED dei dischi è usare il programma **ugreen-blink-disk** (eseguibile 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:+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:
  
 <code> <code>
Line 405: Line 416:
 </code> </code>
  
-Esiste anche il tool **ugreen-check-standby** (eseguibile 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. Il programma esegue un loop infinito e deve girare in background, se il LED ha una colorazione diversa (es. COLOR_DISK_UNAVAIL oppure COLOR_ZPOOL_FAIL) non modifica il colore. Ecco come può essere eseguito:+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:
  
 <code> <code>
Line 427: Line 438:
 === Monitoraggio dischi === === Monitoraggio dischi ===
  
-Il servizio **ugreen-diskiomon.service**, se attivato, mette in bacground lo script **/usr/bin/ugreen-diskiomon**. 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 mette 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''.+Il servizio **ugreen-diskiomon.service**, se attivato, esegue in background lo script **/usr/bin/ugreen-diskiomon**
 + 
 +<code> 
 +systemctl enable --now ugreen-diskiomon.service 
 +</code> 
 + 
 +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 === === Monitoraggio scheda di rete ===
  
-Il servizio **ugreen-netdevmon@enp1s0.service**, se attivato, mette in bacground lo script **/usr/bin/ugreen-netdevmon**. 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) le velocità del link. Eventuali anomalie sono segnalate con gli opportuni colori, configurati a loro volta in **/etc/ugreen-leds.conf**.+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**): 
 + 
 +<code> 
 +systemctl enable --now ugreen-netdevmon@enp1s0.service 
 +</code> 
 + 
 +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 ===== ===== Web References =====
doc/appunti/hardware/ugreen_dxp2800.1765661828.txt.gz · Last modified: by niccolo