BPQ32 running config of PI1LAP-7 / PI8LAP

;*\
;Packet/Switch netwerk Kortgene.
;*/

LOCATOR=JO11VN
MAPCOMMENT=PI1LAP-7 Network Node, Kortgene JO11VN

PASSWORD=*****

NODECALL=PI1LAP-7       ; Node callsign
NODEALIAS=NDRLND ; Node alias (6 characters max)

IDMSG:
PI1LAP-7 - PI8LAP - JO11VN
***

BTEXT:                          ; UI broadcast text from BCALL to destination UNPROTO=
PI1LAP-7 - PI8LAP((Lin)BPQ) Ax25 - Net/rom - BBS - JO11VN
***

INFOMSG:                        ; The INFO command text follows:

PI1LAP-7:PI8LAP LinBPQ Packet/Switch Node

Computer : Raspberry PI 3B
Software : Raspbian GNU/Linux 10 / Linbpq 6.0.24.*
Rx/Tx    : Icom 7300 / Yaesu FT7900
Modem    : Scs PTC11pro / Qtsoundmodem 300 Baud / Ardopc / Vara / il2p
Antenne  : HyendFed 20m / X-510n

***
CTEXT:                          ; The CTEXT text follows:
Connected to PI1LAP-7,

PI1LAP-7 > BBS,RMS,C,B,I,N,R,P,U,V,S,MH
***                     ; Denotes end of CTEXT text

MQTT=1
MQTT_HOST=44.137.31.76
MQTT_PORT=1883
MQTT_USER=pd9q
MQTT_PASS=********


HFCTEXT=HF node PI1LAP-7

EnableM0LTEMap=1

FULL_CTEXT=1            ; 0=send CTEXT to L2 connects to NODEALIAS only
                        ; 1=send CTEXT to all connectees
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=25        ; Nodes broadcast interval in minutes
IDINTERVAL=10           ; 'IDMSG' UI broadcast interval in minutes, 0=OFF
BTINTERVAL=15           ; The BTEXT broadcast interval in minutes, 0=OFF
L3TIMETOLIVE=25         ; Max L3 hops
L4RETRIES=5             ; 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=15             ; Max level 2 links
MAXNODES=512            ; Max nodes in nodes table
MAXROUTES=60           ; Max adjacent nodes
MAXCIRCUITS=256         ; Max L4 circuits
MINQUAL=161             ; 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=6               ; INP3 hop limit to add to tables
MAXRTT=90               ; INP3 max RTT in seconds
BUFFERS=999             ; Packet buffers - 999 means allocate as many as
SAVEMH=1

; TNC default parameters:

PACLEN=128              ; Max packet size (236 max for net/rom)
; Level 2 Parameters:
; T1 (FRACK), T2 (RESPTIME) and N2 (RETRIES) are now in the PORTS section
;T3=120                 ; Link validation timer in seconds
T3=900  ; will poll other nodes every 900 seconds, or 15 min.
IDLETIME=10000          ; Idle link shutdown timer in seconds

; Configuration Options:

AUTOSAVE=0              ; Saves BPQNODES.dat upon program exit
BBS=1                   ; 1 = BBS support included, 0 = No BBS support
NODE=1                  ; Include switch support
HIDENODES=0             ; 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=A         ; Controls processing of *** LINKED command
                        ; Y = allows unrestricted use
                        ; A = allows use by application program
                        ; N = disabled

; Port Definitions:

TNCPORT
COMPORT=/home/pi/fbbded
TYPE=DED
STREAMS=1
APPLMASK=4
ENDPORT


; automatically switches bands and updates frequency every 5 seconds
RADIO 1
;Under Connectors then Data Mod set to acc
/dev/ttyICOM 19200 ICOM IC7300 94 PTT_SETS_INPUT AUX HAMLIB=4532
00:00
5,14.102300,USB,F1,D,P123
06:00
5,7.049450,USB,F1,D,P123
19:00
5,14.102300,USB,F1,D,P123
****

PORT
 PORTNUM=1
 ID=AFSK300 HF IL2P +850Hz
 INTERLOCK=1
 DRIVER=UZ7HO
 CHANNEL=A
 PACLEN=100
 CONFIG
  ADDR 44.137.31.70 8101
  BEACONAFTERSESSION
  UPDATEMAP
  MAXSESSIONS=1
  RADIO=1
;WL2KREPORT PUBLIC,api.winlink.org,80,PI8LAP,JO11VN,00-23,7049450,VARA500,50,35,3
;WL2KREPORT PUBLIC,api.winlink.org,80,PI8LAP,JO11VN,00-23,7049450,ARDOP500,50,35,3
;WL2KREPORT PUBLIC,api.winlink.org,80,PI8LAP,JO11VN,00-23,7049450,PKT300,50,35,3
;WL2KREPORT PUBLIC,api.winlink.org,80,PI8LAP,JO11VN,00-23,144850000,PKT1200,10,20,5,0
;WL2KREPORT PUBLIC,api.winlink.org,80,PI8LAP,JO11VN,00-23,7054000,P123,50,35,3
;WL2KREPORT PUBLIC,api.winlink.org,80,PI8LAP-10,JO11VN,00-23,7049500,ROBUST,50,35,3
ENDPORT

PORT
 PORTNUM=2
 ID=AFSK300 HF +1000Hz
 INTERLOCK=1
 DRIVER=UZ7HO
 CHANNEL=B
 PACLEN=100
 CONFIG
  ADDR 44.137.31.70 8101
  BEACONAFTERSESSION
  UPDATEMAP
  MAXSESSIONS=1
  RADIO=1
ENDPORT

PORT
 PORTNUM=3
 INTERLOCK=1
 HIDE=0
 ID=ARDOP500
 DRIVER=ARDOP
 CONFIG
 ADDR 44.137.31.70 8515 PTT CAT
 ARQBW 500MAX
 LEADER 200
 ENABLEPINGACK
 BUSYDET 5
 CONSOLELOG 3
 LOGLEVEL 3
 CWID TRUE
 MONITOR TRUE
 GRIDSQUARE JO11VN
 RADIO=1
  ****
