
AGWPE/UZ7HO Protocol
Pros
- Utilizes QtSoundModem’s frame-collector optimizer.
- Utilizes QtSoundModem’s dynamic
MAXFRAME
optimizer. - Ports can be interlocked to prevent multiple simultaneous access.
- Supports
ATTACH
andRADIO
rig control commands. - Supports dynamic
MODEM
selection andFREQ
center frequency adjustment TNC parameters. - The statistics window will be populated with active connection information.
Cons
- Does not have
NETROM
capability - Cannot utilise the BPQ internal Layer2 (L2)
DIGIPEATER
. - For basic DIGI functionality one must use the DIGI built into QtSoundModem, which is configured within
QtSoundModem.ini
using theMyDigiCall
parameter.
Notes
QtSoundModem.ini
settings for port parameters are ignored.PACLEN
,TXDELAY
,FRACK
,PERSIST
,SLOTTIME
etc is taken from theBPQ32.cfg
- Connection syntax is slightly different to that of KISS-type TNCs. With AGW/UZ7HO and other single-session type TNCs, one must first use the
ATTACH port
command to first lock the specified port number to your session, then issueCONNECT destination-callsign [optional: via digipeater-callsign]
BPQ32.cfg Example
This example is running 4 ports on a single HF SSB transceiver. If you only wish to have two ports, omit ports declared PORTNUM=3
and PORTNUM=4
from the configuration.
; AGWPE / UZ7HO Driver with QtSoundModem, all _4_ modems enabled for
; a single SSB transceiver.
;
; WARNING: UZ7HO‘s SoundModem only supports max of _2_ modems so use
; caution if copying this for use with SoundModem instead of
; QtSoundModem.
;
; Modems are differentiated by tonal frequency, so for SSB mode only.
PORT
PORTNUM=1
INTERLOCK=1
ID=Modem A
DRIVER=UZ7HO
CHANNEL=A
PACLEN=100
CONFIG
ADDR 127.0.0.1 8000
MAXSESSIONS=1
UPDATEMAP
RADIO=1
ENDPORT
PORT
PORTNUM=2
INTERLOCK=1
ID=Modem B
DRIVER=UZ7HO
CHANNEL=B
PACLEN=100
CONFIG
ADDR 127.0.0.1 8000
MAXSESSIONS=1
UPDATEMAP
RADIO=1
ENDPORT
PORT
PORTNUM=3
INTERLOCK=1
ID=Modem C
DRIVER=UZ7HO
CHANNEL=C
PACLEN=100
CONFIG
ADDR 127.0.0.1 8000
MAXSESSIONS=1
UPDATEMAP
RADIO=1
ENDPORT
PORT
PORTNUM=4
INTERLOCK=1
ID=Modem D
DRIVER=UZ7HO
CHANNEL=D
PACLEN=100
CONFIG
ADDR 127.0.0.1 8000
MAXSESSIONS=1
UPDATEMAP
RADIO=1
ENDPORT
QtSoundModem.ini Example
[Window]
Waterfall1=1
Waterfall2=0
[Init]
CM108Addr=
DispMode=1
DualChan=1
DualPTT=0
HamLibHost=127.0.0.1
HamLibPort=4532
MinimizetoTray=0
PTT=None
PTTBAUD=19200
PTTMode=1
PTTOffString=
PTTOnString=
RXSampleRate=12000
SCO=1
SndRXDeviceName=:dsnooped0
SndTXDeviceName=:dmix0
SoundMode=0
TXPort=8884
TXRotate=0
TXSampleRate=12000
UDPClientPort=8888
UDPHost=127.0.0.1\n
UDPServer=0
UDPServerPort=8884
multiCore=0
pttGPIOPin=17
pttGPIOPinR=17
[Modem]
CWIDCall=
CWIDInterval=
CWIDLeft=0
CWIDRight=0
CWIDType=1
DCDThreshold=72
ModemType1=0
ModemType2=0
ModemType3=0
ModemType4=0
NRRcvrPairs1=3
NRRcvrPairs2=3
NRRcvrPairs3=0
NRRcvrPairs4=0
PreEmphasisAll1=1
PreEmphasisAll2=1
PreEmphasisAll3=1
PreEmphasisAll4=1
PreEmphasisDB1=0
PreEmphasisDB2=0
PreEmphasisDB3=0
PreEmphasisDB4=0
RXFreq1=1000
RXFreq2=2000
RXFreq3=2300
RXFreq4=2600
RcvrShift1=30
RcvrShift2=30
RcvrShift3=30
RcvrShift4=30
TxDelay1=350
TxDelay2=350
TxDelay3=350
TxDelay4=350
TxTail1=30
TxTail2=30
TxTail3=30
TxTail4=30
rxOffset=0
soundChannel1=1
soundChannel2=1
soundChannel3=1
soundChannel4=1
[AGWHost]
Port=8000
Server=1
[KISS]
Port=8100
Server=0
[AX25_A]
MyDigiCall="MYCALL-7,RIJEN,RRR"
BitRecovery=0
DynamicFrack=0
FX25=2
IPOLL=80
KISSOptimization=1
NonAX25Frm=0
TXFrmMode=1
[AX25_B]
BitRecovery=0
DynamicFrack=0
FX25=2
IPOLL=80
KISSOptimization=1
NonAX25Frm=0
TXFrmMode=1
[AX25_C]
BitRecovery=0
DynamicFrack=0
FX25=2
IPOLL=80
KISSOptimization=1
NonAX25Frm=0
TXFrmMode=1
[AX25_D]
BitRecovery=0
DynamicFrack=0
FX25=2
IPOLL=80
KISSOptimization=1
NonAX25Frm=0
TXFrmMode=1
This example is running four modems (sound channels) on a single HF SSB transceiver. The following example disables all but one modem (sound channel).
soundChannel1=1
soundChannel2=0
soundChannel3=0
soundChannel4=0
Confused? 1=A, 2=B, 3=C, 4=D

