Tuesday, March 31, 2015

HF APRS -- FLDIGI style using PSK/MFSK/etc

HF APRS has always been a mixed bag.  If you used a traditional 300 baud packet modem, it was typically hit and miss situation.  Signal to noise ratios had to be very high to be successful.  If you had a thunderstorm on 40m or 80m, probably not a good chance of being successful.

We all know that many of the robust modes in FLDIGI are able to operate at much lower signal to noise ratios and are much more resistant to fading, interference, and the like.

I am please to announce the TDRC is going to start testing APRS on HF using BPQ32's APRS client.  Here are the instructions on how to get your station on the air and have fun in the testing.

Some advantages of NVIS HF APRS:

1) Don't need line of sight or near line of sight conditions to the nearest digipeater or receiving stations.
2) 5 watts will get you out upwards of 200 miles for a given area.
3) Hidden transmitter syndrome is rampant on 2m and 440 APRS, as the digipeater usually is the only station that can hear everyone.  Stations more than a handful of miles apart can't hear each other, so then it becomes a battle of who is heard first at the digi.
4) If we DON'T follow the digipeater paradigm on HF, all stations should be able to hear each other directly, which should cut down on the traffic load.
5) The amount of infrastructure can be reduced by the fact that stations are hearing each other directly, rather than needing several digipeater paths to carry the traffic to them.

Please note that I am not against VHF APRS.  I love it.  Just pointing out that a well run HF NVIS APRS system could take things to an even higher level, especially given the flexibility that FLDIGI gives for modes.

So, how do you do it?

1) Download the latest BPQ32 software from http://www.cantab.net/users/john.wiseman/Downloads/LastestInstaller/BPQ32_6.0.10.1_20150214.exe.  Run and install.

2) Download the latest copy of FLDIGI from http://www.w1hkj.com/downloads/fldigi/fldigi-3.22.01_setup.exe. Run and install.

3) Replace the BPQ32.CFG file with the following. Anywhere there is KD5NJR, change it to YOUR callsign.  Change the coordinates in the APRS section to match yours (otherwise you will show up at my house!)

/* This begins a multi-line comment
CONFIGURATION FILE FOR BPQ32: G8BPQ SWITCH SOFTWARE
The purpose of this configuration is simply to confirm that the basic BPQ32
system is operable.  It contains only a LOOPBACK port.
To perform the basic test, compile this configuration file by executing
bpqcfg.exe, which will generate bpqcfg.bin. Now execute BPQTerminal.exe, and
in the lowest window enter:
C 1 MYNODE v MYCALL
You should receive the following response:
MYNODE:MYCALL} Connected to MYNODE
This is the CTEXT.
MYNODE:MYCALL} CONNECT BYE INFO NODES ROUTES PORTS USERS MHEARD
If you get the above response the basic test has succeeded.
This file: \Examples\Minimal\bpqcfg.txt
*/ This ends a multi-line comment
;LOCATOR=EM26
;See LOCATOR details at:
;http://www.cantab.net/users/john.wiseman/Documents/BPQNodeMap.htm
PASSWORD=kc5rth
; SYSOP Passord - See http://www.cantab.net/users/john.wiseman/Documents/Node%20SYSOP.html
NODECALL=KD5NJR-5  ; Node callsign
NODEALIAS=TDRNDE ; Node alias (6 characters max)
;BBSCALL=MYCALL  ; Replaced by APPL1CALL following APPLICATIONS=
;BBSALIAS=MYNODE ; Replaced by APPL1ALIAS following APPLICATIONS=
IDMSG:   ; UI broadcast text from NODECALL to fixed dest ID
TDRC BULLETIN BOARD SYSTEM.
***   ; Denotes end of IDMSG text
BTEXT:   ; UI broadcast text from BCALL to destination UNPROTO=
TDRC BULLETIN BOARD SYSTEM.
***   ; Denotes end of BTEXT text
INFOMSG:  ; The INFO command text follows:
BULLETIN BOARD SYSTEM COURTESY OF Tulsa Digital Radio Club.
***   ; Denotes end of INFOMSG text
CTEXT:
KD5NJR-5 > Main Node for Tulsa metro and surrounding areas.
TYPE - I for System Information
TYPE - H for Node Commands
TYPE N for Routes to other Network Nodes
TYPE ? for Available Applications
***   ; Denotes end of CTEXT text
FULL_CTEXT=1  ; 0=send CTEXT to L2 connects to NODEALIAS only
   ; 1=send CTEXT to all connectees