ENDPORT

PORT
 PORTNUM=4
 INTERLOCK=1
 HIDE=0
 ID=VARA500
 DRIVER=VARA
 CONFIG
 ADDR 44.137.31.70 8300 PTT CAT
 RADIO=1
 BW500
 MYCALLS PI1LAP-7 PI8LAP PI1LAP-4 PI8LAP-10
 SESSIONTIMELIMIT 15
 P2P SESSION
 BUSYWAIT 30
 ****
ENDPORT

PORT
 PORTNUM=5
 HIDE=0
 ID=BPSK300 IL2P +2150Hz
 DRIVER=UZ7HO
 CHANNEL=C
 PACLEN=100
 CONFIG
  ADDR 44.137.31.70 8101
  MAXSESSIONS=2
  BEACONAFTERSESSION
  UPDATEMAP
  RADIO=1
ENDPORT


PORT
 ID=Pactor SCS
 COMPORT=/dev/ttySCS ;  COM Port Address
 SPEED=19200          ; COM Port Speed
 DRIVER=SCSPactor
 PORTCALL=PI8LAP
 INTERLOCK=1

 CONFIG                 ; Driver-Specific Configuration
 RADIO=1
 ;USERAPPLCALLSFORPACTOR
 ****
 MAXLEVEL=3
 PSKA 250
 FSKA 250
 MARK 1600
 SPACE 1400
 AQ 1
 STATUS 2
 BUSYHOLD 1                      ; This defines the time the software waits after the Controller has reported the channel free before considering it free.
 BUSYWAIT 20                     ; This changes the time the software will wait for a clear channel before failing a connect request.
 DEBUGLOG 1  ; To activate the SCSLog_xxx_xx.txt files in the logs directory

ENDPORT

PORT
 PORTNUM=7              ; Optional but sets port number if stated
 ID=AX/IP/UDP           ; Displayed by PORTS command
 DRIVER=BPQAXIP         ; Uses BPQAXIP capability of bpq32.dll
 QUALITY=203            ; Quality factor applied to node broadcasts heard on
                        ; this port, unless overridden by a locked route
                        ; entry. Setting to 0 stops node broadcasts
 MINQUAL=161            ; Entries in the nodes table with qualities greater or
                        ; equal to MINQUAL will be sent on this port. A value
                        ; of 0 sends everything.
 MAXFRAME=7             ; Max outstanding frames (1 thru 7)
 FRACK=3000             ; Level 2 timout in milliseconds
 RESPTIME=1000          ; Level 2 delayed ack timer in milliseconds
 RETRIES=15             ; Level 2 maximum retry value
 PACLEN=236             ; Max = 236

 CONFIG                 ; BPQAXIP.cfg has been deprecated.  Instead the AXIP
                        ; configuration occurs here:
 MHEARD ON              ; Opens AXIP MHEARD window
;UDP 93                        ; Listens for UDP packets on this UDP port number
 UDP 10093
;AUTOADDMAP            ; This option automatically adds the node call and
                        ; address of a node for which you do not have a
                        ; pre-arranged fixed entry in bpqaxip.cfg.  If the
                        ; option DONTCHECKSOURCECALL is specified then the
                        ; AUTOADDMAP option is ignored.
 BROADCAST NODES


 MAP OK2PEN-5 44.63.16.*** B
 MAP K5DAT-7 0.0.0.0 TCP-Slave 10200 B
 MAP PI1ZTM 44.137.2.*** KEEPALIVE 180 UDP 10093 B
 MAP GB7BED-5 gb7bed.****.** UDP 10093 B
 MAP VE2PKT-2 44.135.49.*** B
 MAP PE1NNZ 44.137.24.*** KEEPALIVE 180 UDP 10193 B
 MAP OL7M SEEVER.****.*** KEEPALIVE 180 UDP 10094 B
 MAP IW2OHX-15 44.134.175.*** KEEPALIVE 180 UDP 10093 B
 MAP PD0LPM-9 213.10.245.*** KEEPALIVE 180 UDP 10093 B
 MAP PA8F-2 44.137.1.*** KEEPALIVE 180 UDP 10093 B
 MAP PD9Q 44.137.31.*** KEEPALIVE 180 UDP 10093 B
 MAP F8COD-2 80.119.24.*** KEEPALIVE 180 UDP 10093 B
ENDPORT

PORT
 PORTNUM=8                      ; Optional but sets port number if stated
 ID=Telnet
 DRIVER=Telnet

CONFIG
 LOGGING=1
 DisconnectOnClose=1
 CMS=1
 CMSCALL=PI8LAP
 CMSPASS=*******
 CMDPORT=7300 7301 6001 6002
 CMSLOGGING=1
 FALLBACKTORELAY=1
; RELAYHOST=127.0.0.1
 RELAYAPPL=BBS
 TCPPORT=6370
 FBBPORT=6380
 HTTPPORT=8081
