Sziasztok!
Gondoltam belekontárkodok én is a topicba. Előre szólok, a kód nem szép, de legalább működik.
Alap probléma, hogy néha force frissíteni kell a miniDLNA adatbázis.
Adott egy 325v1-es NAS, Torrenttel darálja belele egy folderbe a fileokat, és ez a folder meg van adva 'video' mappának a miniDLNA-nak. Előfordult már, hogy egy áramszünet után az addig a miniDLNA adatbázisban lévő filmek közül 1-2 eltűnt. A file a helyén volt, SAMBA-n láttam is PC-vel, de a TV-n (LG LB671V) DLNA-n sehogy sem. Ilyenkor két dolog segített, a piócás ember, és a '/ffp/start/minidlna.sh rescan'
Van viszont a NAS elején egy copy/sync button, amit akár fel is használhatnánk erre.
Szükség van egy programra, ami feliratkozik erre az eseményre. Mivel csak messziről ugatom a Mijzelf féle Tweaks csomag felépítését, így inkább csak azt szedtem ki belőle, ami nekem kell.
4.80-as firmware van a NAS-on, ahhoz ezt a file-t használtam:
[link]
A letöltött file-t 7-zip-el megnyitva itt meg is találtam ezt a binárist:
Tweaks_20160515_arm_023.zpkg\Tweaks_20160515_arm_023\data.tar.gz\data.tar\sbin\btncpyctl
Ezt felmásoltam a NAS-ra egy olyan mappába, ami nem törlődik újraindítás után.
Futtatási jogot is adtam a file-nak, majd teszteltem.
Kell egy script, ami reagál a billentyű lenyomásra. (10-es szignált küld, ha röviden nyomod a gombot, 12-es,t ha hosszan kb 6 másodpercig. Ilyenkor hallassz is egy sípolást a gyári watchertől ami reagált a gombnyomásra. Azt hiszem ilyenkor egy telnet recovery backdoor nyílik a NAS-on. Bővebben itt).
cat /mnt/HD_a1/custom_scripts/btncpy_watcher.sh
#!/ffp/bin/sh
# Get PID of the watcher script
echo $$ > /tmp/btncpywatcher.pid
# Attach a watcher for copy button
/mnt/HD_a1/custom_scripts/btncpyctl BTNCPY_IOC_SET_NUM `echo $$`
# Create handlers for btn press
btncpy_short()
{
/sbin/buzzerc -t 2
/ffp/start/minidlna.sh rescan
}
btncpy_long()
{
#Not used, but working
}
# Trap signals
trap "btncpy_short" 10
trap "btncpy_long" 12
# Force script to run forever
while true; do sleep 10; done
Majd létrehoztam egy starter scriptet (először cron bejegyzéssel próbálkoztam e.g.: @reboot full_path_of_script.sh de ezt valamiért nem ette meg.)
Íme:
cat /ffp/start/ffp/start/btncpy_watcher.sh
#!/ffp/bin/sh
# PROVIDE: btncpy_watcher
# REQUIRE: LOGIN
. /tmp/.ffpstick/helper.inc
. /ffp/etc/ffp.subr
name="btncpy_watcher"
start_cmd="btncpy_watcher_start"
stop_cmd="btncpy_watcher_stop"
status_cmd="btncpy_watcher_status"
btncpy_watcher_start()
{
/mnt/HD_a1/custom_scripts/btncpy_watcher.sh
}
btncpy_watcher_stop(){
echo "stop not available"
}
btncpy_watcher_status()
{
echo "status not available"
}
run_rc_command "$1"