APRX as digipeater

535 views
Skip to first unread message

deltaromeo...@gmail.com

unread,
Jan 16, 2017, 9:34:35 PM1/16/17
to Aprx software
How can re transmit packets from RF again to RF? With my configuration, i can transmit packets from RF to internet and from internet to RF.
Can you help me?

This is my configuration:

#
# Simple sample configuration file for the APRX-2  -- an APRS iGate and Digipeater
#
# This configuration is structured with Apache HTTPD style tags
# which then contain subsystem parameters.
#

#
# For simple case, you need to adjust 4 things:
#   - Mycall parameter
#   - passcode parameter in APRS-IS configuration
#   - Select correct type of interface (ax25-device or serial-device)
#   - Optionally set a beacon telling where this system is
#   - Optionally enable digipeater with or without tx-igate
#

#
#
# Define the parameters in following order:
#   1)  <aprsis>     ** zero or one
#   2)  <logging>    ** zero or one
#   3)  <interface>  ** there can be multiple!
#   4)  <beacon>     ** zero to many
#   5)  <telemetry>  ** zero to many
#   6)  <digipeater> ** zero to many (at most one for each Tx)
#

#
# Global macro for simplified callsign definition:
# Usable for 99+% of cases.
#

mycall MYCALL

#
# Global macro for simplified "my location" definition in
# place of explicit "lat nn lon mm" at beacons. Will also
# give "my location" reference for "filter m/100".
#
#myloc lat ddmm.mmN lon dddmm.mmE
myloc lat xxxx
.xxN lon xxxxx.xxE

<aprsis>
# The  aprsis login  parameter:
# Station callsignSSID used for relaying APRS frames into APRS-IS.
# Use this only to define other callsign for APRS\-IS login.
#
#login     OTHERCALL-7    # login defaults to $mycall

#
# Passcode for your callsign:
# Unique code for your callsign to allow transmitting packets
# into the APRS-IS.
#
passcode
12345

# APRS-IS server name and optional portnumber.
#
# WARNING: Do not change from default port number [14580]
#          unless you are absolutely certain you want
#          something else, and you allow that something
#          else also affect your tx-igate behaviour!
#
server    rotate
.aprs2.net
#server   euro.aprs2.net
#server   asia.aprs2.net
#server   noam.aprs2.net
#server   soam.aprs2.net
#server   aunz.aprs2.net

# Some APRS-IS servers tell every about 20 seconds to all contact
# ports that they are there and alive. Others are just silent.
# Default value is 3*"heartbeat" + some  --> 120 (seconds)
#
#heartbeat-timeout   0    # Disabler of heartbeat timeout

# APRS-IS server may support some filter commands.
# See:  http://www.aprs-is.net/javAPRSFilter.aspx
#
# You can define the filter as single long quoted string, or as
# many short segments with explaining comments following them.
#
# Usability of these filters for a Tx-iGate is dubious, but
# they exist in case you for example want to Tx-iGate packets
# from some source callsigns in all cases even when they are
# not in your local area.
#
#filter "possibly multiple filter specs in quotes"
#

filter
"m/200"         # My-Range filter: positions within 100 km from my location


#filter "f/OH2XYZ-3/50"  # Friend-Range filter: 50 km of friend's last beacon position
</aprsis>

<logging>

# pidfile is UNIX way to tell that others that this program is
# running with given process-id number.  This has compiled-in
# default value of:  pidfile /
var/run/aprx.pid
#
#pidfile /var/run/aprx.pid
pidfile
/home/admin1/aprx/aprx.pid

# rflog defines a rotatable file into which all RF-received packets
# are logged.  The host system can rotate it at any time without
# need to signal the aprx that the file has been moved.
#
#rflog /var/log/aprx/aprx-rf.log
rflog
/home/admin1/aprx/aprx-rf.log

# aprxlog defines a rotatable file into which most important
# events on APRS-IS connection are logged, namely connects and
# disconnects.  The host system can rotate it at any time without
# need to signal the aprx that the file has been moved.
#
#aprxlog /var/log/aprx/aprx.log
aprxlog
/home/admin1/aprx/aprx.log

# dprslog defines a rotatable file into which most important
# events on DPRS receiver gateways are logged.
# The host system can rotate it at any time without need to
# signal the aprx that the file has been moved.
#
#dprslog /var/log/aprx/dprs.log
dprslog
/home/admin1/aprx/dprs.log