; SNMPPORT=161
 SECURETELNET=1
 LOGINPROMPT=User:
 PASSWORDPROMPT=Password:
 MAXSESSIONS=10
 CTEXT=Welcome to PI1LAP`s Telnet Server.\nPress ? For list of commands \n\n
 USER=pd9q,******,pd9q,,SYSOP
 USER=pi8lap,******,pi8lap,,SYSOP
ENDPORT

;PORT
; PORTNUM=9
; ID=AFSK 300Baud QO-100 RX-only
; DRIVER=UZ7HO
; CHANNEL=A
; CONFIG
;  ADDR 192.168.1.212 8101
;  UPDATEMAP
;  MAXSESSIONS=1
;ENDPORT

;PORT
; PORTNUM=10
; ID=BPSK 1200Baud QO-100 RX-only
; DRIVER=UZ7HO
; CHANNEL=B
; CONFIG
;  ADDR 192.168.1.212 8101
;  UPDATEMAP
;  MAXSESSIONS=1
;ENDPORT

PORT
 PORTNUM=9                     ; Optional but sets port number if stated
 ID=144.850Mhz FM 1k2                  ; Displayed by PORTS command
 TYPE=ASYNC                    ; Port is RS232 Com
 PROTOCOL=KISS                 ; TNC is used in KISS, JKISS or BPQKISS mode
 FULLDUP=0                     ; Only meaningful for KISS, JKISS or BPQKISS devices
 IPADDR=44.137.31.76
 TCPPORT=8001                  ; 1 = SERIAL PORT COM1 ETC.
 CHANNEL=A                     ; A for single channel TNC, A or B for multichannel
 PERSIST=160                   ; PERSIST=256/(# of transmitters-1)
 SLOTTIME=180                  ; CMSA interval timer in milliseconds
 TXDELAY=270                   ; Transmit keyup delay in milliseconds
 TXTAIL=23                     ; TX key down, in milliseconds, at packet end
 QUALITY=203                   ; Quality factor applied to node broadcasts heard on
                                ; this port, unless overridden by a locked route
                                ; entry. Setting to 0 stops node broadcasts
 MINQUAL=201                   ; Entries in the nodes table with qualities greater or
                                ; equal to MINQUAL will be sent on this port. A value
                                ; of 0 sends everything.
 MAXFRAME=7                    ; Max outstanding frames (1 thru 7)
 FRACK=5000                    ; Level 2 timout in milliseconds
 RESPTIME=1000                 ; Level 2 delayed ack timer in milliseconds
 RETRIES=25                    ; Level 2 maximum retry value
 PACLEN=128                    ; Default max packet length for this port
 UNPROTO=APBPQ1,WIDE1-1         ; BTEXT broadcast addrs format: DEST[,digi1[,digi2]]
 BCALL=PI1LAP-7                        ; BTEXT call. unstated defaults to APPL1CALL
 L3ONLY=0                      ; 1=No user downlink connects on this port
 DIGIFLAG=1                    ; Digipeat: 0=OFF, 1=ALL, 255=UI Only
 DIGIPORT=0                    ; Port on which to send digi'd frames (0 = same port)
 USERS=0                       ; Maximum number of L2 sessions, 0 = no limit
ENDPORT

PORT
 PORTNUM=10                      ; Optional but sets port number if stated
 ID=144.800Mhz FM Aprs                  ; Displayed by PORTS command
 TYPE=ASYNC                     ; Port is RS232 Com
 PROTOCOL=KISS                  ; TNC is used in KISS, JKISS or BPQKISS mode
 IPADDR=44.137.31.76
 TCPPORT=8001
 CHANNEL=B                      ; A for single channel TNC, A or B for multichannel
 NOKEEPALIVES=1
 PERSIST=160                    ; PERSIST=256/(# of transmitters-1)
 SLOTTIME=180                   ; CMSA interval timer in milliseconds
 TXDELAY=270                    ; Transmit keyup delay in milliseconds
 TXTAIL=23                      ; TX key down, in milliseconds, at packet end
 QUALITY=0                    ; Quality factor applied to node broadcasts heard on
                                ; this port, unless overridden by a locked route
                                ; entry. Setting to 0 stops node broadcasts
 MINQUAL=201                    ; Entries in the nodes table with qualities greater or
                                ; equal to MINQUAL will be sent on this port. A value
                                ; of 0 sends everything.
 MAXFRAME=7                     ; Max outstanding frames (1 thru 7)
 FRACK=5000                     ; Level 2 timout in milliseconds
 RESPTIME=1000                  ; Level 2 delayed ack timer in milliseconds
 RETRIES=25                     ; Level 2 maximum retry value
 PACLEN=128                     ; Default max packet length for this port
 UNPROTO=APBPQ1,WIDE1-1         ; BTEXT broadcast addrs format: DEST[,digi1[,digi2]]
 BCALL=PI1LAP-7                   ; BTEXT call. unstated defaults to APPL1CALL
 L3ONLY=1                       ; 1=No user downlink connects on this port
 DIGIFLAG=1                     ; Digipeat: 0=OFF, 1=ALL, 255=UI Only
 DIGIPORT=0                     ; Port on which to send digi'd frames (0 = same port)
 USERS=0                        ; Maximum number of L2 sessions, 0 = no limit
ENDPORT

PORT
 PORTNUM=11
 ID=Robust 600Baud ;(RPR and HF Packet)
 TYPE=EXTERNAL
 COMPORT=/dev/ttyTRK
 SPEED=38400
 DRIVER=SCSTracker
 INTERLOCK=1
 CONFIG
****
  M UISC
  O 4                   ; MAXFRAME
  F 190                 ; FRACK
  T 8                   ; TX Delay
  FORCE ROBUST
  DEFAULT ROBUST        ; Default mode is RP
  USEAPPLCALLS          ; Accept connects to all APPLCALLS
  BEACONAFTERSESSION    ; Beacon after session
  %L 1500               ; Centre Freq for Normal Packet (Default is 1500)
  @I 64                 ; Paclen = 60
  %T 1                  ; TX Autotracking 1 = on
  %N 10
  %B R600
ENDPORT


ROUTES:                         ; Locked routes (31 maximum)
; CALLSIGN,QUALITY,PORT[,MAXFRAME,FRACK,PACLEN,INP3Enable]
; PD9Q-15,203,7,0,0,0,0
***                                     ; Denotes end of locked routes

;IPGATEWAY
;  Adapter eth0
; IPADDR 44.137.31.84
;  IPNETMASK 255.255.255.224
;  ;ENABLESNMP
;****


APRSDIGI

DISTKM=1

 APRSCall=PI1LAP-8
 StatusMsg=PI1LAP-8 ARPS DIGI JO11VN ZLD

 Symbol=n         ; Icon to display for station.
 Symset=/         ; 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,WIDE1-1             ; Dest and up to 8 digis
;  APRSPath 3=APRS,WIDE1-1
  APRSPath 10=APRS,WIDE1-1
;  APRSPath 9=APRS,WIDE1-1

  BeaconInterval=25                   ; Send Beacon every 30 minute. Minimum is 5 mins
  MAXAGE=120

 ;    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,IS            ; Packets from 1 to 9, but not APRS-IS
; Digimap 3=3,IS
 Digimap 10=10,IS
; Digimap 9=9,IS

 ;    Define Digipeating parameters

 TraceCalls=WIDE,TRACE  ; Calls for CALLN-n Processing with Trace
 FloodCalls=NLD         ; Calls for CALLN-n Processing without Trace
 DigiCalls=PI1LAP-8         ; 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=5133.52N           ; Must be in standard APRS Format (ddmm.mmN/S)
 LON=00348.15E          ; Must be in standard APRS Format (dddmm.mmE/W)

 GPSPort=/dev/ttyUSB0              ; if specified, lat/lon will be taken from a GPS,
 GPSSpeed=9600             ; overriding the values set above.


 ; 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 INTERVAL=10 TEXT=;PD9Q*111111z5133.52N/00348.15EIPD9Q-10 Linbpq APRS Station
; OBJECT PATH=APRS,WIDE1-1 PORT=3 INTERVAL=14 TEXT=;PI1LAP-8*111111z5133.52N/00348.15EIPI1LAP-8 ((Lin)bpq) APRS Station NLD
  OBJECT PATH=APRS,WIDE1-1 PORT=10 INTERVAL=16 TEXT=;PI1LAP-8*111111z5133.52N/00348.15EIPI1LAP-8 ((lin)BPQ) APRS Station NLD
;  OBJECT PATH=APRS,WIDE1-1 PORT=2 INTERVAL=17 TEXT=;PI1LAP-10*111111z5133.52N/00348.15EIPI1LAP-10 ((Lin)BPQ) APRS Station

 ; IGATE Params. If specified you will gate RF packets and your beacons to APRS-IS

 ISHost=euro.aprs2.net
 ISPort=14580              ; 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=m/500              ; Filter Command if needed

; WXCall=PI1LAP-8
; WXFileName=/home/pi/linbpq/current.txt
; WXComment=/PI1LAP-8 Weather Station JO11VN
; WXPortList=6,9,IS            ; comma separated list - include IS to send to APRS-IS
; WXInterval=18            ; mins
 ;
****

LINMAIL
LINCHAT

APPLICATION 1,BBS,,PI8LAP,LAPBBS,255
APPLICATION 2,CHAT,,PI1LAP-4,LAPCHT,255
APPLICATION 3,DXC,C 8 HOST 0 S,PI1LAP-2,LAPDXC,255
APPLICATION 4,RMS,C 8 CMS,PI8LAP-10,LAPRMS,255
;APPLICATION 5,RMS,C 11 ON0SEA-10,PI8LAP-10,LAPRMS,255
APPLICATION 6,SYSINFO,C 8 HOST 1 S

BPQ32 and Ardopcf

I’ve been running John G8BPQ’s ArdopC for a while now. Peter LaRue AI7YN has made a frok of ArdopC called ArdopCF.

https://github.com/pflarue/ardop

I want to use QtSoundmodem at the same time as ArdopCF. For this I need to create a “.asoundrc” in my home directory.

pcm.dsnooped0 {
    type dsnoop
    ipc_key 50000
    ipc_key_add_uid false   # let multiple users share
    ipc_perm 0666           # IPC permissions for multi-user sharing (octal, default 0600)
    slave {
        pcm "hw:1,0"
        channels 1
    }
}

pcm.dmix0 {
    type dmix
    ipc_key 60000
    ipc_key_add_uid false   # let multiple users share
    ipc_perm 0666           # IPC permissions for multi-user sharing (octal, default 0600)
    slave {
        pcm "hw:1,0"
        rate 48000
    }
}

# Point ARDOP to ARDOP2IN and ARDOP2OUT for rate conversion

pcm.ARDOP2IN {type rate slave {pcm "plug:dsnooped0" rate 48000}}
pcm.ARDOP2OUT {type rate slave {pcm "plug:dmix0" rate 48000}}


# combine the capture and playback
pcm.asymwine {
        type asym
        playback.pcm "ARDOP2OUT"
        capture.pcm "ARDOP2IN"
}

# make a default plug for it
pcm.!default {
        type plug
        slave.pcm "asymwine"
}

# define a plug for /dev/dsp
pcm.dsp {
        type plug
        slave.pcm "asymwine"
}

QtSoundModem config

[Init]
CM108Addr=
DispMode=1
DualChan=1
DualPTT=1
FLRigHost=127.0.0.1
FLRigPort=12345
HamLibHost=44.137.31.70
HamLibPort=4532
MinimizetoTray=0
PTT=HAMLIB
PTTBAUD=19200
PTTMode=17
PTTOffString=
PTTOnString=127.0.0.1
RXSampleRate=12000
SCO=1
SndRXDeviceName=:dsnooped0
SndTXDeviceName=:dmix0
SoundMode=0

ArdopCF

pd9q@linux:~/ardop$ ./ardopcf 8515 ARDOP2IN ARDOP2OUT -A -G 8514
ardopcf Version 1.0.4.1.3 (https://www.github.com/pflarue/ardop)
Copyright (c) 2014-2024 Rick Muething, John Wiseman, Peter LaRue
See https://github.com/pflarue/ardop/blob/master/LICENSE for licence details including
  information about authors of external libraries used and their licenses.
ARDOPC listening on port 8515
Capture Devices

Card 0, ID `PCH', name `HDA Intel PCH'
  Device hw:0,0 ID `ALC3234 Analog', name `ALC3234 Analog', 1 subdevices (0 available)

