This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

watchdog chip, how to install program?

Dear users, 
I looked through the faq and the forum but found no thread concerning my question. 
If there is I appologize and ask the admins to move this thread to the right place.
Is it possiple to perform the instructions following on an installed astaro firewall/router?

Here follows the installation guide:

Lanner Platform Miscellaneous Utility
Watchdog/Bypass Program 
================================================

Code structure:V1.0

Contents
========

- In This Release
- Building 
- Installation
- Usage
- Q&A
- history
- License


In This Release
===============

This file describes the code structure of Lanner platform watchdog/bypass 
program.  This package provides program(DOS/Linux/FreeBSD) and driver
(Linux/FreeBSD) for Lanner platform-specific function.
Separated makefile available as well.(Makefile.dos, Makefile.linux,
Makefile.freebsd)

For DOS environment, Use DJGPP as compiler., use DJGPP and Makefile.dos.

For Linux, supports kernel versions 2.4.x and 2.6.x and Makefile.linux.

For FreeBSD, it is tested under FreeBSD 8.0.


This release provide 2 ways(Defined in Makefile) to access Lanner platform
devices:

1. DIRECT_IO_ACCESS=0(Default):

   To access Lanner miscellaneous devices through lanner driver.
   Lanner driver is available in bin sub-directory after make.
   This driver is only supported as a loadable module at this time. Lanner is
   not supplying patches against the kernel source to allow for static linking
   of the driver.

   Note: This mode is enabled by set DIRECT_IO_ACCESS=0 in Makefile.

2. DIRECT_IO_ACCESS=1:

   To manipulate Lanner miscellaneous device by userland application direct
   accessing. This mode JUST FOR providing quick way for user to realize
   Lannner platform specific function. This mode supported on DOS and Linux.

   Note: This mode is enabled by set DIRECT_IO_ACCESS=1 in Makefile.



Building
========

To build, 3 steps to accomplish it:

1. Identify current OS and select proper Makefile. 
   Copy Makefile.(os) to Makefile.