# erlangfile defines a mmap():able binary file, which stores
# running sums of interfaces upon which the channel erlang
# estimator runs, and collects data.
# Depending on the system, it may be running on a filesystem
# that actually retains data over reboots, or it may not.
# With this backing store, the system does not loose cumulating
# erlang data over the current period, if the restart is quick,
# and does not stradle any exact minute.
# (Do restarts at 15 seconds over an even minute..)
# This file is around 0.7 MB per each interface talking APRS.
# If this file is not defined and it can not be created,
# internal non-persistent in-memory storage will be used.
#
# Built-in default value is: /var/run/aprx.state
#
#erlangfile /var/run/aprx.state

</logging>


# ***********  Multiple <interface> definitions can follow   *********

# ax25-device  Lists AX.25 ports by their callsigns that in Linux
#              systems receive APRS packets.  If none are defined,
#              or the system is not Linux, the AX.25 network receiver
#              is not enabled.  Used technologies need at least
#              Linux kernel 2.4.x
#
# tx-ok        Boolean telling if this device is able to transmit.
#

<interface>
   ax25-device   $mycall
   tx-ok        true  # transmitter enable defaults to false
   telem-to-is  true # set to 'false' to disable
</
interface>


#
# The  TNC serial  options.  Parameters are:
#   - /dev/ttyUSB1    -- tty device
#   - 19200           -- baud rate, supported ones are:
#                        1200, 2400, 4800, 9600, 19200, 38400
#   - 8n1             -- 8-bits, no parity, one stop-bit,
#                        no other supported modes
#   - "KISS"                  - plain basic KISS mode
#   - "XORSUM" alias "BPQCRC" - KISS with BPQ "CRC" byte
#   - "SMACK"  alias "CRC16"  - KISS with real CRC
#   - "FLEXNET"               - KISS with real CRC
#   - "TNC2"                  - TNC2 monitor format
#   - "DPRS"                  - DPRS (RX) GW
#

#<interface>
#   serial-device /dev/ttyUSB0  19200 8n1    KISS
#   #callsign     $mycall  # callsign defaults to $mycall
#   #tx-ok        false    # transmitter enable defaults to false
#   #telem-to-is  true # set to 'false' to disable
#</interface>

#<interface>
#   serial-device /dev/ttyUSB1  19200 8n1    TNC2
#   #callsign     $mycall  # callsign defaults to $mycall
#   #tx-ok        false    # TNC2 monitor can not have transmitter
#   #telem-to-is  true # set to 'false' to disable
#</interface>

#<interface>
#   serial-device /dev/ttyUSB1  19200 8n1    DPRS
#   callsign     dprsgwcallsign  # must define actual callsign
#   #tx-ok       false           # DPRS monitor can not do transmit
#   #telem-to-is true # set to 'false' to disable
#</interface>