Playback Devices

Card 0, ID `PCH', name `HDA Intel PCH'
  Device hw:0,0 ID `ALC3234 Analog', name `ALC3234 Analog', 1 subdevices (0 available)

Using Both Channels of soundcard for RX
Using Both Channels of soundcard for TX
Opening Playback Device ardopout Rate 12000
Opening Capture Device ardopin Rate 12000
ardopcf listening on port 8515
Webgui available at port 8514.
Setting ProtocolMode to ARQ.

BPQ32 config

PORT
 PORTNUM=3
 INTERLOCK=1
 HIDE=0
 ID=ARDOP500
 DRIVER=ARDOP
 CONFIG
 ADDR 44.137.31.70 8515 PTT CAT
 ARQBW 500MAX
 LEADER 200
 ENABLEPINGACK
 BUSYDET 5
 CONSOLELOG 3
 LOGLEVEL 3
 CWID TRUE
 MONITOR TRUE
 GRIDSQUARE JO11VN
 RADIO=1
 ****
ENDPORT

Webgui

 

BPQ32 rigcontrol

https://www.cantab.net/users/john.wiseman/Documents/RigControl.html

Multi line rigcontrol with rigctd emulator enabeld.

Icom7300

RADIO 1
/dev/ttyUSB0 19200 ICOM IC7300 94 PTT_SETS_INPUT AUX HAMLIB=4532
00:00
5,14.102300,USB,F1,D,P123
06:00
5,7.049450,USB,F1,D,P123
19:00
5,14.102300,USB,F1,D,P123
****

