Ero sivun ”OH2RDY.en” versioiden välillä

Radioamatööriwikistä
Siirry navigaatioon Siirry hakuun
>Oh2mqk
>Oh2mqk
Rivi 23: Rivi 23:
* CD-ROM drive
* CD-ROM drive
* Place for a 3.25" disk drive where a 2.5" flash drive was residing.
* Place for a 3.25" disk drive where a 2.5" flash drive was residing.
Old small flash-drive was removed, and an IDE-Flash-Module was placed on the motherboard IDE connector.
Old small flash-drive was removed, and a 1GB IDE-Flash-Module was placed on the motherboard IDE connector.


With Flash modules (and Compact Flash cards with suitable adapter to IDE cable) the important thing is to minimize writing on it.
With Flash modules (and Compact Flash cards with suitable adapter to IDE cable) the important thing is to minimize writing on it.

Versio 20. kesäkuuta 2010 kello 15.58

Finnish version is at OH2RDY

OH2RDY is Viestikallio radio club's (OH2MOH / OH2Z) local APRS base station.

This story tries to supply some clues on how to make a very long life installation of the service.

Earlier server hardware had these problems:

  • Power hungry rack-PC with 230V AC power
  • Spinning hard-drives in severe environment conditions (-10C .. +30C)
  • Spinning fans
  • Did not auto-start after powerfailure, required manual pressing of start button

New server hardware

Systems keepers got tired to going to site to reboot the machine after a glitch on rural electricity N:th time, and found an embeddable machine:

  • 12V DC power (taken from OH2RAY phone repeater's main 13.8 V DC BUS)
  • 4x RS232 D9M
  • 2x LPT D25F
  • 1x RJ45 10/100 Base-T ethernet
  • audio: mic in, line in, line out
  • Processor VIA Samuel 2, about 1100 Bogomips (unfortunately this has a small fan..)
  • 128 MB PC133 SDRAM
  • CD-ROM drive
  • Place for a 3.25" disk drive where a 2.5" flash drive was residing.

Old small flash-drive was removed, and a 1GB IDE-Flash-Module was placed on the motherboard IDE connector.

With Flash modules (and Compact Flash cards with suitable adapter to IDE cable) the important thing is to minimize writing on it. More about latter.

Even an USB memory stick could have been used so that machine boots from the stick, and uses the stick as its "hard drive". However after very brief consideration it was seen has mechanically risky approach.

If a new embedded machine comes without serial ports, many USB serial port adapters do work on Linux just fine.

Important selection criteria:

  • No spinning things that over the years stop spinning
  • Decent amount of computing power -- 50 MHz ARM7 is quite enough, 200 MHz PC is also enough!
  • 10/100M ethernet
  • D9M serial port (or a few), possibly LPT port
  • Uses 12V DC power, tolerates input from 8 to 16 Volts
  • Flash memory as a disk

Software for the new machine

A minimalistic Debian 4.0 was installed here

  • 2.6.18 kernel ( + what it wants )
  • ssh, openssh-server, openssh-client
  • ax25-tools, ax25-apps, libax25
  • ntp, ntpdate
  • aprx

Flash-disk specialities

The flash memory devices tend to have problems with writing causing permanent wear inside the component, and after a few million writes the bit can not be erased. The new solid-state-disks are intended for much heavier writing, but they also cost a lot.

The Linux gives a neat solution for this: mount whole file system in "read-only (ro)" state. Unfortunately systems need also a bit of writing areas.

By accepting writing to a place which does not hold data over power cuts, the software and configurations can be kept on read-only area. If something needs to be logged, it can be logged with syslog mechanism over the network.

/etc/fstab

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>    <dump>  <pass>
/dev/hdc1  /       ext2    defaults,ro                0     1
proc       /proc   proc    defaults                   0     0
tmpfs      /tmp    tmpfs   defaults                   0     0

Above only the /tmp directory is writable, and in OH2RDY case, its maximum size is 64 MB.

A few directories to symbolic links

In Debian installation system disk there are typically a few places that are written. Those directories are changed to symbolic links to point to /tmp filesystem.

/etc/network/run -> /tmp
/var/lib/dhcp3 -> /tmp
/var/lock -> /tmp
/var/run -> /tmp
/var/tmp -> /tmp
/var/ax25/mheard -> /tmp

ntp time service

It is always good to give the machine a precise information about current time. An iGate is by definition connected to the internet, and can get its time from the internet with NTP service. Using NTP servers of the ISP whose connectivity the site has:

/etc/default/ntpdate

NTPDATE_USE_NTP_CONF=yes
NTPSERVERS="ntp1.kolumbus.fi ntp2.kolumbus.fi"
NTPOPTIONS=""

/etc/ntp.conf

driftfile /tmp/ntp.drift
statsdir /tmp/
server ntp1.kolumbus.fi
server ntp2.kolumbus.fi
restrict 127.0.0.1
restrict ::1

/etc/motd.tail

Reminder of the basic facts for the logging in system keeper.

/etc/motd.tail:

Kilo (rev.3) of  viestikallio.fi

In normal operation the "hdc1" disk (Flash memory) is mounted
READ ONLY, and it can remounted for writing for the maintenance
by issuing command:

   mount -t ext2 -o remount,rw /dev/hdc1 /

AFTER THE MAINTENANCE IS DONE, REMOUNT AS __RO__ OR REBOOT !

/etc/syslog.conf

File /etc/syslog.conf was cleared completely. Nothing logged/written!

AX.25 configurations

/etc/ax25/axports

#
# The format of this file is:
#
# name callsign speed paclen window description
#
1       OH2RDY          9600    255     2       144.800 MHz (1200 bps)
# reservations for further use
2       OH2RDY-1        9600    255     2       reserved for further use
3       OH2MOH          9600    255     2       test port with unique call
4       OH2RAY          9600    255     2       434.775 MHz (MPRS)

/etc/init.d/ax25ifs

Starting a few kissattach processes to aforementioned AX.25 ports, etc.

#!/bin/sh
#
# Start AX.25 interfaces, and mheardd

### BEGIN INIT INFO
# Provides:          ax25ifs
# Required-Start:    $syslog $named
# Required-Stop:     $syslog $named
# Should-Start:      $local_fs
# Should-Stop:       $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: APRS digipeater
# Description:       Rule-based APRS digipeater.
### END INIT INFO

PATH=/bin:/usr/bin:/sbin:/usr/sbin

case "$1" in

  start)
    echo -n "Starting APRS gateway: "

    /sbin/modprobe mkiss
