Adjusting KISS TNC AFSK tx level using an isochronous test packet explained a technique to drive a KISS TNC with a specially constructed packet that contains an ISOCHRONOUS test packet, a packet that will produce equal high and low tone alternation in the transmitted AFSK signal. The improved packet should be repeated by most digipeaters, allowing observation of their modulation performance.
Above is the waveform recovered from a receiver without de-emphasis (a Motorola R2009D communications analyser in this case).
The isochronous test packet comprises a KISS frame byte (0x0c), a command /address byte (0x00), a large number of 0x77 bytes which will result in equal alternations of high and low tone per byte or 150Hz rate (due to the NRZI encoding), and finally another KISS frame byte (0x0c). Some equipment contains the ability to send 600Hz isochronous test signals, but the lower rate of 150Hz was chosen to make measurement of the level of the 1200Hz tone easier as four cycles will be contained in the burst.
The packet that was constructed was a minimal KISS packet that would not be repeated by most digipeaters as it lacked the routing information and it was too long from some of the ‘modern’ TNC’s that have quite limited packet size. The new test packet w180.bin is included in the zip package linked at the bottom of the page.
The video above demonstrates the procedure using a Motorola R2000D communications analyser (which does not have de-emphasis).
Above a still from the video of the recovered modulation.
This can be sent to the TNC from a DOS command shell, or *nix shell after setting the serial port parameters.
The following is a DOS batch file which loops sending the packets. The sleep command is not part of DOS, it is the GNU sleep command ported to W32 and is included in the zip package linked at the bottom of the page. Of course, you must edit the com port setting to suit your TNC connection.
@echo off set PORT=COM5 echo Hit Ctl-C to break out of this file mode %PORT%: 9600,n,8,1 :again echo Copy file... copy w180.bin %PORT% >nul echo Wait... sleep 6 goto again
The following is a bash shell script to do the same thing.
#!/bin/bash PORT=/dev/ttyUSB0 stty -F $PORT raw ispeed 9600 ospeed 9600 cs8 -ignpar -cstopb -echo echo "Hit Ctl-C to break out of this file" #for ((j=0; j<$1; j++)); do while [ 1 ]; do echo "Send data..." cp w180.bin $PORT echo "Wait..." sleep 6 done
Off air example
Above is a recording of the test frame received from a digipeater on a receiver with reasonably accurate de-emphasis.
The first part of the trace is the framing sequence, then the X.25 headers, then long period of isochronous modulation.
Above is a close up view of the isochronous modulation. It can be seen that the low frequency modulation is about twice the voltage or 6dB higher than the high frequency modulation. With a properly modulated transmitter, the two tones should be within 1dB or 10% of each other.
The effect of this twist as it is known is to reduce demodulation margins, and therefore contribute to packet loss.
It is possible to edit kissiso.bin to change the packet length.
The header information highlighted in the dump above should NOT be edited, nor should the closing 0xc0 character be changed. You can add or reduce the number of w characters with a binary editor. It is the w characters that gives the isochronous pattern after Manchester encoding.