FLrig as radio controler and rigctd as ptt for QtSoundModem

RADIO 2
FLRIG 127.0.0.1:12345 HAMLIB=4532
00:00
5,7.04522,USB
07:00
5,14.1023,USB
23:00
5,7.04522,USB
****

Yaesu FT991A

RADIO 3
/dev/ttyUSB0 19200 YAESU FT991A PTT_SETS_INPUT HAMLIB=4532
5,144.850,FM
****

Bpq32 port config pointing to the RADIO 1 config (QtSoundmodem port)

PORT
 PORTNUM=1
 ID=AFSK300 HF IL2P +850Hz
 INTERLOCK=1
 DRIVER=UZ7HO
 CHANNEL=A
 PACLEN=100
 CONFIG
  ADDR 127.0.0.1 8101
  BEACONAFTERSESSION
  UPDATEMAP
  MAXSESSIONS=1
  RADIO=1
ENDPORT

Bpq32 port config pointing to RADIO 2 rig control config (ardop port)

PORT
 PORTNUM=3
 INTERLOCK=1
 HIDE=0
 ID=ARDOP500
 DRIVER=ARDOP
 CONFIG
 ADDR 127.0.0.1 8515 PTT CAT
 ARQBW 500MAX
 LEADER 200
 ENABLEPINGACK
 BUSYDET 5
 CONSOLELOG 3
 LOGLEVEL 3
 CWID TRUE
 MONITOR TRUE
 GRIDSQUARE JO11VN
 RADIO=2
  ****
ENDPORT

Bpq32 MHeard Beacon

G7TAJ/GB7BEX is sending out a MHeard beacon. I thought that would be fun to try it to.
You can find out how Steve GT7TAJ did it here.  https://github.com/TAj-src/BPQ-MHeardBeacon

I use for this the Docker from M0LTE. You can find it here. https://github.com/M0LTE/bpqapi?tab=readme-ov-file

#!/bin/bash
# Create a beacon file with the bpqapi.
# https://github.com/M0LTE/bpqapi?tab=readme-ov-file
# 18-11-2024 Mheard beacon v1.0a
work_dir=/home/pi/linbpq/script
bc_dir=/home/pi/linbpq
# Get the mh list.
curl -X GET http://pi1lap:8080/native/v1/mheard/1 -H accept > "$work_dir/mheard.json"
# Some file manipulation (trouble with {"mheard":[{"callSign":. remove {"mheard":
sed -i 's/^.\{10\}//' "$work_dir/mheard.json"
sed -i 's/.$//' "$work_dir/mheard.json"
# Remove double call`s.
jq 'unique_by(.callSign)' "$work_dir/mheard.json" > "$work_dir/unique-mh.json"
# Only the call`s received today.
jq '[.[] | select(.lastHeard > (now | strftime("%Y-%m-%d")))]' "$work_dir/unique-mh.json" > "$work_dir/today-mh.json"
# Not received any call after 24:00 uur (next day) So today-mh.json is empty [] exit program. If not empty extract callsign`s.
if cat "$work_dir/today-mh.json" | jq -e '. == []'
then
rm -f "$bc_dir/beacon.txt" && exit
else
jq -r '.[] | .callSign' "$work_dir/today-mh.json" > "$work_dir/format.txt"
fi
# Delete the beacon.txt and Change the output format.
rm -f "$bc_dir/beacon.txt"
sed -i '1s/^/Mheard:\n/' "$work_dir/format.txt"
awk ' /^ *$/ {print} !/^ *$/ {printf $0 " "} END {print ""}' "$work_dir/format.txt" > "$bc_dir/beacon.txt"

If you not have received any calll after 24:00 hour midnight on the hf bands the beacon.txt get deleted. You can do also some thing like this to send out a beacon.

# Not received any call after 24:00 uur (next day) So today-mh.json is empty [] exit program. If not empty extract callsign`s. 
if cat today-mh.json | jq -e '. == []' 
then 
  echo "PI1LAP-7 Node - PI8LAP BBS JO11VN" > "bc_dir/beacon.txt" && exit 
else 
  jq -r '.[] | .callSign' "$work_dir/today-mh.json" > "work_dir/format.txt" 
fi 

Config BPQ32 to send out the beacon.


Beacon looks like this

16:45:41T PI1LAP-7>HF Port=1 :
Mheard: GB7BEX GB7BPQ GB7CNR GB7HIB-1 GB7HIB-7 GB7IOW GB7IOW-1 GB7NOT M7TAW M7TAW-3

Add a crontab every 10 minutes. (crontab -e)
*/10 * * * * /home/pi/linbpq/script/get-mh.sh

Ok, Have Fun

MHSave and Python

