sabato, 25 novembre 2017, 10:28 UTC+1

Non risulti loggato.

  • Login
  • Registrazione

Gentile visitatore,
Benvenuto su NAS Forum. Se questa è la tua prima visita, ti chiediamo di leggere la sezione Aiuto. Questa guida ti spiegherà il funzionamento di questa pagina. Prima di poter utilizzare tutte le funzioni di questo software dovrai registrarti. Usa la form di registrazione per registrarti adesso, oppure visualizza maggiori informazioni sul processo di registrazione. Se sei già un utente registrato, allora dovrai solamente procedere con il login da qui.

AQUAR

Allievo

Posts: 100

Località: Australia

1

martedì, 29 gennaio 2013, 13:43

Easy Button Control (UCI)

The OpenWRT port for the MBox/Clones has the hotplug package installed by default.

Good use of this package can be made by using it to control the hardware buttons on the front of the NASBOX.
On the OpenWRT site there is a script called "Atheros' 00-button + UCI" that integrates button control into the UCI system.

An example of how to use it follows.

Step 1:
Log into the NAS box with a SSH program like WINSCP.

Step 2:
Create /etc/hotplug.d/button/00-button with your favorite editor, then paste the following code:

Codice sorgente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
. /etc/functions.sh
do_button () {
        local button
        local action
        local handler
        local min
        local max

        config_get button $1 button
        config_get action $1 action
        config_get handler $1 handler
        config_get min $1 min
        config_get max $1 max

        [ "$ACTION" = "$action" -a "$BUTTON" = "$button" -a -n "$handler" ] && {
                [ -z "$min" -o -z "$max" ] && eval $handler
                [ -n "$min" -a -n "$max" ] && {
                        [ $min -le $SEEN -a $max -ge $SEEN ] && eval $handler
                }
        }
}

config_load system
config_foreach do_button button


Note:This is the script that integrates button control into the UCI system.

Step 3:
Edit /etc/config/system to add at the bottom the following code:

Codice sorgente

1
2
3
4
5
6
7
8
9
10
11
12
13
config 'button'
	option 'button' 'BTN_0'
	option 'action' 'released'
	option 'handler' '/mnt/HDD1/OWRT_SYS/SCRIPT_Shutdown.txt'
	option 'min' '5'
	option 'max' '100'
	
config 'button'
	option 'button' 'BTN_1'
	option 'action' 'released'
	option 'handler' '/mnt/HDD1/OWRT_SYS/SCRIPT_Reboot.txt'
	option 'min' '5'
	option 'max' '100'


Note: These codes invoke the Shutdown and Reboot scripts if the front buttons are pressed for more than 5 sec.

Step 4:
On the HDD1 create a folder called OWRT_SYS

Step 5:
In the OWRT_SYS folder create these two text files:

First Text file is called SCRIPT_Shutdown.txt and holds the following code:

Codice sorgente

1
2
3
echo 0 > /sys/devices/platform/leds-gpio/leds/mvixbox:blue:power/brightness

exec kill -USR1 1


Second Text file is called SCRIPT_Reboot.txt and holds the following code:

Codice sorgente

1
reboot


With these system modifications in place:
1) The top button will shutdown the OS of the NASBOX so that it is safe to turn Off the power (also turns Off the power LED to let you know).
2) The bottom button will reboot the OS of the NASBOX.
3) Most importantly you can now issue UCI commands to change the behaviour of these buttons.

UCI commands to setup the buttons are:
uci add system button
uci set system.@button[-1].button=BTN_1
uci set system.@button[-1].action=pressed
uci set system.@button[-1].handler='logger BTN_1 pressed'
uci commit system

button is the name as the button, action is the event (two values: pressed and released), handler contains the command line to be run when the event is detected (can be a script as well).
Issuing the UCI commands adds entries in the system configuration file like the ones we added manually at Step 3 (to get things set up quickly!).
Try to generate some entries with the UCI commands yourself and see how easy it is to generate these entries in the system configuration file. Soon you will be able to redefine the behaviour of these buttons to suit your own needs.

Finally, see also the Button Script For MBox posted here for a simple way to achieve shutdown and reboot functions for the hardware buttons.

Aquar

AQUAR

Allievo

Posts: 100

Località: Australia

2

mercoledì, 30 gennaio 2013, 11:23

Looks like the kill function is so quick that there is no time to turn off the power LED.
To fix this add some sleep to the shutdown script.

Codice sorgente

1
2
3
4
5
6
7
8
echo 0 > /sys/devices/platform/leds-gpio/leds/mvixbox:blue:power/brightness 
echo 0 > /sys/devices/platform/leds-gpio/leds/mvixbox:blue:status/brightness 
echo 0 > /sys/devices/platform/leds-gpio/leds/mvixbox:blue:sata0/brightness 
echo 0 > /sys/devices/platform/leds-gpio/leds/mvixbox:blue:sata1/brightness 
echo 0 > /sys/devices/platform/leds-gpio/leds/mvixbox:blue:usb1/brightness 
echo 0 > /sys/devices/platform/leds-gpio/leds/mvixbox:blue:usb2/brightness 
sleep 10 
exec kill -USR1 1

The extra echo 0> lines are for turning off the other front panel LED's.
Include some or all of them as you wish.