[vdr] vdr shutdownskript - wrong time

Ian Bates ian_and_joanna at talktalk.net
Tue Dec 22 22:47:08 CET 2009


On 22 Dec 2009, at 21:36, Ian Bates wrote:

> On 22 Dec 2009, at 19:39, Steffen Barszus wrote:
>
>> Hi !
>>
>> Looks like vdr's shutdownskript hook is not properly working. Since  
>> it seems to be undocumented in vdr man page i took my information  
>> from here:
>>
>> http://www.vdr-wiki.de/wiki/index.php/C%27t-VDR_-_Hooks
>>
>> #!/bin/sh # Simple ACPI shutdown hook
>> # $1 : Next timer seconds from 1970 from 1970/01/01, UTC
>> # $2 : Next timer seconds from now
>> # $3 : Next timer title
>> # $4 : Shutdown forced
>>
>>
>> If the time is far enough in the future this is correct, if it is  
>> only few minutes in the future it gets horribly wrong (now +30  
>> minutes or something similar)
>> (The argument $1 is supplied wrong to the script)
>>
>> This is vdr 1.7.10 . I remember that some people have written this  
>> is a known problem. But why is it happening ? Has somebody debugged  
>> this allready ?
>
> From the MANUAL:
>
>  Min. event timeout = 30
>  Min. user inactivity = 300
>                         If the command line option '-s' has been  
> set, VDR will
>                         automatically shutdown the computer if the  
> next timer
>                         event is at least MinEventTimeout minutes in  
> the future,
>                         and the user has been inactive for at least
>                         MinUserInactivity minutes. Setting  
> MinUserInactivity
>                         to 0 disables the automatic shutdown, while  
> still
>                         retaining the possibility to manually  
> shutdown the
>                         computer.
>
> There is your 30 mins.  No bug, a 'feature'.
>
> My VDR is set to these defaults.  If I try to shutdown before 30  
> mins, I am prompted by VDR to press Power again to FORCE shutdown.   
> If this is the case I cannot recall exactly but I think the wakeup  
> is set to 30 mins from the forced shutdown, rather than the next  
> timer.
>
> If I recall a mailing list discussion there was an argument along  
> the lines that if a timer was set to record in less than a certain  
> value, 30 mins by default, it is 'cheaper' in terms of power and  
> hardware shutdown/restart cycle degradation to keep the computer  
> running.
>
> I have not played with this setting so I cannot comment on VDR  
> behaviour with a lower setting for this value.  Please report back  
> if you experiment.
>

There is also a detailed section in the INSTALL document:


Automatic shutdown:
-------------------

If you define a shutdown command via the '-s' command line option, VDR
will call the given command if there is currently no recording or replay
active, the user has been inactive for at least MinUserInactivity  
minutes
and the next timer event is at least MinEventTimeout minutes in the  
future
(see the Setup parameters in MANUAL).

The command given in the '-s' option will be called with five  
parameters.

The first one is the time (in UTC) of the next timer event or plugin  
wakeup
time (as a time_t type number), and the second one is the number of
seconds from the current time until the next timer event. Your program  
can
choose which one to use for programming some sort of hardware device  
that
makes sure the computer will be restarted in time before the next timer
event. Your program must also initiate the actual shutdown procedure  
of the
computer. VDR will not automatically exit after calling the shutdown
program, but will rather continue normally until it receives a SIGTERM  
when
the computer is actually shut down. So in case the shutdown fails, or  
the
shutdown program for some reason decides not to perform a shutdown, VDR
will stay up and running and will call the shutdown program again  
after a
while. The command will be started in a separate background session,  
so it
can continue to run even after VDR has terminated.

If there are currently no timers active and there is no plugin wakeup
time, both parameters will be '0'. In that case the program shall not  
set
the hardware for automatic restart and only perform the system shutdown.
A program that uses the second parameter to set the hardware for restart
must therefore also check whether the first parameter is '0'.

If the wakeup time is given by a timer, the third parameter will be the
number of the channel that will be recorded, otherwise it will be 0. The
fourth parameter contains the file name of the recording as defined in  
the
timer, the name of the plugin that requested the wakeup time, or an  
empty
string if no wakeup time is present. These can be used by the shutdown
program to show that information on some display interface etc.

The fifth parameter indicates the reason why the shutdown was requested.
'0' means this is an automatic shutdown due to some timeout, while '1'  
means
that this is a user requested shutdown (resulting from pressing the  
"Power"
key). The shutdown program may use this information to decide whether or
not to actually perform the system shutdown.

If a timer is currently recording, or a recording would start within the
next 30 minutes (default for the "Min. event timeout" setup  
parameter), and
the user insists in shutting down now, the first and second parameter  
will
correspond to a time that is "Min. event timeout" minutes in the future.

Before the shutdown program is called, the user will be prompted to  
inform
him that the system is about to shut down. If any remote control key is
pressed while this prompt is visible, the shutdown will be cancelled  
(and
tried again later). The shutdown prompt will be displayed for 5  
minutes, which
should be enough time for the user to react.

A sample shell script to be used with the '-s' option might look like  
this:

#!/bin/sh
setRTCwakeup $(($1 - 300))
sudo halt

Here 'setRTCwakeup' would be some program that uses the first parameter
(which is the absolute time of the next timer event) to set the Real  
Time
Clock so that it wakes up the computer 5 minutes (i.e. 300 seconds)  
before
that event. The 'sudo halt' command then shuts down the computer.
You will have to substitute both commands with whatever applies to your
particular hard- and software environment.

If the '-s' option is present, the VDR machine can be turned off by  
pressing
the "Power" key on the remote control.



These documents are provided in the VDR source tarball.  I use  
Slackware and 'roll my own' VDR, for a packaged distribution you may  
not have these documents or if you do they may not be where you can  
find them 'easily'.

Use the source Luke...

ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.10.tar.bz2

Seasons Greetings,


Ian.






More information about the vdr mailing list