2. Select access mode(DIRECT_IO_ACCESS=[0|1] by edit Makefile.

3. Just type make to build, once completed, bin sub-directory contains.



Installation
============

To installation, depend on what's access mode you set:

If DIRECT_IO_ACCESS=1, no driver is need. Just execute executable program in
bin sub-directory to handle watchdog/bypass function.


If DIRECT_IO_ACCESS=0 , driver is needed.
For Linux:
        Insert module and create node in /dev as below example:
        #insmod wd_drv.[k]o
        #mknod /dev/wd_drv c 241 0

For FreeBSD:
        Insert module as below example:
        #kldload -v ./wd_drv.ko




Usage
=====
Once build completed, application(and driver) is available in bin sub-directory.

The command usage will be printout when you execute wd_test without any argument.
Below list usage:

        wd_tst --srbe [1|2](Set Pair 1/2 Runtime Bypass Enabled)
        wd_tst --srbd [1|2](Set Pair 1/2 Runtime Bypass Disabled)
        wd_tst --sobe [1|2](Set Pair 1/2 Off-mode Bypass Enabled)
        wd_tst --sobd [1|2](Set Pair 1/2 Off-mode Bypass Disabled)
        wd_tst --swtsb (Set Watchdog Timeout State to Bypass)
        wd_tst --swtsr (Set Watchdog Timeout State to Reset)
        wd_tst --swt *** (Set Watchdog Timer 1-255 seconds)
        wd_tst
  •  --start (Start Watchdog Timer)
            wd_tst --stop (Stop Watchdog Timer)

    Note 
  • : wd_tst --start is not presented if DIRECT_IO_ACCESS=1, watchdog timer
      will start automatically once "./wd_tst --swt ***" is executed.


    Physical Pair mapping:
    +---------------------------------------------------------+
    |                                                         |
    |  +---------+  +-----+  +----------+  +----------+       |
    |  | console |  | USB |  |  Pair1   |  |  Pair 2  |       |
    |  +---------+  +-----+  +----------+  +----------+       |
    |                                                         |
    +---------------------------------------------------------+

    Note for Linux user: insmod driver if necessary.

    So I hope someone will know if I can use the watchdog chip of my pc.
    thx a lot cptmerget


This thread was automatically locked due to age.
  • Dear Barry,
    after following your advice I get the result below:


    linux-owpn:/usr/Sample code/wd_bp # make 
    rm -rf ./include/config.h echo "//Created by Makefile, do not edit it" >> 
    ./include/config.h echo "#define DIRECT_IO_ACCESS" >> 
    ./include/config.h echo "#undef LANNER_DRIVER" >> 
    ./include/config.h echo "#define LINUX_ENV" >> 
    ./include/config.h ln -s ../src/ioaccess.c linux/ioaccess.c for i in src; 
    do make -C $i all; done 
    make[1]: Entering directory `/usr/Sample code/wd_bp/src' cc -o wd_tst wd_tst.o ioaccess.o make[1]: 
    cc: Command not found make[1]: [wd_tst] Error 127 (ignored) 
    cp -f wd_tst ../bin/  cp: cannot stat ‘wd_tst’: No such file or directory 
    make[1]: [wd_tst] Error 1 (ignored) make[1]: Leaving directory `/usr/Sample code/wd_bp/src' 
    linux-owpn:/usr/Sample code/wd_bp #  

    Any suggestion what is going wrong or what I have to change,
    regards cptmerget
  • "cc: Command not found"

    Hi, 

    You need to install the 'gcc' C compiler (and possibly other things).

    Run the SUSE package manager (sorry, I don't know the commands), and install GCC.

    Barry
  • Dear Barry,
    please have a look on www.merget.org/lilu1.jpg and .../lilu2.jpg.
    somehow I cant manage to post here.
    Further advice would be much appreciated,
    regards cptmerget
  • Hi,

    try running 'make clean' and then run make again

    BTW, you can upload images here by hitting 'go advanced' when posting; there's a Manage Attachments section there.

    Barry
  • Dear Barry, 
    thanks to you things are progressing:


    linux-owpn:/usr/Sample code/wd_bp # make clean
    for i in src; do make -C $i clean; done
    make[1]: Entering directory `/usr/Sample code/wd_bp/src'
    rm -rf wd_tst
    rm -rf wd_tst.o
    rm -rf ioaccess.o
    make[1]: Leaving directory `/usr/Sample code/wd_bp/src'
    rm -f include/config.h
    rm -rf bin/wd_tst
    rm -rf bin/wd_drv.ko
    rm -rf bin/wd_drv.o
    rm -rf linux/ioaccess.c
    linux-owpn:/usr/Sample code/wd_bp # make
    rm -rf ./include/config.h
    echo "//Created by Makefile, do not edit it" >> ./include/config.h
    echo "#define DIRECT_IO_ACCESS" >> ./include/config.h
    echo "#undef LANNER_DRIVER" >> ./include/config.h
    echo "#define LINUX_ENV" >> ./include/config.h
    ln -s ../src/ioaccess.c linux/ioaccess.c
    for i in src; do make -C $i all; done
    make[1]: Entering directory `/usr/Sample code/wd_bp/src'
    cc -c wd_tst.c
    wd_tst.c:85:2: warning: #warning ***** Note: You build with DIRECT_IO_ACCESS defined ***** [-Wcpp]
     #warning ***** Note: You build with DIRECT_IO_ACCESS defined *****
      ^
    wd_tst.c:86:2: warning: #warning ***** Note: undefine this to build for driver code ***** [-Wcpp]
     #warning ***** Note: undefine this to build for driver code *****
      ^
    cc -c ioaccess.c
    cc -o wd_tst wd_tst.o ioaccess.o
    cp -f wd_tst ../bin/ 
    make[1]: Leaving directory `/usr/Sample code/wd_bp/src'
    linux-owpn:/usr/Sample code/wd_bp # 

    Please , if you may, what will I have to do next to continue,
    regards cptmerget
  • Hi,

    I think it worked... there will be one or more executables produced; you'll need to identify them (ls -l should show 'x' in their file permissions), and copy them to the UTM.

    However, you should try 'make static' first, as that's more likely to succeed if it's an option.

    Barry
  • Dear Barry,
    thank you so much.

    linux-owpn:/usr/Sample code/wd_bp/bin # ls -l
    total 124
    -r-------- 1 root root 86139 Jun  6  2012 WD_TST.EXE
    -rwxr-xr-x 1 root root 17926 Jan 30 14:42 wd_tst
    -r-------- 1 root root 13345 Oct 27  2010 wd_tst.c
    linux-owpn:/usr/Sample code/wd_bp/bin # 

    linux-owpn:/usr/Sample code/wd_bp # make static
    make: *** No rule to make target `static'.  Stop.
    linux-owpn:/usr/Sample code/wd_bp # 

    Will it be good enough to copy wd_tst to UTM or should I copy the folder sample_code ( linux-owpn:/usr/Sample code/wd_bp # make, where, as you remember, I started the Makefile ).
    On the UTM, which will be the right directory/folder to copy to?
    Regards cptmerget
  • Probably all you need is 'wd_tst' (not the .exe)

    /usr/local/bin/ would be a good place for it on the UTM.


    Barry
  • Dear Barry,
    for I installed UTM 64bit I thought it is a good idea to compile on suse 64bit. But I found the the two files necessary for the wd_tst executable in a folder called lib64, which does not exist on the UTM. And so wd_tst did not work.
    I reproduced the whole process you did help me trough on suse 32bit and now the wd_tst executable does find the necessary files on the UTM, for they are present in the folder lib.
    Now if I run wd_tst without argument I get the following list of which I can run every command with positiv result:

    wd_tst --srbe [1|2](Set Pair 1/2 Runtime Bypass Enabled)
    wd_tst --srbd [1|2](Set Pair 1/2 Runtime Bypass Disabled)
    wd_tst --sobe [1|2](Set Pair 1/2 Off-mode Bypass Enabled)
    wd_tst --sobd [1|2](Set Pair 1/2 Off-mode Bypass Disabled)
    wd_tst --swtsb (Set Watchdog Timeout State to Bypass)
    wd_tst --swtsr (Set Watchdog Timeout State to Reset)
    wd_tst --swt *** (Set Watchdog Timer 1-255 seconds)
    wd_tst --stop (Stop Watchdog Timer)

    My question here, is the watchdog chip running by only executing wd_tst without argument? Or do I have to run wd_tst --swt 10 f.ex..
    For if I run, wd_tst --swt 10, the UTM restarts after ten seconds. I thought the timer will only restart the system if the UTM is not working properly. Is this like a test and is what is meant to happen and is the UTM afterwards running with watchdog chip timer on controlling every 10 sec?
    Is there a way to controll if the watchdog chip/wd_tst is working?
    I installed suse on the Lanner platform and ran wd_tst after compiling with the same results I do get on the UTM, by the way.
    See, I am to stupid to even know now whether the chip is working or not.
    Barry, you are my hero anyway and I hope you have one or two more brilliant ideas for me.
    If the chip is not running properly, could it be he is missing certain drivers, LAN f.ex..
    There are a couple of drivers on the cd which I never installed for UTM does not seem to need them.
    Regards cptmerget
  • Hi,

    I'm glad you got it running.

    I'm sorry, but I'm not really sure how this is supposed to work.

    I am guessing that the watchdog chip expects to receive a message from the system regularly, and if it doesn't it will reboot.

    What happens if you do this (with a stopwatch):

    date
    wd_tst --swt 30
    (wait 15 sec)
    wd_tst --swt 60
    date

    does it reboot 30 seconds after the first wd_tst command, or 60 seconds after the second command?

    If the later, then you can cron this to run every minute:
    wd_tst --swt 90

    and if the system hangs, it will reboot within 90 seconds.

    See
    https://community.sophos.com/products/unified-threat-management/astaroorg/f/51/t/20637
    for info on adding cron jobs to the UTM.

    Barry