# ttyS0 is in direct control of aprx
#    /usr/sbin/kissattach /dev/ttyS0 1 10.0.0.10
    /usr/sbin/kissattach /dev/ttyS1 2 10.0.0.11
    /usr/sbin/kissattach /dev/ttyS2 3 10.0.0.12
    /usr/sbin/kissattach /dev/ttyS3 4 10.0.0.13

    /usr/sbin/mheardd

    echo "$NAME."
    ;;

  stop)
    echo -n "Stopping APRS gateway: "
    start-stop-daemon --stop --quiet --oknodo --pidfile /var/run/$NAME.pid --exec $DAEMON
    pkill kissattach
    pkill mheardd
    echo "$NAME."
    ;;

 force-reload|restart)
    $0 stop
    $0 start
    ;;

  *)
    echo "Usage: /etc/init.d/$NAME {start|stop|restart}"
    exit 1
    ;;

esac

exit 0

/etc/aprx.conf

Condensed version without any of the usual comment explanations in standard file:

mycall  OH2RDY
<aprsis>
  server    igates.aprs.fi    14580
</aprsis>
<logging>
  pidfile /tmp/aprx.pid
  rflog /tmp/aprx-rf.log
  aprxlog /tmp/aprx.log
  erlangfile /tmp/aprx.state
</logging>
<interface>
  serial-device /dev/ttyS0 9600 8n1 KISS
  <kiss-subif 0>
    callsign   $mycall
    tx-ok      true
  </kiss-subif>
</interface>
<beacon>
 cycle-size  20m
 beacon timefix object "434.775-B" lat "6044.09N" lon "02612.79E" symbol "/r" comment "434.775MHz TOFF -1600kHz R50k OH2RAY"
 beacon via TRACE1-1               lat "6044.06N" lon "02612.79E" symbol "I#" comment "PHG25363 Tn,Wn Artjarvi OH2Z Digi+TX-iGate"
 beacon timefix object "434.775-B" lat "6044.09N" lon "02612.79E" symbol "/r" comment "434.775MHz TOFF -1600kHz R50k OH2RAY"
 beacon timefix object "434.775-B" lat "6044.09N" lon "02612.79E" symbol "/r" comment "434.775MHz TOFF -1600kHz R50k OH2RAY"
 beacon via TRACE1-1               lat "6044.06N" lon "02612.79E" symbol "I#" comment "PHG25363 Tn,Wn Artjarvi OH2Z Digi+TX-iGate"
 beacon timefix object "434.775-B" lat "6044.09N" lon "02612.79E" symbol "/r" comment "434.775MHz TOFF -1600kHz R50k OH2RAY"
</beacon>
<digipeater>
  transmitter      $mycall
  <source>
    source         $mycall
    relay-type    digipeated # default mode is "digipeated"
#   viscous-delay  0     # no viscous delay for RF->RF digipeating
#   ratelimit      120   # default: max 120 packets/minute
    filter         t/m
    filter         a/61.8/25.2/59.5/28
    filter         b/OH2RDJ-8
    filter         f/OH2RDJ-8/2
    filter         b/OH2RDN-8
    filter         f/OH2RDN-8/2
    filter         b/OH2JCQ-15
    filter         f/OH2JCQ-15/1
    filter         b/OH2JIU-9
    filter         -b/OH5J-9          #OT configuration gone wild?
    filter         -b/OH6RV*          #This is a test
    filter         -b/SM5LBR*         #LID filter
    filter         "-p/R/U/SK/SL"     #Filtering out verbose neighbours
  </source>
  <source>  # Adding APRSIS source makes this tx-igate
    source        APRSIS
    relay-type     3rd-party  # Must define this for APRSIS source!
    viscous-delay  5    # Recommendation: 5 seconds delay to give
                        # RF delivery time make itself known.
    via-path TRACE1-1    # default: none
#   filter         m/150
    filter         t/m  # Tx-IGate only messages sent to me by APRSIS
  </source>
</digipeater>


People working on this project

On April 2007 following people worked on this:

  • OH2MQK, OH2MOK: New server hardware, modifications, Debian installation
  • OH3BK: aprsd and aprsdigi software installation
  • OH2KKU ja OH3GNU: aprsd and darkice software bugfixing

Over years 2008-2010:

  • OH2MQK: Aprx software, and configuration
  • OH3BK: aprx digipeater configuring