Who am I?
Hamradio interests
Microwave contest
ATV
APRS
Ham IRC usermanual
WiFi
Hardware
Hamradio projects
Landslides control
My job
Buy online remote control duplicators, receivers, door openers
Remote controls, Receivers and door openers shop
Software
Server ham
Software ham
SV Telemetric board
SV PacketCam
Utils SuperVozelj
Unsorted software
OpenOffice.org Tests
Publications
Electronic devices
ElectroMagnetic Compatiblity
Something about HTML
Linux publications
What's Linux?
Kernel hacking
AX.25 installation
EMail antivirus
RAID1 mini-HOWTO
Linux/Compaq EVO n115
Other...
Show QTH Locators on GoogleMaps
My BLOG
Travel photos
Humor about engineers
S53MV Homepage
A good lawyer in Italy
A nice photo
OpenOffice.org
Contacts
GuestBook
InternetRelayChat:
Callsign:

Linux server
Compressed with mod_gzip


Hosted on
Ir3ip Hamradio Server

Visualizza questa pagina in italiano

Automatic Position Reporting System

What is APRS?
APRS is a simple way to exchange position information on a amateur radio network.
Also, it permits to send short messages to other stations, queries, bulletins, and so on...

On ir3ip you will found a forum dedicated to the APRS activity; also, if you need other information or know available APRS projects, you can enter the APRS hamradio directory.

aprs.ir3ip.net: the APRS server

Do you know that ir3ip is a APRS server?
Now there are several port available to the hamradio users, to exchange APRS traffic.
The main ports are:
10153
Transmit only APRS data of swiss, italian and slovenian stations.
10152
Transmit all world-wide APRS traffic
10151
Transmit all world-wide APRS traffic, and at the connection it also transmit the last 30 minutes of data

If you have installed APRSD server, and you are interested about knowing an easy way to filter data, just take a look at the following Tcl script:


#! /usr/bin/tclsh
#aprslocal: Tcl script which filter data read from APRSD daemon
#Called by xinetd superdaemon (file /etc/xinetd.d/aprslocal)
#service aprslocal
#{
#        socket_type             = stream
#        wait                    = no
#        user                    = nobody
#        server                  = /usr/local/bin/aprslocal
#        log_on_success          += USERID
#        log_on_failure          += USERID
#}
# Written by Paolo Subiaco iw3grx@ir3ip.net http://www.ir3ip.net/iw3grx
#

set sd [socket 44.134.177.204 10152]
fconfigure stdin  -blocking 0 ; #nonblocking stdin
for {set i 0} {$i<10} {incr i} {
        if {[gets stdin linein]>0} {
                puts $sd "$linein\r"
                flush $sd
        }
        if {[gets $sd line]>0} {
                puts "$line\r"
        }
}
while {[gets $sd line]>=0} {
  if {[regexp {^I|:I[0-Z]+|^T7|:T7|^HB9|:HB9|^S5[0-9]|:S5[0-9]|^OE[0-9]|:OE[0-9]|^9A[0-9]|:9A[0-9]} "$line"]} {
                puts "$line\r"
        }
        if {[gets stdin linein]>0} {
                puts $sd "$linein\r"
                flush $sd
        }
}
Do you think there will be several buffer overflows?
If you think so, please help me improving the script security! :-)


SuperVozelj telemetry transmission on APRS network

The small Perl script below permit to extract temperature information from svstat data file which may be transmitted on the APRS network as weather stations do.

The script may be called from the crontab:
59 * * * * /path/to/aprstelem.pl

Here is the perl script:

#! /usr/bin/perl
# Small script which read SuperVozelj temperature from svstat data, and send
# the telemetric information on APRS internet server aprsd
use Socket;
$aprsServer = "ir3ip.ampr.org";
$port = 1315;
$datapath="/home/iw3grx/svstat/dat/";
#$datapath="/home/iw3grx/projects/svstat/dat/";