; Network System Parameters:
OBSINIT=6  ; Initial obsolescence set when a node is included
   ; in a received nodes broadcast. This value is then
   ; decremented by 1 every NODESINTERVAL.
OBSMIN=4  ; When the obsolescence of a node falls below this
   ; value that node's information is not included in
   ; a subsequent nodes broadcast.
NODESINTERVAL=0  ; Nodes broadcast interval in minutes
IDINTERVAL=0  ; 'IDMSG' UI broadcast interval in minutes, 0=OFF
BTINTERVAL=0  ; The BTEXT broadcast interval in minutes, 0=OFF
L3TIMETOLIVE=25  ; Max L3 hops
L4RETRIES=3  ; Level 4 retry count
L4TIMEOUT=60  ; Level 4 timeout in seconds s/b > FRACK x RETRIES
L4DELAY=10  ; Level 4 delayed ack timer in seconds
L4WINDOW=4  ; Level 4 window size
MAXLINKS=63  ; Max level 2 links
MAXNODES=128  ; Max nodes in nodes table
MAXROUTES=64  ; Max adjacent nodes
MAXCIRCUITS=128  ; Max L4 circuits
MINQUAL=168  ; Minimum quality to add to nodes table
; INP3 Routing is experimental.  The two parms which follow will be ignored
; unless activated in the ROUTES: section.
MAXHOPS=4  ; INP3 hop limit to add to tables
MAXRTT=90  ; INP3 max RTT in seconds
BUFFERS=255  ; Packet buffers - 255 means allocate as many as
   ; possible, normally about 130, depending upon other
   ; table sizes.
; TNC default parameters:
PACLEN=128  ; Max packet size (236 max for net/rom)
 /*
PACLEN is a problem! The ideal size depends on the link(s) over which a packet
will be sent. For a session involving another node, we have no idea what is at
the far end. Ideally each node should have the capability to combine and then
refragment messages to suit each link segment - maybe when there are more BPQ
nodes about than 'other' ones, I'll do it. When the node is accessed directly,
things are a bit easier, as we know at least something about the link. So,
currently there are two PACLEN params, one here and one in the PORTS section.
This one is used to set the initial value for sessions via other nodes and for
sessions initiated from here. The other is used for incoming direct (Level 2)
sessions. In all cases the TNC PACLEN command can be used to override the
defaults.
 */
; Level 2 Parameters:
; T1 (FRACK), T2 (RESPTIME) and N2 (RETRIES) are now in the PORTS section
T3=120   ; Link validation timer in seconds
IDLETIME=720  ; Idle link shutdown timer in seconds
; Configuration Options:
AUTOSAVE=1  ; Saves BPQNODES.dat upon program exit
BBS=1   ; 1 = BBS support included, 0 = No BBS support
NODE=1   ; Include switch support
HIDENODES=1  ; If set to 1, nodes beginning with a #
   ; require a 'N *' command to be displayed.
; The *** LINKED command is intended for use by gateway software, and concern
; has been expressed that it could be misused. It is recommended that it be
; disabled (=N) if unneeded.
ENABLE_LINKED=N  ; Controls processing of *** LINKED command
   ; Y = allows unrestricted use
   ; A = allows use by application program
   ; N = disabled