# ***********  Multiple <beacon>  definitions can follow   *********
<beacon>
#
#  Beacons are sent out to radio transmitters AND/OR APRSIS.
#  Default is "both", other modes are settable.
#
#beaconmode { aprsis | both | radio }
beaconmode both
#
#  Beacons are sent from a circullar transmission queue, total cycle time
#  of that queue is 20 minutes by default, and beacons are "evenly"
#  distributed along it.  Actual intervals are randomized to be anything
#  in between 80% and 100% of the  cycle-size / number-of-beacons.
#  First beacon is sent out 30 seconds after system start.
#  Tune the cycle-size to be suitable to your number of defined beacons.
#
cycle
-size  5m
#
# Basic beaconed thing is positional message of type "!":
#
#beacon symbol "R&" lat "0000.00N" lon "00000.00E" comment "Rx-only iGate"
#beacon symbol "R&" $myloc comment "Rx-only iGate"
# here I have chosen a simple beacon that just uses the iGate icon and gives out its location and a short message.
beacon symbol
"/-" $myloc comment "text"
#
#Following are basic options:
# 'symbol'    no default, must be defined!
# 'lat'       coordinate latitude:   ddmm.mmN  (no default!)
# 'lon'       coordinate longitude: dddmm.mmE  (no default!)
# '$myloc'    coordinate values taken from global 'myloc' entry,
#             and usable in place of explicit 'lat'+'lon'.
# 'comment'   optional tail part of the item, default is nothing
#
# Sample symbols:
#   R&   is for "Rx-only iGate"
#   I&   is for "Tx-iGate"
#   /#   is for "Digipeater"
#   I#   is for "Tx-iGate + Digipeater""
#
#Additional options are:
# 'srccall'   parameter sets claimed origination address.
# 'dstcall'   sets destination address, default "APRXnn"
# 'interface' parameter picks an interface (must be "tx-ok true" type)
# 'via'       sets radio distribution pattern, default: none.
# 'timefix'   On APRS messages with HMS timestamp (hour:min:sec), the
#             system fixes appropriate field with transmit time timestamp.
#
# Message type is by default '!', which is positional no timestamp format.
# Other possible formats are definable with options:
# 'type'      Single character setting type:  ! = / @, default: !
# 'item'      Defines a name of Item (')') type beacons.
# 'object'    Defines a name of Object (';') type beacons.
#
# 'file' option tells a file at which a _raw_ APRS message content is
#        expected to be found as first line of text. Line ending newline
#        is removed, and no escapes are supported.  The timefix is
#        available, though probably should not be used.
#        No \-processing is done on read text line.
#
# 'exec' option tells a computer program which returns to stdout _raw_ APRS
#        message content without newline. The timefix is
#        available, though probably should not be used.
#        No \-processing is done on read text line.
#
# The parameter sets can vary:
#  a) 'srccall nnn-n dstcall "string" symbol "R&" lat "ddmm.mmN" lon "dddmm.mmE" [comment "any text"]
#  b) 'srccall nnn-n dstcall "string" symbol "R&" $myloc [comment "any text"]
#  c) 'srccall nnn-n dstcall "string" raw "string"'
#
# The a) form flags on some of possible syntax errors in parameters.
# It will also create only "!" type messages.  The dest parameter
# defaults to "APRS", but can be used to give other destinations.
# The via parameter can be used to add other keywords, like "NOGATE".
#
# Writing correct RAW format beacon message is very hard,
# which is evidenced by the frequency of bad syntax texts
# people so often put there...   If you can not be persuaded
# not to do it, then at least VERIFY the beacon result on
# web service like  findu.com,  or  aprs.fi
#
# Do remember that the \ -character has special treatment in the
# Aprx configuration parser.  If you want a '\' on APRS content,
# then you encode it on configuration file as:  '\\'
#
# Stranger combinations with explicite "transmit this to interface X":
#
#beacon                     file /tmp/wxbeacon.txt
#beacon interface N0CALL-3 srccall N0CALL-3 \
#                           raw "!0000.00NR00000.00E&Rx-only iGate"
#beacon interface N0CALL-3 srccall N0CALL-3 \
#                           raw "!0000.00NI00000.00E&Tx-iGate"
#beacon interface $mycall symbol "R&" $myloc \
beacon
interface $mycall symbol "/-" $myloc \
#                           comment "Rx-only iGate"
#beacon interface $mycall   symbol "I&" $myloc \
#                           comment "Tx-iGate"
#beacon                     exec /usr/bin/telemetry.pl
#beacon                     timeout 20 exec /usr/bin/telemetry.pl
#beacon interface N0CALL-3 srccall N0CALL-3 \
#                           timeout 20 exec /usr/bin/telemetry.pl
#
</beacon>

# ***********  <telemetry>  definition(s) follow   *********
#
# The system will always send telemetry for all of its interfaces
# to APRSIS, but there is an option to define telemetry to be sent
# to radio channel by using following sections for each transmitter
# that is wanted to send out the telemetry.
#
#   transmitter   -  callsign referring to <interface>
#   via           -  optional via-path, only 1 callsign!
#   source        -  one or more of <interface> callsigns for which
#                    the telemetry transmission is wanted for
#
#<telemetry>
#    transmitter    $mycall
#    via        TRACE1-1
#    source        $mycall
#</
telemetry>

# ***********  <digipeater>  definition(s) follow   *********
#
#  The digipeater definitions tell transmitters that receive
#  AX.25 packets from possibly multiple sources, and then what
#  to do on the AX.25 headers of those messages.
#
#  There is one transmitter per digipeater -- and inversely, there
#  can be at most one digipeater for each transmitter.
#
#  In each digipeater there is at least one <source>, usually same
#  as the transmitter.  You may use same <source> on multiple
#  <digipeater>s. Using multiple instances of same <source> on
#  a single <digipeater> does not crash the system, but it can cause
#  packet duplication in case of non-APRS protocols (like AX.25 CONS)
#
#  Use only at most two levels of viscous-delay in your <digipeater>.
#  Immediate sending is by "0", and a delayed sending is any value
#  from 1 to 9.  This system does not correctly support other than
#  immediate sending and one level of delay.
#
#  Note: In order to igate correct when multiple receivers and
#        transmitters are used on single channel, the <interface>
#        definitions of each radio port must have associated
#        "igate-group N" parameter which has N of value 1 to 3.
#        See the aprx-manual.pdf for details.
#        (Default software compilation allows you to have up to
#         three channels of APRS operation.)
#
<digipeater>
    transmitter     $mycall