($d1, $d2, $d3, $d4, $rawserver) = gethostbyname($aprsServer);
$serveraddr = pack("Sna4x8",2,$port,$rawserver);
$prototype = getprotobyname('udp');
socket(SOCKET,2,SOCK_DGRAM,$prototype) || die("No Socket\n");

$nodenum=0;
$callsign[$nodenum]="ir3cv";            # callsign in lowercase (as data filename)
$coord[$nodenum]="4603.50N/01218.10E_"; # Latitude/Longitude; '_' specify the WX symbol
$channel[$nodenum]=3;                   # Number of AD channel (from 1 to 11)
$qth[$nodenum]="Col Visentin";                                  # Node location
$altitude[$nodenum]=1760;                                                               # Node altitude (in metres)
$nodenum++;
$callsign[$nodenum]="ir3csm";
$coord[$nodenum]="4554.10N/01205.00E_";
$channel[$nodenum]=4;
$qth[$nodenum]="Col San Martino";
$altitude[$nodenum]=156;
$nodenum++;
$callsign[$nodenum]="ir3mco";
$coord[$nodenum]="4548.43N/01132.38E_";
$channel[$nodenum]=3;
$qth[$nodenum]="Monte Corno";
$altitude[$nodenum]=1350;
$nodenum++;
$callsign[$nodenum]="ir3fon";
$coord[$nodenum]="4606.30N/01307.10E_";
$channel[$nodenum]=3;
$qth[$nodenum]="Savalons";
$altitude[$nodenum]=105;
$nodenum++;


($sec,$min,$hour,$mday,$mon,$year,$wday,$yday)=gmtime();
$now=time();

for ($i=0; $i<$nodenum; $i++) {
  $filename=$datapath.$callsign[$i].".dat";
  if (!open($fd,$filename)) {
    # Error opening data file
    printf(stderr "Data file %s does not exist or is not readable!\n",$filename);
    next;
  }
  # must be improved (read in the file header): $size=48
  $size=48;
  seek($fd,-1*$size,2);
  if (read($fd,$buffer,4)!=4) {
    # Error reading the first 4 bytes (timestamp)
    printf(stderr "Error reading timestamp from data file %s!\n",$filename);
    close($fd);
    next;
  }
        $time=unpack("I",$buffer);
  if (abs($now-$time) > 9000) {
    printf(stderr "Temperature from %s node is too old (%d seconds)\n",$callsign[$i],($now-$time));
    close($fd);
    next;
  }
  if ($channel[$i]>1) {
    seek($fd,4*($channel[$i]-1),1);
  }
  if (read($fd,$buffer,4)!=4) {
    # Error reading temperature value
    printf(stderr "Error reading temperature value from data file %s!\n",$filename);
    close($fd);
    next;
  }
        $temp=unpack("f",$buffer);
  $message=sprintf("%s>APWX,WIDE:@%02d%02d%02dz%s.../...g...t%03d\0",
    uc($callsign[$i]),$mday,$hour,$min,$coord[$i],int($temp*1.8+32));
  send(SOCKET,$message,0,$serveraddr);
  $message=sprintf("%s>APWX,WIDE:@%02d%02d%02dz%s/A=%06d SuperVozelj node %s, %dm asl\0",
                uc($callsign[$i]),$mday,$hour,$min,$coord[$i],$altitude[$i]/0.305,$qth[$i],$altitude[$i]);
        send(SOCKET,$message,0,$serveraddr);
        close($fd);
}



Interesting messages



Xastir APRS program

Xastir is a nice APRS program for Linux. Take a look at the primary website www.xastir.org!
A collection of MAPS is available in the ir3ip webserver, at http://www.ir3ip.net/pub/ham/aprs/
The best, simple and very fast Europe vectorial map is available here
Other maps are available via ftp at ftp://aprs.rutgers.edu/pub/hamradio/APRS
Here is a screenshot of Xastir where you can see S53SM around North-East of Italy with his airplane!
Xastir screenshot with trace of S53SM with his airplane