/*
AX25 port definitions:
The LOOPBACK port simulates a connection by looping input to output. To test,
start BPQTerminal and enter: 'C 1 MYNODE via MYCALL'
In this example '1' is the LOOPBACK port number. The LOOPBACK port is provided
for testing purposes and would rarely be included in an established system.
*/
;PORT
;  ID=FLDIGI HF
;  PORTNUM=5
;  DRIVER=FLDIGI
;  PACLEN=64
;  CONFIG
;    ADDR 127.0.0.1 7342 PATH C:\Program Files (x86)\Fldigi-3.22.01\fldigi.exe
;    TIMEOUT=10
;    RETRIES=5
;    DEFAULTMODEM BPSK250/1500
;    UPDATEMAP
;ENDPORT
PORT
 ID=FLDIGI HF
 PORTNUM=1
 TYPE=ASYNC
 PROTOCOL=KISS
 IPADDR=127.0.0.1
 UDPPORT=7342
 UDPRXPORT=7343
 SPEED=9600
 CHANNEL=A
 QUALITY=0
 MAXFRAME=4
 FULLDUP=0
 FRACK=10000
 RESPTIME=3000
 RETRIES=10
 PACLEN=64
 TXDELAY=500
 SLOTTIME=100
 PERSIST=64
 KISSOPTIONS=NOPARAMS,FLDIGI
ENDPORT
APRSDIGI
APRSCall KD5NJR-10
StatusMsg=TDRC APRS
Symbol=a        ; Icon to display for station.
Symset=B        ; This is a "B" in a Red Diamond.
;
;    Specify a Dest Addreess and Path for each port you want to use for APRS. No dest means receive only port
;    Ports without an APRSPath statement will not be used by the Digi
;
;    Note if you specify APRS as the destination call it will be replaced by the current BPQ32 APRS
;    identification destination - APBPQ1. If you really want to send APRS, specify APRS-0.
APRSPath 1=APRS,WIDE2-2                        ; PORT 1
 
BeaconInterval=30                  ; Send Beacon every 30 minute. Minimum is 5 mins
MobileBeaconInterval=2              ; Beacon interval when moving
;    Define Crossport Digi. For each port, a list of ports to send a packet to (IS means send to APRS-IS)
;    If a Digimap isn't specified for a port, digi out on the port the packet arrived on,
;        and send to APRS-IS (if enabled)
;    If you want to digi on same port, but not send to APRS-IS, Specify Digimap n=n
;    If you dont want to digi on a port, specify Digimap n=
;
;    If you only have one APRS port, you probably don't need a Digimap statement
Digimap 1=1             ; Packets from 1 to 9, but not APRS-IS

;    Define Digipeating parameters

;TraceCalls=WIDE,TRACE  ; Calls for CALLN-n Processing with Trace
;FloodCalls=USA        ; Calls for CALLN-n Processing without Trace
DigiCalls=KD5NJR-10        ; Calls for Normal (ie no SSID manipulation) Digi
                        ; For a Local "Fillin" Digi, you could include WIDE1-1 and leave out TraceCalls and FloodCalls
                       
;ReplaceDigiCalls      ; Replace DigiCalls with APRSCall. Omit if you want the call to be left as it is received.
                       
MaxTraceHops=2        ; Max value of n in CALLN-n processing. If a packet is received with n greater than
MaxFloodHops=2        ; this, the value will be replaced BEFORE it is decremented.
;    Specify position. You can specify a fixed LAT/LONG, or use GPS
LAT=3601.42N          ; Must be in standard APRS Format (ddmm.mmN/S)
LON=09549.82W          ; Must be in standard APRS Format (dddmm.mmE/W)
; The Digi can generate Object and Item reports.
; The format is pretty strict - a single space between param=value pairs,
; a comma but no spaces in PATH and PORT string.

; Minimum interval is 10 mins. You can have as many OBJECT lines as you need.
; See thr APRS specification for information on how to format an Object or Item string.

; OBJECT PATH=APRS,WIDE1-1 PORT=1,IS INTERVAL=30 TEXT=;444.80BPQ*111111z5807.60N/00610.63Wr%156 R15m

