Jak rozchodit tlačítka na Zyxel NAS326

Raspberry, Arduino, Mini-PC a další

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
rnbw
Příspěvky: 37414
Registrován: 21 bře 2006, 00:00
Bydliště: Bratislava

#46 Příspěvek od rnbw »

Ked uz sme pri busyboxe, tak som nieco objavil:
https://wiki.alpinelinux.org/wiki/Power ... ybox_acpid

Zdrojak acpid.c v busyboxe:

Kód: Vybrat vše

//config:	  acpid listens to ACPI events coming either in textual form from
//config:	  /proc/acpi/event (though it is marked deprecated it is still widely
//config:	  used and _is_ a standard) or in binary form from specified evdevs
//config:	  (just use /dev/input/event*).
//config:
//config:	  It parses the event to retrieve ACTION and a possible PARAMETER.
//config:	  It then spawns /etc/acpi/<ACTION>[/<PARAMETER>] either via run-parts
//config:	  (if the resulting path is a directory) or directly as an executable.
Takze asi by stacilo spustit "busybox acpid" a mal by pri stlaceni power spustit /etc/acpi/power.
Uživatelský avatar
lesana87
Příspěvky: 4393
Registrován: 20 zář 2014, 00:00

#47 Příspěvek od lesana87 »

To je zajímavý, ale nějak se mi to nedaří rozchodit. Nic to nedělá. Když ho spustím -f, aby běžel na popředí, tak za chvíli spadne na segmentation fault. Spouštím ho s parametrem -e /dev/input/event0 a v adresáři /etc/acpi mám skript power. Nevím, jestli je potřeba ten acpid.conf a acpi.map a co v nich má být.

Kód: Vybrat vše

root@nas326:~# busybox acpid --help
BusyBox v1.35.0 (Debian 1:1.35.0-4+b4) multi-call binary.

Usage: acpid [-df] [-c CONFDIR] [-l LOGFILE] [-a ACTIONFILE] [-M MAPFILE] [-e PROC_EVENT_FILE] [-p PIDFILE]

Listen to ACPI events and spawn specific helpers on event arrival

	-d	Log to stderr, not log file (implies -f)
	-f	Run in foreground
	-c DIR	Config directory [/etc/acpi]
	-e FILE	/proc event file [/proc/acpi/event]
	-l FILE	Log file [/var/log/acpid.log]
	-p FILE	Pid file [/var/run/acpid.pid]
	-a FILE	Action file [/etc/acpid.conf]
	-M FILE Map file [/etc/acpi.map]

Accept and ignore compatibility options -g -m -s -S -v
Edit: Aha, ono je to popsané v tom odkazu.
Moc moudrá z toho ale nejsem, jednou píšou, že to spustí /etc/acpi/power, podruhý /etc/acpi/PWRF/00000080. Mám tam obojí a stejně to nic nedělá. A po chvíli ten busybox z paměti zmizí, asi spadne na ten SF.
Uživatelský avatar
Mahoney
Příspěvky: 759
Registrován: 26 říj 2019, 00:00

#48 Příspěvek od Mahoney »

