Man Linux: Main Page and Category List


       avr-evtd - Linkstation AVR Event daemon


       avr-evtd [ -d /dev/tty ] [i | c | v]


       avr-evtd  is a simple and small user space interface to the Linkstation
       AVR micro-controller.  It doesn’t have a lot of special  features,  but
       it’s main task is to provide ’keep-alive’ messages to the Linkstation’s
       on-board AVR device.  This device controls/monitors  the  fan,  various
       LEDs,  timed  power  up  and  two  buttons.   This  daemon provides the
       necessary initialization to the device and  also  stimulates  the  LEDs
       depending on various fault conditions.  It also monitors a power button
       (located at the front) and a reset button (located at the rear).

       avr-evtd searches for a configuration file located within /etc/melco at
       start-up  time.  If  this file does not exist, then avr-evtd reverts to
       reading the file located at /etc/default/avr-evtd.  Additionally,  avr-
       evtd may, if requested, periodically check the root (Under user control
       and could be /dev/hda1) partition and the user working  partition  (For
       example, /dev/hda3) to ensure they are mounted.  Also, if requested, it
       will determine if sufficient space remains and if not then the  AVR  is
       requested  to  illuminate  the  DISK  LED.  This periodic checking also
       takes place on the configuration files.  If they  are  deemed  to  have
       been updated, then the daemon will respond accordingly.

       Any  failures  are  normally  routed through the log files.  With timed
       shutdown/power up, a warning will be broadcast to  all  users  (console
       message) when within 5 or less minutes of power off.  Also, fan failure
       alerts will be broadcast in this fashion.  Failure to determine mounted
       working  partition  will  result  in the DIAG LED flashing three times,

       A new feature of this daemon is the ability to code events  for  single
       or  groups  of  days.  This allows the user to add any number of power-
       on/off events as required.  This also has the added  benefit  of  being
       able  to  shut  down  the  device for longer periods.  The internal AVR
       timer has a 12-bit resolution timer which can power up the  Linkstation
       from  a  maximum  of a sixty eight hour sleep: from time of invocation.
       The AVR is updated again at time of power down/shutdown to  re-validate
       the  timer, in case of time updates (either by user or NTP).  This will
       also preserve the 68 hour sleep resolution.


       -d   /dev/tty Specifies the UART device used to  communicate  with  the
            AVR.  This  is  normally  taken  care of by the scripts but can be
            specified in the configuration file.  See below for details.

       -c   Don’t fork, i.e. run in the foreground (debug use only).

       -i   Returns the port memory location for the device  specified  by  -d

       -v   Display daemon version.


       The  avr-evtd configuration file is the fallback file in the event that
       the stock melco files do not exist.  The file is read at initial start-
       up  in order to determine if timed shutdown is required and if the disk
       usage is to be monitored.  The file should be always located within the
       /etc/default  directory and a sample file is provided.  The file format
       is similar to other Unix configuration files - comments begin with a  #
       character  and  extend to the end of the line; blank lines are ignored.
       Configuration commands consist of an initial  keyword  followed  by  an
       argument.   Arguments  may  be  strings or times written in HH:MM (UTC)
       format.  Optional arguments are delimited  by  [  ]  in  the  following
       descriptions, while alternatives are separated by |.

            [ON | OFF]

            This  is  reserved  for  admin  only.   Allows  logging of certain
            information.  A log  file  will  be  maintained  in  /etc/avr-evtd
            logging  events  and  when run from command line, the process will
            log data to the console.

            [YES | NO]

            The timer command informs the daemon if it  has  to  provide  time
            controlled shutdown and power up.  If TIMER is set to NO then this
            function is not available and the commands  SHUTDOWN  and  POWERON
            are  ignored  and  have  no  effect.   The same applies if any day
            events are specified and the TIMER is set to NO then these  events
            will also be ignored.


            This informs the AVR which UART to use when communicating with the
            AVR.  The communication path between the micro-controller and this
            daemon  is via a serial link.  This keyword is not for general use
            and is provided to allow advanced users the option  of  overriding
            automatic configuration.  This would normally be set to /dev/ttyS1
            but on some systems  it  is  /dev/ttyS0.   The  selection  of  the
            correct  port  is  performed by the daemon start script and is not
            normally required to be altered.

            [ON=HH:MM | ON= | OFF=HH:MM | OFF=]

            This defines events for either a single day or group of days,  ’-’
            separator.   Any  number of ON and OFF events can be specified and
            can be extended over additional lines. <day> can be any number  of
            days of the week specified as either SUN, MON, TUE, WED, THR, FRI,
            and SAT.  For example:


            In this example, the first power on event is Monday at 09:00.   At
            23:00  the  Linkstation  will  power  down.   This is repeated for
            Tuesday and Wednesday.  On Thursday, the Linkstation will power on
            at  09:00  and  will  power off on Friday at 01:00.  The unit will
            then remain off for Saturday and Sunday and  not  power  up  again
            till 09:00 on Monday.  The unit is capable of sleeping for no more
            than 68 hours (due to  the  resolution  of  the  internal  timer).
            Again, this time MUST be specified in UTC format and follow HH:MM.

            Five minutes before power off is required, a message is  broadcast
            to  all  console  users.  At shutdown, an event message is sent to
            the event script.  See below for more details.


            This specifies the time that the Linkstation will be powered down.
            This  time  MUST  be  specified  in UTC and must follow the format
            HH:MM.  If the user alters  this  configuration  file  whilst  the
            daemon  is  running,  then  the  change  will  be seen and the new
            settings will be implemented.  If the new time entered  is  passed
            the current time, then the shutdown time will be for the following
            day.  If single or multiple day events are  specified,  then  this
            becomes the default power down time for any undefined days.


            This specifies the time that the Linkstation will be automatically
            powered up; as long as now unexpected power outage occurs.  Again,
            if  this  time  is  less than the SHUTDOWN time then it is for the
            following day.  Both the TIMER set to ON and the SHUTDOWN and  the
            POWERON  times  are valid will timed shutdown/power up be enabled.
            This will be reported in the message log along with any errors  in
            the configuration file.

            If  single or multiple day events are specified, then this becomes
            the default power on time for any undefined days.

            [OFF | 0..100]

            If this is set to OFF or 0 (zero) then  disk  usage/monitoring  is
            disabled.   Set  to  a  value  between  0 and 100% to monitor disk
            usage.  If disk usage is above this specified value, then the DISK
            LED  will  be  illuminated.   At  the same time, a disk full event
            message will be sent to the event script.

       ROOT [hda1..9]

            No default.  This allows the root partition to be defined  by  the
            user.  No syntax checking is performed on this entry or validation
            of the partition ID.

       WORK [hda1..9]

            No default.  This allows the working partition to  be  defined  by
            the user.  Again, no syntax checking is performed on this entry or
            validation of the partition ID.


            This defaults to 40.  This provides  control  over  the  rate  (in
            seconds)  that  the  daemon  checks  the  system  for  changes and
            refreshes the AVR.  Any number between 1 and 300 can  be  entered.
            Anything less than the default will result in higher impact on the
            system: more CPU usage.  Higher  times  will  result  with  slower
            response  to  configuration  file  changes  but this may not be an
            issue with most users.

       HOLD [1..9]

            This defaults to 3.  This  provides  control  over  the  time  (in
            seconds) that the user needs to hold either the reset of the power
            button in for a reset event (reset  button)  or  power  off  event
            (power button).

            [ON | OFF]

            Default if off.  This provides the user control over the disk full
            event.  The default is that once detected, just a single event  is
            triggered.  If required, setting this to on will generate repeated
            events, at the frequency of REFRESH until the disk  is  no  longer
            deemed full.

            [OFF | 0..60]

            Default  is  30  seconds.  This  is  the  time, from report of fan
            failure in which the daemon will generate a fan failure event call
            to the event script.  This allows the user to act accordingly.  At
            present, the script is setup to power down.  This can  be  changed
            to an e-mail event prior to shutdown if required.

            Otherwise,  if  a user has decided to remove the fan then this can
            be set to OFF to prevent  shutdown  from  occuring.   It  must  be
            stressed  that  alternative cooling must be sourced if this option
            is selected.


       All  events,  whether  mechanical   button   operation,   or   software
       reset/shutdown  actions  are  routed through an event script located at

            On press, a button event message is  sent.   On  release,  another
            event  message  is  sent.   If the button is held in for more than
            HOLD seconds, then a shutdown  event  request  is  sent.   If  the
            button  is  pressed  twice  within  a period of one second, then a
            reset request event is sent.

            If the power button  is  pressed  during  the  five  minute  timed
            shutdown  warning,  then  the  shutdown  time is increased by five
            minutes.  Multiple presses will keep increasing the time  by  five
            minutes  (to a maximum pause of fifty minutes).  This provides the
            user with the ability to carry on working before timed shutdown is
            finally  activated; careful here as repeated presses maybe seen as
            a reboot request.

            On press, a button event message is  sent.   On  release,  another
            event  message  is  sent.   If the button is held in for more than
            twenty seconds, then a EM-Mode event  request  is  sent.   If  the
            button  is  pressed  twice  within  a period of one second, then a
            special event is sent which in the default state will  launch  the
            telnet daemon.


       The  event  system  has been modified such that 99% of the daemon event
       system is pushed through  the  event  script.   A  third  parameter  is
       supplied by the daemon out to the script detailing information relevant
       to the generated message.  For example, for a disk  full  message,  the
       third  parameter  would detail the percentage disk space used (worst of
       the two monitored partitions) and  when  this  is  cleared,  then  this
       parameter would be cleared to zero.

       0    User  has requested (by double press of reset button) to, with the
            first  press,  launch  the  telnet  daemon,  or  other  client  as
            specified  in  the  EventScript.   The  script  also establishes a
            static IP to an alias Ethernet device :EM at   If
            this  IP  is  already in-use, then it will not be created.  If the
            Ethernet  is   not   running,   then   an   alternative   Ethernet
            configuration   file   is   loaded   providing   a  static  IP  at
    and also a DHCP provided IP.  On the THIRD double
            press,  then  a  known  set  of  group and user password files are
            copied to /etc.  Prior to  the  transfer,  the  relevant  original
            files  are  copied to .em.  A file, recovery.tar, is extracted and
            the LEDs are flashed to indicate this new mode.  A  user  can  now
            gain  root access using the password emergency and gain access via
            the telnet port 1234 to their box.

       1    AVR micro-controller has requested a reset.

       2    Shutdown request from the shutdown timer event.

       3    Power button has been released event.

       4    Power button has been pressed event.

       5    Reset button (rear of unit) has been released.

       6    Reset button has been pressed.

       7    User has requested (by holding power button  for  more  than  HOLD
            seconds) to shutdown the unit.

       8    User  has requested (by double press of the power button) to reset
            the unit.

       9    Disk usage greater than DISKCHECK.  Parameter 3 set to  percentage
            used or zero.

       F    Fan  has  been stationary for FANSTOP seconds.  Parameter 3 is set
            to 4 when cleared.

       E    EM-Mode has been selected.  The EM-Mode sequence is written to the
            desired  flash location and the system is issued a reboot request.
            EM-Mode is an emergency boot mode  that  for  the  Linkstation  it
            boots from an image in flash and rebuilds files on the disk.  This
            should only be used by those who know what will  happen  to  their
            disks when this Mode is selected

       S    The  system  will  shutdown  in  less  than  five minutes warning.
            Parameter 3 indicates shutdown delay on power press.

       D    Error message handler.  Parameter 3 indicates error number.


       The following error messages maybe displayed in the  log  files  during

       1    No stock or avr-evtd configuration files were located.

       2    Power off time greater than that supported by the AVR.  As this is
            calculated at the time the timer is established,  this  fault  may
            clear at shutdown as timers are re-validated.

       3    Timer  declaration  error  in  /etc/default/avr-evtd configuration

       4    Error in stock configuration file




       Bob   Perry   <>   (2006),   with   some
       modifications  by  Rogério  Brito <> (2008,


       This program is free software; you can redistribute it and/or modify it
       under  the  terms of the GNU General Public License as published by the
       Free Software Foundation; either version 2 of the License, or (at  your
       option) any later version.

       This  program  is  distributed  in the hope that it will be useful, but
       WITHOUT  ANY  WARRANTY;  without   even   the   implied   warranty   of
       General Public License for more details.

       You should have received a copy of the GNU General Public License along
       with this program; if not, write to the Free Software Foundation, Inc.,
       675 Mass Ave, Cambridge, MA 02139, USA.

                                  28 Aug 2009