; IGATE Params. If specified you will gate RF packets and your beacons to APRS-IS
;ISHost=127.0.0.1    ; APRS-IS Host Name. May be either an IPV4 or an IPV6 Host
;ISPort=14551                ; Normal port for a filtered feed
;ISPasscode=?????            ; If you don't already have a passcode I can issue you one.
;
; You can specify a filter command to be sent when you log on to APRS-IS. Normally you don't
; need one. The APRS Mapping Application (BPQAPRS) sets a filter when it starts,
; and if you aren't running an APRS application, there isn't much point in getting info from APRS-IS
;
;ISFilter=b/kn5ups*/wb5mxo*/kg1gem*
;ISFilter=m/50              ; Filter Command if needed
***

ROUTES:   ; Locked routes (31 maximum)
/*   ; Begin comment block
CALLSIGN,QUALITY,PORT[,MAXFRAME,FRACK,PACLEN,INP3Enable]
MAXFRAME, Frack and PACLEN if stated override the port defaults.
INP3Enable = 1 enables, 0 or null disable.  The INP3 (internode protocol)
implementation in BPQ32 is experimental.  See additional details in bpqaxip.cfg.
Example of a route statement using INP3:
HISCAL-12,1,1,0,0,0,1
Locked routes tend to be overused and should not be set unless truly needed.
*/   ; End comment block
; No routes are specified, as they would be meaningless for this configuration.
***   ; Denotes end of locked routes
/*
Applications:
You can define additional Node commands that are available to your users. These may connect to
applications running on you computer, or be aliases or 'shortcuts' to other node commands.
For example you can define the command "BBS". This can either be set up to connect to a BBS running
on your computer, or to be an alias for a command that connects to a BBS on another system.
You can set up a callsign that if connected to will select the command, and if required cause the
call to be added to your NODES list.
The format is:
APPLICATION n,CMD,New Command,Call,Alias, Quality
n Application Number. You can define up to 32.
CMD The command the user types
New Command (optional) The Node command to be run
Call (optional) The call which directly invokes CMD
Alias and Quality (optional) If specified, causes an entry for Call and Alias to be added to your
NODES table with the specified Quality
For example:
APPLICATION 1,BBS,,G8BPQ,BPQBBS,200
APPLICATION 2,CHAT,,G8BPQ-1,BPQCHT,255
APPLICATION 3,DX,C DXCLUS
Associated with each Application number is an applications mask. Most BPQ32 applications can be configured to
use any Application. An exception is AR-Cluster using the OCX interface, which must be Appl 1. Normally an Application Mask is configured in the application, rather than an Application Number. The following table gives
the Application Mask values:
  Appl: 1,2,3,4,5,6,7,8, etc
  Decimal Mask: 1,2,4,8,16,32,64,128, etc
  Hexadecimal Mask: 0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80, etc

*/
;APPLICATION 1,BBS,,KD5NJR-12,MEBBS,255
;APPLICATION 2,CHAT,,KD5NJR-11,MECHAT, 255
; In this example no applications are supported.


4) Run FLDIGI and follow the instructions for general configuration. Then configure FLDIGI as shown http://www.cantab.net/users/john.wiseman/Documents/FLDigiDriver.html. Make sure your squelch is set with the appropriate level in FLDIGI. Also turn on KPSQL.

5) Fire up the BPQ32 software and open the APRS icon.  You should start beaconing shortly.  Make sure your radio is set to 7.036 Mhz USB and the FLDIGI software is set to 1500 Hz center frequency.  Let's try PSK-250 for now.  We may look at either MFSK or PSKR-250 if outlying stations have problems copying packets consistently.

If you have any questions, email me at ae5me@yahoo.com.

3 comments:

  1. Jeff, is it necessary to have this large of a config file ?

    What if you cut this down for a station running no services but APRS ?
    No BBS, no CHAT, just a client or end user for BPQAPRS ?

    Would that file be a little easier to understand ?

    Thanks
    Scott

    ReplyDelete
  2. If anyone needs help getting their LAT / LONG from one format to another, please let me know. -- Scott

    ReplyDelete
  3. It is easier to modify what is already in the config file for those that are running BPQ32. If items are deleted, then users would have to retype the commented out config lines from scratch. Find and replace with the callsign and the change in the location information should allow it to run.

    ReplyDelete