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.
  • Hi, there's no compiler on the UTM, and some common libraries are not present, so your best bet would probably be to do a static compile on another linux system.

    Barry
  • Dear BarryG or whoever knows,
    thank you for your quick reply.
    So if I manage to follow the instructions, fxp on my laptop running unix with compiler, I will create a program that will enable me to steer the watchdog chip on my lanner pc. Am I right so far?
    Is it than possible to copy that program to the lanner pc running astaro firewall/router?
    And steer the watchdog chip.
    Regards cptmerget
  • Hi, yes if you can do the static compilation, you can copy it to the UTM with scp/sftp, or via a USB stick.

    Barry
  • Dear Barry, hi everybody,

    these are the Makefiles of which I am supposed to use at least one, I guess. Will one of them perform a static compilation?
    Second, may I perform this on a virtual Ubuntu? And if so, is there a specific folder in Ubuntu where to copy Makefile to?

    1.Makefile:

    # Set to 1 for direct access IO register in user-mode program.
    # This is suitable for DOS environment or evaluation purpose in Linux.
    # Set to 0 to leave IO access to driver for noraml operation.
    #
    DIRECT_IO_ACCESS=0


    ifeq ($(DIRECT_IO_ACCESS), 1)

    LANNER_DRIVER=0

    else

    LANNER_DRIVER=1

    endif 


    ifeq ($(LANNER_DRIVER), 1) 
    DIRS = linux src
    else
    DIRS = src
    endif

    all: config
    ln -s ../src/ioaccess.c linux/ioaccess.c
    for i in $(DIRS); do $(MAKE) -C $$i $@; done

    config:
    -rm -rf ./include/config.h
    -echo "//Created by Makefile, do not edit it" >> ./include/config.h
    ifeq ($(DIRECT_IO_ACCESS), 1)
    -echo "#define DIRECT_IO_ACCESS" >> ./include/config.h
    -echo "#undef LANNER_DRIVER" >> ./include/config.h
    else
    -echo "#undef DIRECT_IO_ACCESS" >> ./include/config.h
    -echo "#define LANNER_DRIVER" >> ./include/config.h
    endif
    -echo "#define LINUX_ENV" >> ./include/config.h

    clean:
    for i in $(DIRS); do $(MAKE) -C $$i $@; done
    -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

    .PHONY: all clean config

    2.Makefile:

    TARGET_NAME=wd_drv
    CFILES = drv_main.c ioaccess.c


    # Kernel Version Check
    KVER  := $(shell uname -r | cut -c1-3 | sed 's/2\.[56]/2\.6/')
    #;tadd++Start
    KVER3  := $(shell uname -r | cut -c1-1)
    #;tadd++End
    # Makefile for a basic kernel module - 2.4.x
    KINC=
    ifeq ($(KINC),)
    KINC  := $(shell uname -r)
    endif
    CC    := gcc
    MODCFLAGS := -DMODULE -D__KERNEL__ -DLINUX -DOLDKERNEL -O -I/usr/src/linux-$(KINC)/include
    EXTRA_CFLAGS += -I./../include

    # Makefile for a basic kernel module - 2.6.x
    obj-m += $(TARGET_NAME).o 
    $(TARGET_NAME)-objs := $(CFILES:.c=.o) 
    KDIR  := /lib/modules/$(shell uname -r)/build
    PWD   := $(shell pwd)

    # MODULE -- This tells the header files to give the appropriate
    # definitions for a kernel module.
    #
    # __KERNEL__ -- This tells the header files that this code will
    # be run in kernel mode not as part of a user process.
    #
    # LINUX -- Technically speaking, this is not necessary. However,
    # if you ever want to write a serious kernel module which will
    # compile on more than one operating system, you'll be happy you
    # did. This will allow you to do conditional compilation on the
    # parts which are OS dependant.
    #
    all:
    ifeq ($(wildcard /dev/$(TARGET_NAME)),)
    mknod /dev/$(TARGET_NAME) c 241 0
    endif

    #;tadd++Start
    ifeq ($(KVER3),3)
    $(MAKE) -C $(KDIR) M=$(PWD) modules
    -cp $(TARGET_NAME).ko ../bin
    endif
    #;tadd++End

    ifeq ($(KVER),2.6)
    $(MAKE) -C $(KDIR) M=$(PWD) modules
    -cp $(TARGET_NAME).ko ../bin
    endif
    ifeq ($(KVER),2.4)
    $(CC) $(MODCFLAGS) -c -o drv_main.o drv_main.c
    $(CC) $(MODCFLAGS) -c -o ioaccess.o ioaccess.c
    $(LD) $(LDFLAGS) -r drv_main.o ioaccess.o -o $(TARGET_NAME).o
    -cp $(TARGET_NAME).o ../bin
    endif
    clean:
    ifeq ($(KVER),2.6)



    Regards cptmerget

    I know that this does not concern UTM directly, but you seem to know exactly what you are talking about and I`d be ever so happy to get forward with this, after UTM 9 running allready without wd-chip. Get it going, that would be the cream on the cake.
  • Hi, first, you'll probably want to use the
    DIRECT_IO_ACCESS=1
    option, otherwise, you'd need to compile a kernel module (and recompile everytime the kernel changes; not recommended)

    I don't know if their makefiles have a 'static' option; try 'make static' and see what happens.

    Alternatively, you can do a normal 'make', and then run 'ldd' on the output file (the executable binary), and see what libraries are needed, and hope they are included in the UTM.
    Even if they are included, you'd probably have to do the build on a SUSE system for the libs to be close enough versions.
    If they're not included, or don't match, then a static build is the only option.

    Barry
  • Dear Barry,
    thx for your fast advice which is really helpfull, for you must have noticed you are talking with an absolute linux noob.
    Regards cptmerget
  • Dear Barry,
    I installed openSuse on OracleVM. Could you advise the right folder/directory where to place the Makefile, please?
    This is what I dont understand in the instructions:

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

    I cannot find any folder or directory with that name and looking for Makefile brings up more than one result.
    So I really need help where to copy the Makefile to,
    regards cptmerget
  • Hi, I think they want you to copy Makefile.suse (or Makefile.sles) to Makefile...

    Assuming there is a Makefile.suse, the command would be
    cp Makefile.suse Makefile

    Barry
  • Dear Barry, 
    there is a file named Makefile.linux, which in this thread is the file I called 1.Makefile, on the cd that came with my Lanner pc. The command cp Makefile.linux Makefile does of course not work for it cant be written on cd. So still my question is where to place Makefile.linux before using cp Makefile.linux Makefile or, what I assume is the same, rename it to Makefile,
    regards cptmerget
  • If it's a CD, you'll need to copy the CD to your HD first.

    Barry