Today I am playing with Python and Matplotlib. In BPQ32 you have the option to save the Most Heard list (MH) when you close BPQ32. This contains a lot of data that you can use. Above I made a plot of the received stations and the number of packets I received at 14.1022Mhz + 1000Hz at 300Baud. Now I am not a world programmer, so this could probably be easier or different. Below the script I have written and used.

#!/usr/bin/python3
import re, csv, zlib
import matplotlib.pyplot as plt
import numpy as np

#First get the data form the right port. 14.1022Mhz 300 Baud HF Packet

port4 = []

with open("MHSave.txt") as f:
        found_port4 = False

        for line in f:
                if line.startswith("Port:4"):

                        found_port4 = True

                if found_port4:
                        if line.startswith("Port:5"):
                                break
                        else:
                                mod_string = line.replace('||', '')
                                mod_strings = re.sub("via.*$", "", mod_string)
                                port4.append(mod_strings.rstrip('\n'))

with open('port4.txt', 'w') as fout:
        fout.writelines("\n".join(port4[1:]))

#print("\n".join(port4))

# Convert it to a csv file
with open('port4.txt', 'r') as in_file:
    lines = in_file.read().splitlines()
    stripped = [line.replace(","," ").split() for line in lines]
    grouped = zip(*[stripped]*1)
    with open('port4.csv', 'w') as out_file:
        writer = csv.writer(out_file)
        writer.writerow(('Epoch', 'Pack-rev', 'Call', 'Month', 'Day', 'Time'))
        for group in grouped:
            writer.writerows(group) 

# Matplotlib create a nice Plot of the received calls

filename = 'port4.csv'
with open(filename) as f:
    reader = csv.reader(f)
    header_row = next(reader)

    #Get Packets and Calls received
    packs, calls = [], []
    for row in reader:
        pack = int(row[1])
        call = str(row[2])
        packs.append(pack)
        calls.append(call)

x = np.arange(len(calls))

fig, ax = plt.subplots()

ax.barh(x, packs, align='center')
ax.set_title("Call and Packets received on PI1LAP")
ax.set_xlabel('Received Packets')
ax.set_ylabel('Station Callsigns')
ax.set_xticks(packs, minor=True)
ax.set_yticks(x)
ax.set_yticklabels(calls)
plt.tight_layout()
plt.show()

Bpq32 with QtSoundModem and Hamlib

Yesterday I added 2 HF ports to my Bpq32 Node / BBS. I have chosen to use QtSoundModem and Hamlib. QtSoundModem is a Linux port or Soundmodem from UZ7HO. I use Hamlib/rigctld to take control of the Tranceiver. QtSoundmodem and Hamlib run on a different Raspberry than the BBS and Node.

After some testing I found out that I need Hamlib version 3.3 to control the icom 7300. The versions 4.0 and 4.1 do not work for me. Apparently the icom 7300 is not being initialized. Can’t actually find out why this is. With the command “rigctld -l” you get a list of which tranceivers are supported.

So I need number 373 for the Icom 7300.

/usr/local/bin/rigctld -m 373 -r /dev/ttyUSB0 -s 19200 -T 44.137.31.76 -t 4532 &

In the QtSoundModem.ini I have in the [Init] section.

HamLibHost=44.137.31.76
HamLibPort=4532
PTT=HAMLIB
PTTBAUD=19200
PTTMode=17

Now the bpq32.cfg

PORT
 PORTNUM=4
 ID=14.1022 +1100Hz
 DRIVER=UZ7HO
 CHANNEL=A
 PACLEN=80
 CONFIG
  ADDR 44.137.31.76 8101 ; AGW port of QtSoundModem
  BEACONAFTERSESSION
  MAXSESSIONS=5
ENDPORT

PORT
 PORTNUM=5
 ID=14.1022 +2000Hz
 DRIVER=UZ7HO
 CHANNEL=B
 PACLEN=80
 CONFIG
  ADDR 44.137.31.76 8101 ; AGW port of QtSoundModem
  BEACONAFTERSESSION
  MAXSESSIONS=5
ENDPORT

With Hamlib it is also possible to control the TRX from Bpq32. I immediately added a Robust 300 packet port to Bpq32 with rig control. Here is an example.

PORT
 PORTNUM=3
 ID=Robust 300 ;(RPR Packet)
 TYPE=EXTERNAL 
 COMPORT=/dev/ttyUSB0
 SPEED=38400
 DRIVER=SCSTracker
 INTERLOCK=3
 CONFIG
 RIGCONTROL
HAMLIB 44.137.31.76:4532
15,14.1022,USB,F1,R1,H1
15,7.04510,USB,F1,R1,H1
****
WL2KREPORT PUBLIC, api.winlink.org, 80, PI8LAP-10, JO11VN, 00-23, 14102200, ROBUST, 25, 35, 3
WL2KREPORT PUBLIC, api.winlink.org, 80, PI8LAP-10, JO11VN, 00-23, 14102200, PKT300, 25, 35, 3
WL2KREPORT PUBLIC, api.winlink.org, 80, PI8LAP-10, JO11VN, 00-23, 144850000, PKT1200, 10, 20, 5, 0
WL2KREPORT PUBLIC, api.winlink.org, 80, PI8LAP-10, JO11VN, 00-23, 430950000, PKT9600, 10, 20, 5, 0
;#
  M UISC
  O 4                   ; MAXFRAME
  F 190                 ; FRACK
  T 8                   ; TX Delay
  FORCE ROBUST
  USEAPPLCALLS          ; Accept connects to all APPLCALLS
  BEACONAFTERSESSION    ; Beacon after session
  %L 1500               ; Centre Freq for Normal Packet (Default is 1500)
  @I 64                 ; Paclen = 60
  %T 1                  ; TX Autotracking 1 = on
  %N 10
  %B 300
ENDPORT

/var/log/syslog