#    #ratelimit      60 120      # default: average 60 packets/minute,
#    #                           #          burst max 120 packets/minute
#    #srcratelimit   10 20       # Example: by sourcecall:
#                                #          average 10 packets/minute,
#                                #          burst max 20 packets/minute
#
   
<source>
        source         $mycall
#    #   #relay-type    digipeated # default mode is "digipeated"
#    #   viscous-delay  0     # no viscous delay for RF->RF digipeating
#    #   ratelimit      60 120      # default: average 60 packets/minute,
#    #                              #          burst max 120 packets/minute
#    ##  filter         a/la/lo/la/lo  # service area filter
#    ##  filter         -b/CALL        # always block these
   
</source>
#
#    #  Diversity receiver which combines to the primary
#    #  Tx/
Rx transmitter.  There can be as many of these
#    #  as you can connect on this machine.
#    #<source>
#    #   source         RXPORT-1
#    #   #relay-type    digipeated # default mode is "digipeated"
#    #   viscous-delay  0     # no viscous delay for RF->RF digipeating
#    #   ratelimit      60 120      # default: average 60 packets/minute,
#    #                              #          burst max 120 packets/minute
#    ##  filter         a/la/lo/la/lo  # service area filter
#    ##  filter         -b/CALL        # always block these

#    </source>
#
   
<source>                # APRSIS source adds a TX-IGATE behaviour
      source        APRSIS
       relay
-type    third-party  # Must define this for APRSIS source!
       viscous
-delay  5    # Recommendation: 5 seconds delay to give
#    #                       # RF delivery time make itself known.
#    #   ratelimit      60 120      # default: average 60 packets/minute,
#    #                              #          burst max 120 packets/minute
      filter        m
/200  # service area filter
   
</source>
#
#    #<source>              # DPRS source adds a DPRS->APRS RF gate
#    #   interface    DPRS
#    #   ratelimit    60 120       # default: average 60 packets/
minute,
#    #                             #          burst max 120 packets/minute
#    #   relay-type   third-party  # Must define this for DPRS source!
#    #</source>
</digipeater>


Kenneth Finnegan

unread,
Jan 16, 2017, 9:37:11 PM1/16/17
to aprx-s...@googlegroups.com
The important part is having the RF interface being a source for the digipeater block, which you have configured correctly:
<digipeater>
    transmitter     $mycall

    
<source>
        source         $mycall

    
</source>

So you should be digipeating RF-to-RF. Can you show some examples of packets which you think should be retransmitted but are not getting digipeated?

--
You received this message because you are subscribed to the Google Groups "Aprx software" group.
To unsubscribe from this group and stop receiving emails from it, send an email to aprx-software+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

deltaromeo...@gmail.com

unread,
Jan 17, 2017, 7:57:41 AM1/17/17
to Aprx software
So, from my aprx-rf.log:

2017-01-17 11:45:37.815 SV6NOB R SV6NOB-9>APDR12,WIDE2-2:=3940.05N\02051.22Eu MariosV
2017-01-17 11:45:37.816 SV6NOB T SV6NOB-9>APDR12,SV6NOB*,WIDE2-1:=3940.05N\02051.22Eu MariosV

This packet received from RF and transmitted only in internet. At RF side there is no TX. Why?

Patrick Domack

unread,
Jan 17, 2017, 8:03:50 AM1/17/17
to aprx-s...@googlegroups.com
This log entry claims that it was transmitted.
packet was transmitted using the interface SV6NOB T

How do you know it was not transmitted on rf? Your transmit signal
might not be clean, have interference, or a collision. You shouldn't
see the transmitted packet on aprs-is again, cause you transmitted it
there first already.
> --
> You received this message because you are subscribed to the Google
> Groups "Aprx software" group.
> To unsubscribe from this group and stop receiving emails from it,
> send an email to aprx-softwar...@googlegroups.com.

deltaromeo...@gmail.com

unread,
Jan 17, 2017, 8:30:57 AM1/17/17
to Aprx software
My digipeater is located in my house for testing. When it receives packet from RF, there is no PTT from radio. But when it receives packet from internet, the radio transmits normally.

Kenneth Finnegan

unread,
Jan 17, 2017, 10:50:54 AM1/17/17
to aprx-s...@googlegroups.com
T log lines are being transmitted on RF, from Aprx's perspective. All packets logged with an R are I-gated implicitly.

