;*\ ;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
9600 bps Packet Radio only twice as fast as 1200
AX25 V2.2
Most AX.25 connected mode implementations were written in the previous Century and are based on the standard from 1984. They were not updated when the protocol was enhanced in 1998.
The newer version has several improvements that make bulk transfer of data more efficient.
- Larger packets.
- Larger window size. (number of information frames that can be sent before waiting for an ack.)
- More efficient acknowledgements.
- Much more efficient retransmission for lost packets.
- Completely interoperable with the v2.0 standard.
I also make the case that using a KISS TNC for connected mode packet is greatly lacking because the connection oriented protocol does not know about the radio status or the transmit queue length in the TNC.
More in-depth description can be found here:
https://raw.githubusercontent.com/wb2osz/direwolf/dev/doc/Why-is-9600-only-twice-as-fast-as-1200.pdf
Aprs Documentation project of WB2OSZ
It’s hard to find good information on APRS. A web search produces mostly outdated misinformation and little of value. This is the beginning of a collection of the essential documentation.
Source https://github.com/wb2osz/aprsspec?tab=readme-ov-file
- APRS-Digipeater-Algorithm.pdf
- APRS-Digpeaters-in-Space.pdf
- APRS-Information-Services.pdf
- APRS12b.pdf
- APRS12c.pdf
- How-to-Get-Started-in-APRS.pdf
- The-Best-APRS-Presentations.pdf
- Understanding-APRS-Packets.pdf
- What-is-APRS.pdf
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
RASPBERRY PI4 TRIFECTA TNC-BANK IMAGE COMPANION DOCUMENTATION
In memory of Red PE1RRR, We’ll keep the packets flying. Thanks my friend.
Credits PE1RRR.
DOWNLOAD
WARNING: Cooling
The use of this image is at own risk. Active (fan) or large area heatsink cooling is required to keep the RPI from overheating. For example, a heat sink case such as this one is sufficient if there is adequate airflow around the unit.
While the image does not by default overclock your RPI4, it is necessary to put the RPI into Performance Mode, which will make it run hotter. Overclocking is highly recommended but is a manual step you must take full responsibility for.
Before You Start
- Network is handled by DHCP. The SSH system is not running by default and this must be manually activated to generate host keys for the system using the
raspi-config
tool. - Having the SSH system enabled will let you log in from a remote system (using PuTTY for example) on your own network, making it a lot easier to transfer copy & paste instructions from this document.
- You will still need a display, a keyboard and a mouse connected for initial setup.
- This document is not perfect, it is a work in progress.
- The image is the first of its kind so it isn’t perfect either.
- This document has already been updated with additional steps that must be taken to make it fully operational.
- The image requires at least a 16GB SDCard (8.3GB used) and will auto-resize to the full capacity first on boot up. 16GB is recommended because it is quicker to make a backup of should you wish to do so in the future.
- Download 2.3GB
WRITING THE IMAGE TO SD CARD
Windows
Writing the image to SD Card is usually quite well documented by the general Raspberry Pi online documentation. It is possible to use Windows tools such as the RPI Imager, however the image file you download may need to be decompressed first using a tool such as WinRAR or 7zip.
Linux
You will need to know which device path your SDCard appears as e.g /dev/sda
for the dd command. The image is compressed and will need to be unpacked:
gzip -d rpi4-console-dist.img.gz
Send the image to the SD Card using dd: Be sure that /dev/sdb is your SD card and not your internal hard disk!
sudo dd if=/path-to-the-image/rpi4-console-dist.img of=/dev/sdb bs=16M status=progress
First Boot
Upon first boot the image will resize itself to fit the full capacity of the SD card and then auto-restart the system.
Second Boot
Second boot will eventually present a black screen on the display connected (how useful, this will be addressed possibly in an updated image). If there is no signal then you may have the HDMI connector in the wrong port.
Plug in a mouse and hold right-click on the screen to open the pop up menu. From there, open the Terminal Emulator application.
Will this be a desktop system for you?
This install has been created to be as light as possible on the hardware while keeping plenty of tools available, as such there is no toolbar installed by default, so you may want to install the tint2
package if you wish to actually use this system as a desktop.
sudo apt install tint2
Open /home/pi/.config/autostart.sh
, it will not exist.
Fill it with the contents:
# tint2 -- provides panel, systray, clock & taskbar
tint2 &
After installing tint2
, a reboot is required for it to run at next logon.
Change the Password
Once logged in you should change the default password to something else using the passwd
command on a new terminal line and hit enter. You will be prompted through the process. The current login is: pi
and the password is: raspberrypi
Enable Secure Shell (SSH)
By default SSH is disabled as host keys need to be generated for your host that are unique and cannot be shared via an image file. So open up the raspi-config
tool and navigate to (3) Interface Options, then select (2) SSH and Enable it.
sudo raspi-config
Bug Fixes
Updated 2023-04-21- There is a bug that needs to be fixed in the provided /home/pi/.asoundrc file, while the system will still function it is necessary to fix this oversight as it will undoubtedly improve performance.
Open the /home/pi/.asoundrc file and find the string ‘44000’, this needs to be adjusted to ‘48000’. The section of code it is in is shown below, marked ‘Correction applied here’
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:3,0"
rate 48000 # Correction applied here.
}
}
Overclocking
If you do have adequate cooling, it is highly recommended to overclock to get the best performance, editing /boot/config.txt
to set it to 2GHz which is from experience so far, safe and stable. Locate the #arm_freq
parameter in the config.txt
file and add the following below it:
over_voltage=6
arm_freq=2000
Performance Mode
And edit /etc/rc.local
to force performance mode at boot:
sudo nano /etc/rc.local
Insert the following one-liner BEFORE the ‘exit 0
’ line in /etc/rc.local
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
Enable Realtime Thread Priority
Tweaks to the host operating system file /etc/security/limits.conf
@audio - rtprio 95
@audio - memlock 512000
@audio - nice -19
The rtpriosetting is the maximum priority a user of the audio group can run a task. The memlock setting is the maximum amount of memory that a member of the audio group can lock with a realtime task. This should be less than the maximum physical amount of memory, some recommend it to be half. nice is the minimum “nice level” a task can be run as (the willingness of a task to give up it’s cpu time).
ALSA Project (https://www.alsa-project.org/wiki/Low_latency_howto)
If not using ‘pi
’ user, ensure that your user ID is in the audio group in /etc/groups
After a reboot, verify that the new limits are working with:
ulimit -r
pi@raspberrypi:~/bin $ ulimit -r
95
VARA and ARDOP realtime Thread Priority
Background: Launch VARA with highest priority (99)- is required to compensate for some since discovered latency issues.
When issued as root, the chrt
tool overrides the policy set earlier in the limits.conf
, running the process as rt
(realtime) which will reflect in the indicated priority listing when displayed in the top
process monitor program.
Example:
sudo chrt -p 99 `pgrep VARA.exe`
Will modify the thread priority to realtime, on the fly. Using ‘top
’, look at the PRI
column and it should now be ‘rt
’ instead of default ‘20
’.
A modified script that will fork chrt
into a background subshell, wait 20 seconds while VARA is launched, and then adjusts the process priority of VARA.exe is required.
The following script tweak is needed for the RPI4 TNC image for both the ARDOP and VARA TNCs:
File: /home/pi/bin/startvara
#!/bin/bash
cd /home/pi/bin
DISPLAY=:2
export DISPLAY
(sleep 20; sudo chrt --pid 99 `pgrep VARA.exe` ) &
/usr/local/bin/wine /home/pi/.wine/drive_c/VARA/VARA.exe
File: /home/pi/bin/startardop
!/bin/bash
cd /home/pi/bin/
(sleep 10; sudo chrt --pid 99 `pgrep piardopc` ) & /home/pi/bin/piardopc 8515 ARDOP2IN ARDOP2OUT
Enable the TNCs
By default, none of the TNCs are started automatically, but can be enabled to do so:
sudo systemctl enable vara
sudo systemctl enable ardop
sudo systemctl enable ardop-gui
sudo systemctl enable qtsm
sudo service vara start
sudo service ardop start
sudo service ardop-gui start
sudo service qtsm start
View the TNCs
To view the running TNCs, attach VNC Viewer to Display “2”.
So long as you have RealVNC client installed on a remote system, such as another Raspberry Pi, or an iPad you can connect to the screen running the TNCs for monitoring purposes. You don’t have to keep the VNC open, they will run happily in the background.
From Terminal: Note: omit the brackets if providing an IP address.
vncviewer [optional IP address]:2
Login is “pi
“, the password is “raspberrypi
” unless you have already changed it)
VNC Idle Timeout
By default the VNC will timeout after 3600s (an hour) which can be annoying if you want to leave it open on another desktop to monitor. If you have the tint2
toolbar installed it will be possible to locate annd open the VNC server UI on the desktop and then open up Expert
settings to adjust IdleTimeout
to 0
.
Alternatively, open /home/pi/.vnc/.config.d/Xvnc
and append the following line:
IdleTimeout=0
Configuring the QtSoundModem TNC
Due to an oversight on my part, QtSoundModem.ini
has the CWID setting enabled with my callsign so you will need to set the timer from 15 minutes to 0. This will be fixed in the next release of the image.
Additionally good info to know beforehand- due to how QtSoundModem GUI config dialog saves settings, the manually configured sound devices do not appear in the dropdown lists because they are “virtual”, therefore the dsnoop
/dmix
devices that come preconfigured with the image will be overwritten if the dialog is used to change any configuration parameters(!)
The best practice is to edit the ini
file in a text editor manually.
To recap, the QtSoundModem.ini
file is read-only on purpose. The application tries to write back to the file on each shutdown/closure which causes problems for our special audio sharing setup between the different TNCs, so editing the file must be done by hand, not via the GUI.
With editors like vim, a force-write !wq
will write-quit & ignore read-only warning. Easy peasy.
I don’t use nano myself but I know a lot of people do, BUT I don’t know if it i will allow you to do this the same way. If not offered the option when you attempt to overwrite a read-only file, then you can temporarily change the file permission level after stopping the service:
sudo service qtsm stop
cd /home/pi/bin
chmod 644 QtSoundModem.ini
nano QtSoundModem.ini
Make the edits to:
CWIDCall=
CWIDInterval=0
Save and close, then change the permissions back to read-only.
chmod 444 QtSoundModem.ini
Then restart the QtSoundModem’s
service:
sudo service qtsm start
TCP Port Defaults
Bear in mind that my ‘defaults
’ here are in fact not factory setting defaults.
By default my following ports are set:
QtSoundModem
- KISS: 7777
- AGW: 6666
ARDOP
- 8015
VARA
- 8300
- 8301 (data)
OTHER INCLUDED TOOLS/TODOS
Winelink
It’s not a typo, Winelink: VARA on Linux was accomplished courtesy of The Winelink Project on GitHub.
VARA HF 4.7.3 introduced anti-piracy obfuscation to the build which as added so much overhead that it will no longer work on Linux. It is therefore advised to not update to this version.
As of VARA HF version 4.7.5, the aforementioned was removed from the code and functionality has been restored.
[optional] Disable Paket61 socat for TNC2 emulator
sudo systemctl disable paket
sudo service paket stop
[optional] flrig – Radio Head Control
TODO – building and installing.
The source code is located in /home/pi/src
, it is already pre-built, so you can already install it with sudo make install
from the flrig-version
’s subdirectory.
However, because its an old alpha build by now, a fresh build from new source would be better. If you do go ahead an install the tool, it will begin to auto-start due to the systemd
service powering it up as soon as it finds /usr/local/bin/flrig
binary.
You can stop/start FLRig with sudo service flrig stop/start
QtTermTCP – Packet Terminal
Edit /home/pi/bin/startqtterm
and change the DISPLAY
variable to the desktop which you need, usually :0
if a local monitor connected to HDMI, in our use case you can direct the display to the virtual TNC’s desktop which is running on desktop :2
.
See QtTermTCP for a tutorial video for setting it up with a node.
You can start the program as a service. If QtTermTCP crashes or you close it, systemd
will auto-restart the application.
sudo service qtterm start
To have QtTermTCP auto-start on every boot:
sudo systemctl enable qtterm
THIS CONCLUDES THE TNC BANK SETUP
Now just go to your BPQ32 node and define all the ports to each of the TNCs with the appropriate drivers for each TNC type. Good luck! If you get stuck, ask on the groups.io, or try this Google magic search keyword term for official documentation:
cantab uz7ho
cantab qtsoundmodem
cantab VARA
Ok Ok I will get around to making that document soon. Bookmark my website please and also – consider a donation to my beer/host fund if you feel like it. This document took many hours to write and hours of testing and its still not finished!
ALSO INCLUDED IN THE IMAGE
DOSBOX Toys
Not meant for 3rd Parties – provided for educational purposes only.
Please note that there is no toolbar installed, you may want to install the tint2
package if you wish to actually use this system as a desktop.
sudo apt install tint2
How it works
As this image is dual-purpose, this image is also capable of running old packet applications for fun, but due to performance requirements must not be used if running the system as a TNC-bank.
On this image is DOSBOX with various packages preconfigured to use a virtual serial port pipe to the box with a BPQ32 node running on the local network This is downright complicated and because of this, it is not really recommended for 3rd party use but tinkerers might like it.
Each program such as “superpacket
” or “winpack
” relies on a listening serial device on a remote BPQ32 based node. Each application has a unique TCP port put aside, and reciprocal listeners must be set up for each port on the remote node box.
The TCP listeners direct the traffic to a pseudo serial device that the node is configured to attach to when it is started. It then talks to the socket using KISS mode, and the applications on the other end are doing the same, with a couple of exceptions.
Caveats
If you leave a BPQ32 node with KISS ports enabled linked to socat pseudo serial services, the node will assume traffic is being sent to them and will then wait for responses. If you run the node long enough with the reciprocal applications themselves not running, this will cause that port’s KISS buffer in the node to get full and cause the whole node to stop responding entirely. Eek. So don’t leave the ports configured on the node if you had enough of running the DOS apps!
ON THE NODE SYSTEM
Here are some examples for BPQ32:
PORT
PORTNUM=17
HIDE=0
ID=TCP KISS port 8004
TYPE=ASYNC
PROTOCOL=KISS
FULLDUP=0
COMPORT=/home/pi/port-8004
SPEED=19200
CHANNEL=A
QUALITY=192 ; Quality factor applied to node broadcasts heard on
MINQUAL=230
; this port, unless overridden by a locked route
; entry. Setting to 0 stops node broadcasts
FRACK=5000 ; Level 2 timout in milliseconds
RESPTIME=1000 ; Level 2 delayed ack timer in milliseconds
RETRIES=5 ; Level 2 maximum retry value
MAXFRAME=6 ; Max outstanding frames (1 thru 7)
PACLEN=128 ; Default max packet length for this port.
; PACLEN is ignored for APRS packets
L3ONLY=0 ; 1=No user downlink connects on this port
DIGIFLAG=1 ; Digipeat: 0=OFF, 1=ALL, 255=UI Only
USERS=10 ; Maximum number of L2 sessions, 0 = no limit
UIONLY=0
ENDPORT
PORT
PORTNUM=18
HIDE=0
ID=TCP KISS port 8006
TYPE=ASYNC
PROTOCOL=KISS
FULLDUP=0
COMPORT=/home/pi/port-8006
SPEED=19200
CHANNEL=A
MINQUAL=10
QUALITY=244 ; Quality factor applied to node broadcasts heard on
; this port, unless overridden by a locked route
; entry. Setting to 0 stops node broadcasts
FRACK=8000 ; Level 2 timout in milliseconds
RESPTIME=2000 ; Level 2 delayed ack timer in milliseconds
RETRIES=10 ; Level 2 maximum retry value
MAXFRAME=3 ; Max outstanding frames (1 thru 7)
PACLEN=100 ; Default max packet length for this port.
; PACLEN is ignored for APRS packets
L3ONLY=0 ; 1=No user downlink connects on this port
DIGIPORT=0 ; Port on which to send digi'd frames (0 = same port)
USERS=10 ; Maximum number of L2 sessions, 0 = no limit
UIONLY=0
ENDPORT
The serial port listeners on the node box (remote) are run from some start scripts, for example:
For PORT 17 (tcp 8004
):
#!/bin/bash
socat -d -d PTY,raw,echo=0,link=/home/pi/port-8004-stay PTY,raw,echo=0,link=/home/pi/port-8004 &
while true
do
socat -d -d open:/home/pi/port-8004-stay,nonblock,echo=0,raw TCP4-LISTEN:8004,reuseaddr,fork
sleep 1
done
# End
For PORT 18 (tcp 8006
):
#!/bin/bash
socat -d -d PTY,raw,echo=0,link=/home/pi/port-8006-stay PTY,raw,echo=0,link=/home/pi/port-8006 &
sleep 3
while true
do
socat -d -d open:/home/pi/port-8006-stay,nonblock,echo=0,raw TCP4-LISTEN:8006,reuseaddr,fork
sleep 1
done
# End
ON YOUR DOSBOX SYSTEM
The image has the reciprocal couplings for each of these tcp ports provided as linux services, these can be turned on automatically.
The following ports with self explanatory service names are available:
port-2704 port-8004 port-8005 port-8006 port-8007 port-8009 port-8011
Each has a script in /home/pi/bin/
and needs modifying to change the IP address to the one of your BPQ32 node box.
The above services corrleate to the the various different preconfigured dosbox packages that I have set up for different packet radio applications.
They all run on different TCP ports so that it is actually possible to interconnect the applications through the node. e.g. connect from Winpack to the node, then from the node connect to the SuperPacket application (if it is also running).
Caveat
It is not wise to configure too many kiss-TNC ports as it can have a detrimental effect on the node, sometimes causing BPQ32 to lock up intermittently if you leave the applications closed for a measure of time.
For the purposes of this document I have limited examples to just two:
Port 17 (tcp 8004) and 18 (tcp 8006) respectively for “superpacket” and “winpack”, but there are others defined in the system services already that can be enabled and used if you chose to add extra ports to the node using Port 17 or 18 as examples to iterate up to maximum of Port 32.
For reference
Serial Port Tunnels (client side) – enable and start syntax:
sudo systemctl enable port-8004
sudo systemctl enable port-8006
Start:
sudo service port-8004 start
sudo service port-8006 start
Monitoring
Each port that is started opens a ‘screen’ session for debugging. Each screen session is easily identifiable using “screen -r”
pi@console:~ $ screen -r
There are several suitable screens on:
5915.Port8004 (07/23/2022 11:16:56 AM) (Detached)
5093.Port8006 (07/23/2022 11:08:14 AM) (Detached)
To view the console’s output:
Example:
screen -r Port8006
CTRL-A
then D
will detatch the console.
APPLICATIONS
Winpack
Winpack is configured to use DOS BPQ as the communications layer, and utilizes the KISS interface to talk to my remote node. The node’s “socat” serial port is listening on TCP port 8006, using the socat setup described above. This allows the DOSBOX instance to communicate with the node that is on a remote host. The nodes talk to each other via NETROM, the example port setup shown earlier in the document demonstrates that NETROM is enabled and is sending as many nodes as possible on that port. When successfully linked, the Winpack terminal should show a lot of NETROM activity from broadcasts.
The schametic is like this:
LinBPQ Node -- [Kiss Port 17] -- [Serial Socat Listener Port 8006] <-network-> [Remote Serial Socat Connector] <—-> [DOSBOX-Staging] <—-> [DOS BPQCODE.DLL] <--> [Windows 3.11] <--> [Winpack 6.80]
To configure your own callsign you must edit the following file:
/home/pi/dosprogs/BPQ/BPQCFG.TXT
When the ‘winpack
‘ script is run it will launch DOSBOX and run the BPQCFG.EXE
automatically before auto-booting Windows, this converts the configuration TXT into binary for the BPQCODE
to use. Winpack is preconfigured to use the resident BPQ node.
Winpack’s own callsign configuration is pretty straight forward and self explanatory.
Superpacket
Superpacket, on the other hand, is a complex RTFM situation, only for those with the edge! You’re on your own. But it is damn near perfect for multitrack train drifting, on packet radio.
The Other Apps
Apps confirmed and preconfigured to work in the image:
- Paket 6.1 (paket) – requires the TNC2 emulator port setup, see below.
- Baycom (baycom) – works via a TFPCX KISS emulator TSR
- Winpack 6.80 (winpack) – uses NETROM, use the examples given in this document.
- SuperPacket 9.2 (sp) – uses KISS, see the examples given in this document
- New Packet Generation 2.0 (npg)
- TST Host (tsthost)
- BPQ 4.09 (DOS) – is called by
Winpack
and will require separate configuration. - TheDraw has been included to provide access for text drawing.
- EasyTERM PMS (DOS based frontend for BPQ from circa 1994, not to be confused with UZ7HO software) Requires DOSBOX config to be updated- see download below:
Take a look in /home/pi/.config/dosbox
for the various config files for the applications.
To recap, each DOS application requires a unique BPQ KISS port (or TNC2 emulator) to be configured.
For KISS, see the Ports examples above, they can be used as templates to enable the other applications.
I was able to get Winpack, Superpacket, Baycom, TSTHost, NPG and Paket61 all talking at the same time. It was insane and I am sure the RPI4 cried for mercy.
Enable Paket61 socat for TNC2 emulator
Example TNCPORT for Paket (find a clear spot in the bpq32.cfg
configuration file).
TNCPORT
COMPORT=/home/pi/port-8011
TYPE=TNC2
CHANNELS=4
CONOK=1
ECHO=0
AUTOLF=1
ENDPORT
Enable and start the socat services for Paket61
sudo systemctl enable paket
sudo service paket start
Vara500 with UT1HZM
Mar 18 17:52:25 PI1LAP VARAHF UT1HZM connected VARA HF v4.7.4 Mar 18 18:03:44 PI1LAP VARAHF Disconnecting by FQ Mar 18 18:03:49 PI1LAP VARAHF UT1HZM Average S/N: -3.8 dB Mar 18 18:03:49 PI1LAP VARAHF Disconnected TX: 7113 Bytes (Max: 588 bps) RX: 148 Bytes (Max: 177 bps) Session Time: 11:24
17:52:25R CONNECTED UT1HZM PI8LAP 500 Port=4 17:52:25R HF Node PI1LAP-7 Port=4 17:52:25R Incoming Connect from UT1HZM on Port 4 Freq 14103800 Mode VARA 500 17:52:25R [BPQ-6.0.23.53-B1FWIHJM$] 17:52:25R Welcome to PI8LAP 17:52:25R PI8LAP-> 17:52:25R [BPQ-6.0.23.53-B1FWIHJM$] Port=4 17:52:25R Welcome to PI8LAP Port=4 17:52:25R PI8LAP-> Port=4 17:52:52R [BPQ-6.0.23.1-B1FIHJM$] Port=4 17:52:52R ; MSGTYPES PTRB17000 Port=4 17:52:52R FF Port=4 17:52:53R [BPQ-6.0.23.1-B1FIHJM$] 17:52:53R ; MSGTYPES PTRB17000 17:52:53R FF 17:52:53R FA B CX2SA ARRL LETTER ARRL4111 15430 17:52:53R F> 13 17:52:53R FA B CX2SA ARRL LETTER ARRL4111 15430 Port=4 17:52:53R F> 13 Port=4 17:53:17R FS - Port=4 17:53:17R FF Port=4 17:53:17R FS - 17:53:17R FF 17:53:17R FA B CX2SA ARL PROP ARLP011 8312 17:53:17R FA B EI2GYB WW ASTRO 11947_EI2GYB 8603 17:53:17R F> 13 17:53:18R FA B CX2SA ARL PROP ARLP011 8312 Port=4 17:53:18R FA B EI2GYB WW ASTRO 11947_EI2GYB 8603 Port=4 17:53:18R F> 13 Port=4 17:53:36R FS -- Port=4 17:53:36R FF Port=4 17:53:36R FS -- 17:53:37R FF 17:53:37R FA B EI2GYB WW ASTRO 11948_EI2GYB 7667 17:53:37R FA B KA3BVJ WW SWL 47523_KA3BVJ 4550 17:53:37R F> 01 17:53:37R FA B EI2GYB WW ASTRO 11948_EI2GYB 7667 Port=4 17:53:37R FA B KA3BVJ WW SWL 47523_KA3BVJ 4550 Port=4 17:53:37R F> 01 Port=4 17:54:05R FS -- Port=4 17:54:05R FF Port=4 17:54:05R FS -- 17:54:05R FF 17:54:05R FA B EI2GYB WW ASTRO 11946_EI2GYB 10873 17:54:05R F> 88 17:54:06R FA B EI2GYB WW ASTRO 11946_EI2GYB 10873 Port=4 17:54:06R F> 88 Port=4 17:54:26R FS - Port=4 17:54:26R FF Port=4 17:54:27R FS - 17:54:27R FF 17:54:27R FA B CX2SA ARL KEP ARLK019 3851 17:54:27R FA B LU9DCE WW DXNEWS 6682_LU9DCE 9109 17:54:27R F> 44 17:54:27R FA B CX2SA ARL KEP ARLK019 3851 Port=4 17:54:27R FA B LU9DCE WW DXNEWS 6682_LU9DCE 9109 Port=4 17:54:27R F> 44 Port=4 17:54:48R FS -- Port=4 17:54:48R FF Port=4 17:54:48R FS -- 17:54:48R FF 17:54:48R FA B LU9DCE WW LINUX 6683_LU9DCE 4222 17:54:48R FA B LU9DCE WW ALERT 6685_LU9DCE 3132 17:54:48R FA B LU9DCE WW HUMOR 6686_LU9DCE 1348 17:54:48R FA B LU9DCE WW PROPA 6690_LU9DCE 1245 17:54:48R FA B DJ5AV WW DX ARLDOO11 5338 17:54:48R F> 71 17:54:48R FA B LU9DCE WW LINUX 6683_LU9DCE 4222 Port=4 17:54:48R FA B LU9DCE WW ALERT 6685_LU9DCE 3132 Port=4 17:54:48R FA B LU9DCE WW HUMOR 6686_LU9DCE 1348 Port=4 17:54:48R FA B LU9DCE WW PROPA 6690_LU9DCE 1245 Port=4 17:54:48R FA B DJ5AV WW DX ARLDOO11 5338 Port=4 17:54:48R F> 71 Port=4 17:55:21R FS ----- Port=4 17:55:21R FF Port=4 17:55:21R FS ----- 17:55:21R FF 17:55:21R FA B KF5JRV WW TODAY 1390_KF5JRV 1562 17:55:21R FA B LU9DCE WW DX 6688_LU9DCE 12713 17:55:21R F> 6C 17:55:21R FA B KF5JRV WW TODAY 1390_KF5JRV 1562 Port=4 17:55:21R FA B LU9DCE WW DX 6688_LU9DCE 12713 Port=4 17:55:21R F> 6C Port=4 17:55:41R FS -+ Port=4 17:55:41R FS -+ 17:55:41R Compressed Message Comp Len 4845 Msg Len 12713 CRC 22d9 18:00:52R FF Port=4 18:00:52R FF 18:00:52R FA B LU9DCE WW ALL 6694_LU9DCE 2959 18:00:52R FA B G8MNY WW TECH 43050_GB7CIP 3265 18:00:52R FA B G8MNY WW ATV 43048_GB7CIP 4849 18:00:52R F> 6B 18:00:52R FA B LU9DCE WW ALL 6694_LU9DCE 2959 Port=4 18:00:52R FA B G8MNY WW TECH 43050_GB7CIP 3265 Port=4 18:00:52R FA B G8MNY WW ATV 43048_GB7CIP 4849 Port=4 18:00:52R F> 6B Port=4 18:01:12R FS +-- Port=4 18:01:12R FS +-- 18:01:12R Compressed Message Comp Len 1189 Msg Len 2959 CRC 7410 18:02:27R FF Port=4 18:02:27R FF 18:02:27R FA B G8MNY WW TECH 43049_GB7CIP 12370 18:02:27R F> 29 18:02:27R FA B G8MNY WW TECH 43049_GB7CIP 12370 Port=4 18:02:27R F> 29 Port=4 18:02:46R FS - Port=4 18:02:46R FF Port=4 18:02:46R FS - 18:02:46R FF 18:02:46R FA B EI2GYB WW ASTRO 11979_EI2GYB 13237 18:02:46R F> 85 18:02:46R FA B EI2GYB WW ASTRO 11979_EI2GYB 13237 Port=4 18:02:46R F> 85 Port=4 18:03:09R FS - Port=4 18:03:09R FF Port=4 18:03:09R FS - 18:03:09R FF 18:03:09R FA B EI2GYB WW ASTRO 11980_EI2GYB 5741 18:03:09R FA B EI2GYB WW ASTRO 11981_EI2GYB 8756 18:03:09R F> 6E 18:03:10R FA B EI2GYB WW ASTRO 11980_EI2GYB 5741 Port=4 18:03:10R FA B EI2GYB WW ASTRO 11981_EI2GYB 8756 Port=4 18:03:10R F> 6E Port=4 18:03:34R FS -- Port=4 18:03:34R FF Port=4 18:03:34R FS -- 18:03:34R FF 18:03:34R FQ 18:03:34R FQ Port=4 18:03:50R DISCONNECTED Port=4 18:03:50R UT1HZM Disconnected
Dxspider secure login
From now on there is the possibility to set up an ssh tunnel to the Dxcluster server.
This gives the advantage that no plan text login and passwords are sent over telnet. And that your connection to the cluster is secured.
Why, suppressing fake spots and abuse of the network.
Howto
Send me your login username (call) and password you want to use. I will setup a account for you.
After this it possible to connect secure to the dxcluster.
Copy and past this line in your terminal. Change “call” with your username.
ssh -L 7300:localhost:7300 -N -p 7322 call@dx.packet-radio.nl
Look like this.
Enter your password and leave the terminal window open.
After this nothing happens, but there is a secure tunnel.
Now it is possible to connect the dxcluster on localhost:7300
Open a new terminal window en telnet to localhost port 7300
This is also possible with Putty.
Save and open a ssh connection.
Now it is possible to connect your log program or what you want to the DxCluster on localhost port 7300
DxSpider update
Kin EA3CV wrote a fantastic script for updating DxSpider.
Kin Wrote :
If there is a new build, it will update and immediately restart the node.
If there are no changes, the sysop is informed.
To install it, copy the file to /spider/local_cmd
From console.pl run load/cmd the first time.
The check_build command can be used like this:
check_build Y With Backup
check_build N Without Backup
check_build Without Backup
If you want to leave it automated, add in /spider/local_cmd/crontab
something like this:
0 4 * * 1,2,3,4,5 run_cmd(“check_build N”)
It can be downloaded from:
https://www.dropbox.com/s/6ttq5125qrzev67/check_build.pl?dl=0
This utility is not intended to replace the current update procedure,
it is intended for sysops who feel insecure about upgrading their cluster.
(I don’t feel insecure when it comes to updating software. I like it when it’s easier.)
Basically it does:
git reset –hard
git pull
reinicio
and a full backup of the /home/spysop/spider directory in /home/sysop/backup, which will be overwritten each time check_build is run.
# You need the following package: # apt install libfile-copy-recursive-perl or # cpan install File::Copy::Recursive # Kin EA3CV, ea3cv@cronux.net # # 20230201 v1.0 # use 5.10.1; use DXDebug; use File::Copy::Recursive; use strict; use warnings; my $self = shift; my $backup = shift; return (1) unless $self->priv >= 9; if ($backup eq "Y") { my $from_dir = "/home/sysop/spider"; my $to_dir = "/home/sysop/backup"; if ( !-d $to_dir ) { system('mkdir', $to_dir); } File::Copy::Recursive::rcopy_glob($from_dir, $to_dir); } system('cd /spider'); my $act = $main::gitversion; $act =~ s/\[r\]//g; my $res; my $line = "cd /spider; git reset --hard; git pull"; my @out; system('git reset --hard'); my $data = qx(git pull); my $new = `git log --oneline | head -n 1`; if ($data =~ /Updating/) { $res = "There is a new build: $new"; dbg("DXCron::spawn: $res: $line") if isdbg('cron'); push @out, $res; DXCron::run_cmd("shut"); } elsif ($data =~ /Already|actualizado/) { $res = "There is no new build ($main::build $act)"; push @out, $res; dbg("DXCron::spawn: $res.") if isdbg('cron'); } return (1, @out)