Apr  4 16:34:41 pi1lap : Initialising Port 01     TCPKISS IP 127.0.0.1 Port 8001 Chan A
Apr  4 16:34:41 pi1lap : Initialising Port 02     TCPKISS IP 127.0.0.1 Port 8001 Chan B
Apr  4 16:34:41 pi1lap : Initialising Port 03     SCSTRK /dev/ttyUSB0
Apr  4 16:34:41 pi1lap : Initialising Port 04     UZ7HO Host 44.137.31.76 Port 8101 Chan A
Apr  4 16:34:41 pi1lap : Initialising Port 05     UZ7HO Host 44.137.31.76 Port 8101 Chan B
Apr  4 16:34:41 pi1lap : Initialising Port 06     ASYNC /dev/ttyUSB1 Chan A

 

Aprs Weather Beacon

Today I’ve been messing around with an APRS weather beacon. Now Direwolf and Linbpq and Jnos can send an aprs weather beacon. It turns out that this is quite precise, with the format of the beacon.

#!/bin/bash
# The weather beacon have to look like this....
# @220424z5057.81N/00729.37E_094/002g005t043r000p006P006h89b09783
# !5133.52N/00348.15E_073/013g...t048h85b10040wWXD
#
# Jun 01 2003 08:07
# 272/000g006t069r010p030P020h61b10150
# ***********************************************************
# 272 - wind direction - 272 degrees
# 010 - wind speed - 10 mph
# g015 - wind gust - 15 mph
# t069 - temperature - 69 degrees F
# r010 - rain in last hour in hundredths of an inch - 0.1 inches
# p030 - rain in last 24 hours in hundredths of an inch - 0.3 inches
# P020 - rain since midnight in hundredths of an inch - 0.2 inches
# h61 - humidity 61% (00 = 100%)
# b10153 - barometric pressure in tenths of a MILLIBAR - 1015.3 MILLIBARS

My weather station uploads its data to wunderground.com. Now wunderground has the option to read this again with an api key.

https://api.weather.com/v2/pws/observations/current?stationId=IKORTG9&format=json&units=m&apiKey=yourApiKey

You can read here how and what.

After a lot of messing around with a bash script, I am able to create the correct format.

TEMP=-4.9°C Temperature degrees Celsius
WPK=29.4km/h Wind speed in Kilometers per hour
WGK=39km/h Wind guts in Kilometers per hour
GRD=58° Wind direction in degrees
RAIN=0mm Rain in the last hour in mm
RAIN24=0.42065mm Rain in the last 24 hour in mm
RAIN12=0.214mm Rain in the last 12 hour in mm
HUM=74% Humidity in procent
Bar=1004mb Barometric pressure in millibars
FAH=023F Temperature degrees Fahrenheit
WPM=018mph Wind speed in miles per hour
WGM=024mph Wind guts in miles per hour
RNI=000inch Rain in the last hour in inches
RNI=001inch Rain in the last 24 hour in inches
RNI=000inch Rain in the last 12 hour in inches

The file I need to broadcast an APRS Weahter Beacon looks like this.

pd9q@pancake:~/linbpq/wx-project $ cat ~/linbpq/current.txt
Feb 09 2021 13:00
086/004g008t028r000p000P000h75b10007

The config file for Linbpq looks like this, this is in the aprs section of bpq32.cfg

WXCall=PD9Q-7
WXFileName=/home/pd9q/linbpq/current.txt
WXComment=/Weather Station JO11VN
WXPortList=1,5,IS        ; comma separated list 
WXInterval=10            ; mins

For Jnos in the autoexec.nos in the aprs section

aprs wx call PD9Q-7
aprs wx stat "Weather Station JO11VN"
aprs wx pos "5133.52N/00348.15E_METEO
aprs wx data "/home/pd9q/jnos/wx/current.txt"
aprs bc rftimer 10

For direwolf in the file direwolf.conf

PBEACON LAT=51^33.52N LONG=03^48.15E SYMBOL=”weather station” COMMENTCMD=”tail -1 /home/pd9q/linbpq/current.txt”

Direwolf Aprs packet look like this.

PD9Q-7>APDW15:!5133.52N/00348.15E_069/005g006t028r000p000P000h75b10007

BPQ32 Aprs packet look like this.

PD9Q-7>APBPQ1,WIDE1-1:@091338z5133.52N/00348.15E_069/005g006t028r000p000P00
0h75b10007/Weather Station JO11VN

Learned a lot.

Bpq32 Log options

John G8BPQ has made it possible to move the log dir of linbpq and pilinbpq. Nice

I’ve uploaded versions of linbpq and pilinbpq to my beta download site
that allow you to move the log directory. Start with a command line
parameter of logdir=directory, eg

../pilinbpq logdir=/dev/shm

 

You can download the new version here.

http://www.cantab.net/users/john.wiseman/Documents/Downloads.html

LinBPQ Applications Interface.

LinBPQ has a facility to make a tcp connection from the node to an application running on the same machine. This was originally intended to connect to a shell to enable basic configuration editing, but has been generalised to allow connects to other tcp ports, thus allowing you to write your own applications to be used with LinBPQ.

Edit
Henk, pointed out that there was something missing in this story. Nowadays we mainly work with Systemd in the newer version of Linux. So the inetd (internet super server) is no longer part of this. But you can still install it. “sudo apt-get install inetutils-inetd” or the successor to inetd the Xinetd “sudo apt-get install xinetd”
Thank you Henk…

Ok, that sounds nice. Let give it a try.

Fist setup Linbpq, add de “cmdport” to the telnet port section.

PORT
 PORTNUM=4                      ; Optional but sets port number if stated
 ID=Telnet
 DRIVER=Telnet