Are you saying that some packets logged with T are getting transmitted and others logged with T are not? That's very unusual since they're all taking the same code path by that point. I'd verify that this is really the case, and try running Aprx from a root shell with "killall aprx; aprx -dd" to get verbose logs on how it's processing the packets to the TNC.

--
You received this message because you are subscribed to the Google Groups "Aprx software" group.
To unsubscribe from this group and stop receiving emails from it, send an email to aprx-software+unsubscribe@googlegroups.com.

deltaromeo...@gmail.com

unread,
Jan 17, 2017, 11:42:43 AM1/17/17
to Aprx software
I hope this part of log helps because all log is too long...


beacon_postpoll()
telemetry_postpoll
()  telemetrytime=1124s  labeltime=44s
telemetry_prepoll
()
beacon_postpoll
()
telemetry_postpoll
()  telemetrytime=1119s  labeltime=39s
telemetry_prepoll
()
beacon_postpoll
()
netax25rx packet len
=52 from rx_socket;  family=17 protocol=200 ifindex=4 hatype=3 pkttype=0 halen=0
Received frame of 52 bytes from sm0: SV6NOB
erlang_add
(SV6NOB, RX, 62, 1)
ax25_format_to_tnc
() len=51 82 a0 88 a4 62 64 e0 a6|ac 6c 9c 9e 84 72 ae 92|88 8a 64 40 65 03 f0 3d|33 39 34 30 2e 30 35 4e|5c 30 32 30 35 31 2e 32|32 45 75 20 4d 61 72 69|6f 73 56  = APDR12pS|V6NOB9WI|DE2 e..=|3940.05N|\02051.2|2Eu Mari|osV
interface_receive_ax25
() from SV6NOB axlen=51 tnc2len=52
pbuf_alloc
(51,52) -> 0x76f33000
parse_aprs_uncompressed position ok
: lat 39.667 lng 20.854
.. parse_aprs() rc=OK  type=0x8001  srcif=SV6NOB  tnc2addr='SV6NOB-9>APDR12,WIDE2-2:=3940.05N\02051.22Eu MariosV'  info_start='=3940.05N\02051.22Eu MariosV'
 key
='SV6NOB-9' hash=48 .. inserting new history entry.
digipeater_receive
() from SV6NOB, is_aprs=1 viscous_delay=0
Seen this packet 1 times (delayed=0)
 
.. discard dupe record, process immediately.. direct to processing
 hops count of buffer
: WIDE2-2:=3940.05N\02051.22Eu MariosV
 
- ViaField[2]: 'WIDE2-2'
 req
=2,done=0 [OK,DIGIPEAT,TRACE]
ax25_format_to_tnc
() len=34 82 a0 88 a4 62 64 e0 a6|ac 6c 9c 9e 84 72 a6 ac|6c 9c 9e 84 e0 ae 92 88|8a 64 40 63 00 00 00 00|00 00  = APDR12pS|V6NOB9SV|6NOBpWID|E2 c....|..
 
out-hdr: 'SV6NOB-9>APDR12,SV6NOB*,WIDE2-1:' data='=3940.05N\02051.22Eu MariosV'
 key
='SV6NOB-9' hash=48interface_transmit_ax25(aif=0x3fc858[SV6NOB], .., axlen=58)
netax25_sendto
() the sendmsg len=59 rc=-1 errno=22
erlang_add
(SV6NOB, TX, 68, 1)
Done.
pbuf_free
(0x76f33000)
telemetry_postpoll
()  telemetrytime=1119s  labeltime=39s
telemetry_prepoll
()
beacon_postpoll
()
telemetry_postpoll
()  telemetrytime=1114s  labeltime=34s
telemetry_prepoll
()
beacon_postpoll
()


deltaromeo...@gmail.com

unread,
Jan 17, 2017, 11:46:53 AM1/17/17
to Aprx software
EDIT:
The packet above received from RF, transmitted to internet, but not to RF.

SV6NOB

unread,
Jan 17, 2017, 8:31:34 PM1/17/17
to Aprx software
What is this?

netax25_sendto() the sendmsg len=59 rc=-1 errno=22


What is
errno=22? Maybe an error?

Patrick Domack

unread,
Jan 17, 2017, 8:35:03 PM1/17/17
to aprx-s...@googlegroups.com
Are you using a buggy Linux kernel with ax25 interfaces that improperly drops small packets? Checked the output of dmesg.

SV6NOB

unread,
Jan 17, 2017, 9:43:00 PM1/17/17
to Aprx software
Yes, i upgrade the kernel from 4.1.19 to 4.9.4 and seems to work!

Thank you!
73 SV6NOB
Reply all
Reply to author
Forward
0 new messages