lesana87 píše:
Nesnáším linux. :(
Linux je výbornej, jen s Debianem už je to delší dobu špatný.
Uživatelský avatar
rnbw
Příspěvky: 37414
Registrován: 21 bře 2006, 00:00
Bydliště: Bratislava

#49 Příspěvek od rnbw »

Obcas sa vyskytne nejaky bug alebo problem, ale lepsia distribucia neexistuje.
Uživatelský avatar
Mahoney
Příspěvky: 759
Registrován: 26 říj 2019, 00:00

#50 Příspěvek od Mahoney »

Ať si každý vybere podle svého gusta, mě se sestavy s Debian/Ubuntu pokaždé sesypaly na nějaký bug, zatímco distribuce, kterou dlouhodobě používám, mi to nikdy neudělala. Nejhorší to bylo s Ubuntu tuším 10(.04, .10 nebo 11.04? Tam někde to bylo), tam byl nějaký bug v bootloaderu/filesystému a vzalo mi to komplet celý disk; nejhorší na tom bylo, že to zrovna byl disk s fotkami u známých, které jsem přesvědčoval že Linux je fajn, a samozřejmě je neměli nikde zálohované.

Mě nebaví řešit dependency hell a různé errory přesně jak píše Lesana, navíc se to pokaždé "vyroluje" na nejnovější verzi i když třeba nechci. Používám je jako live distribuce na práci (hlavně starší verze Ubuntu), tam jsou výborné .

Je pravda, že občas mají balíčky, které jinde moc nejsou (např arm-none-eabi), pak kompiluju na tom.
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#51 Příspěvek od asdf »

Mahoney píše:... a vzalo mi to komplet celý disk; nejhorší na tom bylo, že to zrovna byl disk s fotkami u známých, které jsem přesvědčoval že Linux je fajn, a samozřejmě je neměli nikde zálohované.
Hmm, to zamrzí.
Uživatelský avatar
lesana87
Příspěvky: 4393
Registrován: 20 zář 2014, 00:00

#52 Příspěvek od lesana87 »

Mahoney píše:Linux je výbornej, jen s Debianem už je to delší dobu špatný.
Linux je výbornej na hraní, jako os na práci, nic moc. Ze 4 tiskáren se mi povedlo rozchodit 1 a půl, ze 4 scanerů ani jeden, ve windows XP jsem rozchodila všechny. Taky jsem nikdy ve windows neřešila, že mi nefungujou tlačítka nebo uspávání disků. V linuxu je na to potřeba vysoká linuxová a tu já nemám i když si s linuxem hraju s přestávkama od roku 1996, pořád jsem spíš lama. A s Debianem si nerozumím, v něm jsem nerozchodila ani tu půlku tiskárny.
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#53 Příspěvek od asdf »

Ono je to taky i tím, že ne všechny firmy dodávají pro Linux ovladače. Já to zatím vyřešil tím, že mám Windows a k tomu virtuální počítač s Linuxem. Tak mám obojí. Akorát mám jen 4GB paměti, tak mi to občas zatuhne. :-) Bohužel ty Windowsy jsou 10-ky, tak se budu muset rozhodnout, co s tím dál.
Uživatelský avatar
lesana87
Příspěvky: 4393
Registrován: 20 zář 2014, 00:00

#54 Příspěvek od lesana87 »

Tak jsem u toho vypínacího tlačítka ještě pořešila, aby fungovalo jen na dlouhý stisk a finální skript vypadá následovně:

Kód: Vybrat vše

#!/bin/bash
while true
do
    readarray -d\  event < <(od -A n -t u2 -N 16 /dev/input/event0 | awk '{print $1, $2, $5, $6, $7}')
    time=$((65536 * ${event[1]} + ${event[0]}))
#    echo $time ${event[2]} ${event[3]} ${event[4]}
    if [ ${event[2]} = 1 -a ${event[3]} = 116 ]
    then
#	echo "Power button"
	if [ ${event[4]} = 1 ]
	then 
#	    echo "Power button pressed."
	    time_start=$time
	fi
	if [ ${event[4]} = 0 ]
	then
	    time_on=$(($time - $time_start))
#	    echo "Power button released after $time_on s."
	    if [ ${time_on} -ge 2 ]
	    then
		beep1
		sleep 2
		halt
	    fi
	fi
    fi
done
Nevidí tam někdo nějakou chybu?
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#55 Příspěvek od asdf »

Mně se to líbí. Myslím, že by to mělo fungovat.
Uživatelský avatar
lesana87
Příspěvky: 4393
Registrován: 20 zář 2014, 00:00

#56 Příspěvek od lesana87 »

V testovacím provozu to funguje. Díky asdf a rnbw za podnětné rady, vůbec by mě nenapadlo, že se něco takového dá napsat v shell scriptu. Jo bash je mocný nástroj mocného linuxu. :)
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#57 Příspěvek od asdf »

lesana87 píše:... mocného linuxu. :)
Tak je to správné. :-)
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#58 Příspěvek od asdf »

Ještě mě napadlo: Když ti mezi stisknutím a puštěním tlačítka přeteče ten čas, tak ti ten time_on vyjde záporný. Tak možná k němu (když bude záporný) přičíst 65536*65536. Ale ono se to nestane. Tak asi nic.

Edit: Oni píšou, že "Evaluation is done in fixed-width integers with no check for overflow...". Tak jestli to je 32-bitový integer, tak to je takhle v pohodě.
Uživatelský avatar
lesana87
Příspěvky: 4393
Registrován: 20 zář 2014, 00:00

#59 Příspěvek od lesana87 »

Až to počítadlo sekund od 1.1.1970 přeteče, tak už budu řešit jiný věci, než jestli se mi vypnul NAS. :D
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#60 Příspěvek od asdf »

A u té NASky není taková funkce, že když se vypínací tlačítko podrží déle (možná tak 5 sekund), tak se to vypne natvrdo i bez skriptu?
Odpovědět

Zpět na „Miniaturní počítače (Arduino, Raspberry a další)“