CONFIG
 CMS=1
 CMSCALL=PI1LAP
 CMSPASS=**********
 LOGGING=1
 DisconnectOnClose=1
 CMDPORT 63000
 TCPPORT=6309
 FBBPORT=6306
 HTTPPORT=****
 LOGINPROMPT=User:
 PASSWORDPROMPT=Password:
 MAXSESSIONS=10
 CTEXT=Welcome to PI1LAP`s Telnet Server.\nPress ? For list of commands \n\n
 USER=pd9q,pass,PD9Q,,SYSOP
ENDPORT

I have add “CMDPORT 63000” but it can by any number.

Now add a Application at the end of de bpq32.cfg

APPLICATION 7,APP,C 4 HOST 0 S

Now we have to add some stuff to /etc/services and /etc/inetd.conf

/etc/services

# Local services
bpqdemo        63000/tcp   # BPQ Demo App

/etc/inetd.conf

bpqdemo    stream    tcp    nowait    pd9q  /usr/local/linbpq/testapp.pl

Now restart inetd. sudo killall -1 inetd

I have found a small script on the internet and make some adjustments.
This script is using some perl modules that has to be installed.

cpanm Linux::SysInfo
cpanm Sys::Info
cpanm Sys::Load
cpanm Sys::MemInfo
cpanm Sys::CpuLoad

The testapp.pl script. /usr/local/linbpq/testapp.pl

#!/usr/bin/perl -w -T

# Simple information script 10/2018. PD9Q/PI1LAP

use strict;
use Sys::Info;
use Sys::Info::Constants qw( :device_cpu );
use Sys::Load qw/getload uptime/;
use Sys::MemInfo qw(totalmem freemem totalswap);
use Sys::CpuLoad;

   my $info = Sys::Info->new;
   my $cpu = $info->device('CPU');
   my $os  = $info->os;

   my $old_fh = select(STDOUT);
$| = 1;
select($old_fh);

my $line = <STDIN>;

   print "Hello " . $line . "Welcome to the LinBPQ System Info App of PI1LAP.\n";
   printf "\nWe have %s ", scalar $cpu->count;
   printf "%s-bit CPU", scalar $cpu->bitness;
   printf " %s\n", scalar $cpu->identify;
   printf "The CPU speed is: %s\n\n", scalar $cpu->speed;
   print "Operating System is\n", $os->name( long => 1 );

   print "\n\nSystem load: ", (getload())[0], "\n";
   print "System uptime: ", int uptime(), "\n\n";

   print 'load average: ',
       join(',', Sys::CpuLoad::load()), "\n\n";

   print "Total memory: ".(&totalmem / 1024)."\n";
   print "Free memory:  ".(&freemem / 1024)."\n";

   print "Total swap: ".(&totalswap / 1024)."\n";
   print "Free swap:  ".(Sys::MemInfo::get("freeswap") / 1024)."\n\n";
   print "Type exit to close\n";

while( my $line = <STDIN> )
{
    $line =~ s/\r?\n$//;
    if ($line =~ /exit/)
    {
                die "shutting down, bye,bye\n";
        }

        # do your processing here!

        print "  $line\n";
}

Now we can run the script from linbpq. Let give it a try.

root@gw:/usr/local/linbpq# telnet localhost 6309
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
User:pd9q
Password:

Welcome to PI1LAP`s Telnet Server.
Press ? For list of commands

app
Connected to APP
Hello PD9Q
Welcome to the LinBPQ System Info App of PI1LAP.

We have 1 32-bit CPU Intel(R) Pentium(R) 4 CPU 3.00GHz
The CPU speed is: 2992.432

Operating System is
Debian Linux 8.10 (kernel: 3.16.0-4-686-pae)

System load: 0.07
System uptime: 1211163

load average: 0.07,0.04,0.00

Total memory: 2062392
Free memory:  440452
Total swap: 2783228
Free swap:  2745472

Type exit to close
exit
shutting down, bye,bye
Returned to Node LAPBPQ:PI1LAP-9

http://www.cantab.net/users/john.wiseman/Documents/LinBPQ%20Applications%20Interface.html

LinBPQ with Winmor port.

With the help of the config file of Jerry, N9LYA and some help from John, G8BPQ I have setup a Winmor port on my Linbpq.I use a Microham USB II as soundcard device connected to my Windows PC and a direct Cat kabel from my Linux PC to control the TRX.

Here is the section for the Winmor port. (BPQ32.CFG)

PORT
 PORTNUM=2
 ID=HF WINMOR
 TYPE=EXTERNAL
 PROTOCOL=WINMOR
 DLLNAME=WINMOR.DLL
; INTERLOCK=6
 QUALITY=0

CONFIG

ADDR 192.168.1.145 18500 PTT CAT PATH REMOTE:C:\WINMOR\WINMOR TNC.EXE
RIGCONTROL
/dev/ttyUSB0 4800 Yaesu FT100
7,7.050,USB,W2
7,14.110,USB,W2
****
WL2KREPORT PUBLIC, api.winlink.org, 80, PI1LAP-10, JO11VN, 00-23, 7051500, WINMOR1600, 25, 50, 0, 360
WL2KREPORT PUBLIC, api.winlink.org, 80, PI1LAP-10, JO11VN, 00-23, 14111500, WINMOR1600, 25, 50, 0,360
WL2KREPORT PUBLIC, api.winlink.org, 80, PI1LAP-10, JO11VN, 00-23, 430950000, PKT9600, 10, 60, 9, 0
WL2KREPORT PUBLIC, api.winlink.org, 80, PI1lAP-10, JO11VN, 00-23, 144850000, PKT1200, 10, 60, 9, 0
CWID TRUE
DEBUGLOG True
BW 1600
DRIVELEVEL 100
MODE AUTO
ROBUST False
SHOW True
BUSYLOCK False
BUSYHOLD 5
BUSYWAIT 12

ENDPORT

WINMOR TNC.ini

[WINMOR TNC Form]
ResponseDelay=300
LeaderExtension=0
Disable=False
Waterfall=True
Spectrum=False
Top=22
Left=22
MyCallsign=PI1LAP-10
Registration=
TCP Control Port=8500
MyGridsquare=JO11VN
StartMinimized=False
DebugLog=True
CommandTrace=False
CaptureDevice=Lijningang (High Definition Audio-apparaat)-61
PlaybackDevice=Luidsprekers (High Definition Audio-apparaat)-e9
TCP Address=192.168.1.145

Winmor Status screen from Linbpq

Winmor

Tnx for the help Jerry and John.