
KISS Protocol
Pros
- Allows for on the fly
NETROM
capability - Allows use of the L2 BPQ
DIGIPEATER
facility.
Cons
- Bypasses QtSoundModem’s frame-collector optimizer.
- Bypasses QtSoundModem’s dynamic
MAXFRAME
optimizer. - Ports cannot be interlocked so TX collisions will occur when several users try to use two or more ports at once.
- Does not support
ATTACH
orRADIO
rig control commands. - Does not support dynamic
MODEM
selection orFREQ
center frequency adjustment TNC parameters. - Nothing will appear in the connection statistics window of QtSoundModem (located above the waterfall/below the monitor window).
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 single-session type TNCs, with a KISS port one can specify the port and destination in one command.
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.
; KISS Mode 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
ID=Modem A
TYPE=ASYNC
KISSOPTIONS=ACKMODE
IPADDR=127.0.0.1 ; QTSM IP
TCPPORT=8100 ; QTSM KISS PORT
PROTOCOL=KISS
CHANNEL=A
QUALITY=0 ; Default to NETROM OFF.
; Can be overriden on cmd line to bring port up for backup netrom (90)
MINQUAL=236 ; Only broadcasts nodes higher than x on this port.
PACLEN=40
TXDELAY=300 ; Transmit keyup delay (ms)
SLOTTIME=100 ; CMSA interval timer (ms)
TXTAIL=50
FRACK=8000
PERSIST=63
DIGIFLAG=1
DIGIPORT=0 ; Port on which to send digi'd frames (0 = same port)
RETRIES=10 ; Level 2 maximum retry value
MAXFRAME=1 ; Max outstanding frames (1 thru 7)
L3ONLY=0 ; 1=No user downlink connects on this port
USERS=1 ; Maximum number of L2 sessions, 0 = no limit
CONFIG
UPDATEMAP
ENDPORT
PORT
PORTNUM=2
ID=Modem B
TYPE=ASYNC
KISSOPTIONS=ACKMODE
IPADDR=127.0.0.1 ; QTSM IP
TCPPORT=8100 ; QTSM KISS PORT
PROTOCOL=KISS
CHANNEL=B
QUALITY=0 ; Default to NETROM OFF.
; Can be overriden on cmd line to bring port up for backup netrom (90)
MINQUAL=236 ; Only broadcasts nodes higher than x on this port.
PACLEN=40
TXDELAY=300 ; Transmit keyup delay (ms)
SLOTTIME=100 ; CMSA interval timer (ms)
TXTAIL=50
FRACK=8000
PERSIST=63
DIGIFLAG=1
DIGIPORT=0 ; Port on which to send digi'd frames (0 = same port)
RETRIES=10 ; Level 2 maximum retry value
MAXFRAME=1 ; Max outstanding frames (1 thru 7)
L3ONLY=0 ; 1=No user downlink connects on this port
USERS=1 ; Maximum number of L2 sessions, 0 = no limit
CONFIG
UPDATEMAP
ENDPORT
PORT
PORTNUM=3
ID=Modem C
TYPE=ASYNC
KISSOPTIONS=ACKMODE
IPADDR=127.0.0.1 ; QTSM IP
TCPPORT=8100 ; QTSM KISS PORT
PROTOCOL=KISS
CHANNEL=C
QUALITY=0 ; Default to NETROM OFF.
; Can be overriden on cmd line to bring port up for backup netrom (90)
MINQUAL=236 ; Only broadcasts nodes higher than x on this port.
PACLEN=40
TXDELAY=300 ; Transmit keyup delay (ms)
SLOTTIME=100 ; CMSA interval timer (ms)
TXTAIL=50
FRACK=8000
PERSIST=63
DIGIFLAG=1
DIGIPORT=0 ; Port on which to send digi'd frames (0 = same port)
RETRIES=10 ; Level 2 maximum retry value
MAXFRAME=1 ; Max outstanding frames (1 thru 7)
L3ONLY=0 ; 1=No user downlink connects on this port
USERS=1 ; Maximum number of L2 sessions, 0 = no limit
CONFIG
UPDATEMAP
ENDPORT
PORT
PORTNUM=4
ID=Modem D
TYPE=ASYNC
KISSOPTIONS=ACKMODE
IPADDR=127.0.0.1 ; QTSM IP
TCPPORT=8100 ; QTSM KISS PORT
PROTOCOL=KISS
CHANNEL=D
QUALITY=0 ; Default to NETROM OFF.
; Can be overriden on cmd line to bring port up for backup netrom (90)
MINQUAL=236 ; Only broadcasts nodes higher than x on this port.
PACLEN=40
TXDELAY=300 ; Transmit keyup delay (ms)
SLOTTIME=100 ; CMSA interval timer (ms)
TXTAIL=50
FRACK=8000
PERSIST=63
DIGIFLAG=1
DIGIPORT=0 ; Port on which to send digi'd frames (0 = same port)
RETRIES=10 ; Level 2 maximum retry value
MAXFRAME=1 ; Max outstanding frames (1 thru 7)
L3ONLY=0 ; 1=No user downlink connects on this port
USERS=1 ; Maximum number of L2 sessions, 0 = no limit
CONFIG
UPDATEMAP
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=0
[KISS]
Port=8100
Server=1
[AX25_A]
MyDigiCall="PE1RRR-7,RIJEN,RRR"
BitRecovery=0
FX25=2
IPOLL=80
KISSOptimization=1
NonAX25Frm=0
TXFrmMode=1
[AX25_B]
BitRecovery=0
FX25=2
IPOLL=80
KISSOptimization=1
NonAX25Frm=0
TXFrmMode=1
[AX25_C]
BitRecovery=0
FX25=2
IPOLL=80
KISSOptimization=1
NonAX25Frm=0
TXFrmMode=1
[AX25_D]
BitRecovery=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 KISS Ports
Initialising Port 01 TCPKISS IP 127.0.0.1 Port 8100 Chan A
Initialising Port 02 TCPKISS IP 127.0.0.1 Port 8100 Chan B
Initialising Port 03 TCPKISS IP 127.0.0.1 Port 8100 Chan C
Initialising Port 04 TCPKISS IP 127.0.0.1 Port 8100 Chan D
From the BPQ terminal command line, the PORTNUM
is used to identify the KISS port. If PORTNUM
is not set, then BPQ assigns a PORTNUM
automatically. PORTNUM
is not affiliated with the sound channel number, they may look the same but that would be purely coincidental.
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:
C 1 TEST1
- Wait a few seconds
- Press enter to abort previous connect
C 2 TEST2
- Wait a few seconds
- Press enter to abort previous connect
C 3 TEST3
- Wait a few seconds
- Press enter to abort previous connect
C 4 TEST4
- Wait a few seconds
- Press enter to abort final connect
1:Fm PE1RRR To TEST1 <SABM C P>[00:15:59T]
1:Fm PE1RRR To TEST1 <DISC C P>[00:16:03T]
2:Fm PE1RRR To TEST2 <SABM C P>[00:16:10T]
2:Fm PE1RRR To TEST2 <DISC C P>[00:16:14T]
3:Fm PE1RRR To TEST3 <SABM C P>[00:16:24T]
3:Fm PE1RRR To TEST3 <DISC C P>[00:16:27T]
4:Fm PE1RRR To TEST4 <SABM C P>[00:16:35T]
4:Fm PE1RRR To TEST4 <DISC C P>[00:16:39T]
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.