;*\ ;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
Tag: bpq32
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.