The number preceding packet frames indicates the sound channel, somewhat confusingly indicated in the GUI above with A, B, C and D. Additionally, the sections inside the QtSoundModem.ini
file are declared with [AX25_A]
, [AX25_B]
, [AX25_C]
and [AX25_D]
.
Testing The AGWPE/UZ7HO Driven Ports
From the BPQ terminal command line, the PORTNUM
is used to identify the port. If PORTNUM
is not set, then BPQ assigns a PORTNUM
automatically. PORTNUM
is not affiliated with the sound channel number, they may the same but that is purely coincidental.
BPQ initialization console output:
Initialising Port 01 UZ7HO Host 127.0.0.1 Port 8000 Chan A
Initialising Port 02 UZ7HO Host 127.0.0.1 Port 8000 Chan B
Initialising Port 03 UZ7HO Host 127.0.0.1 Port 8000 Chan C
Initialising Port 04 UZ7HO Host 127.0.0.1 Port 8000 Chan D
Output of the Ports command (bold emphasis is my input):
ports
RIJEN:PE1RRR-7} Ports
1 Modem A
2 Modem B
3 Modem C
4 Modem D
Issuing the following commands will produce the output that follows:
Connected to TelnetServer
attach 1
RIJEN:PE1RRR-7} Ok
c test1
d
Disconnected
Connecting....
Connected to TelnetServer
at 2
RIJEN:PE1RRR-7} Ok
c test2
d
Disconnected
Connecting....
Connected to TelnetServer
at 3
RIJEN:PE1RRR-7} Ok
c test3
d
Disconnected
Connecting....
Connected to TelnetServer
at 4
RIJEN:PE1RRR-7} Ok
c test4
d
Disconnected
1:Fm PE1RRR To TEST1 <SABM C P>[01:43:57T]
1:Fm PE1RRR To TEST1 <DISC C P>[01:44:02T]
2:Fm PE1RRR To TEST2 <SABM C P>[01:44:32T]
2:Fm PE1RRR To TEST2 <DISC C P>[01:44:36T]
3:Fm PE1RRR To TEST3 <SABM C P>[01:44:53T]
3:Fm PE1RRR To TEST3 <DISC C P>[01:44:58T]
4:Fm PE1RRR To TEST4 <SABM C P>[01:45:04T]
4:Fm PE1RRR To TEST4 <DISC C P>[01:45:09T]
Soundcard Definition – .asoundrc file
A snippet from the .asoundrc file that comes from the RPI4 Trifecta: VARA, Packet & ARDOP – One Audio Interface tutorial. The hardware (hw:1,0
) interface number is derived from the number displayed next to the sound interface by the command aplay -l
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 44000
}
}
If you find the articles, or content in general posted here useful, enjoyable or maybe even something else, please consider making a small contribution towards my hosting fund so that I may continue to provide my services for free to as many people as possible.
You must be logged in to post a comment.