FET
Home
Packet
APRS
TNC-X
AX.25
GPS
Equipment Mods
Contact Us

Some documents linked from this page may require Adobe Acrobat PDF reader.
Get Acrobat Reader

 

 

FET Technologies


TNC-X


The TNC-X is a basic KISS mode TNC that is designed by John Hansen, W2FS.

It is available from Coastal ChipWorks either fully assembled and tested, or in kit form.

It is based on a 16F628 PIC and the MX614P modem chip. It is also available with a built-in USB interface so it can be used on computers without a legacy serial port.

These units make great interfaces for APRS I-Gates, digipeaters, or other applications where a small, simple interface is needed.

They are also great when paired with a dedicated radio in a "grab-n-go" emergency communications kit. There is no software to configure in the unit, just plug it all together, and you're on the air!

This product is in continual development. Information presented here includes modifications for interfacing to various radios, as well as software and configuration notes for the various USB interface chips available.

There is a Yahoo Group established to discuss this device.


Connections

Please refer to the schematic and the hookup diagram.

Important connections and jumper settings on the PC board are:

	J    Power Input (7-15VDC)
	J2   DB9(f) Serial Connector
	        2		RXD (transmit TO computer)
	        3		TXD (receive FROM computer)
	        5		Ground 
	J3   AUX232 Auxilliary Data Connection (GPS) RS-232 Levels
	        1		Ground
	        2		TXD (transmit TO external device)
	        3		RXD (receive FROM external device)
	J5   TX Audio to Radio
	J6   RX Audio from Radio
	J7   PTT Output (active low, open collector)
	
	JP1     JP2	  Port Speed (Computer - TNC)
	ON      ON	  1200 baud
	ON      OFF	  4800 baud
	OFF     ON	  9600 baud
	OFF     OFF	  19200 baud
	
	JP3     JP4	  USB-Serial/Power*
	OFF     2-3	  USB Enabled, powered by USB, Serial Port Disabled
	ON      1-2	  Serial Port Enabled, external power, USB Disabled
	

*JP3 determines whether data received from the computer is passed from the serial port to the TNC. It does not break the connection for data received from the computer through the USB interface (if installed). Use either the serial port or the USB connection, not both.

Power does not have to be supplied by the USB connection. If desired, JP4 can be used in the "external" position and power supplied from the DC jack.

JP4 1-2 is closest to C22, JP4 2-3 is closest to the USB chip.


Power Modifications

The unit is normally supplied with a 78L05 voltage regulator. Under normal circumstances, this is adequate for general use (wall-wart, battery).

The 78L05 can be replaced with a heavier duty 7805 which will better handle being hooked up to a higher voltage supply (more mass to dissipate heat).

Watch the pinout, as the 78L05 and the 7805 are different.


USB Rev 4.0 (FTDI)

Revision 4.0 of the USB interface uses an FTDI chip. The drivers used are the Virtual Com Port (VCP) drivers.

Current drivers are available from here.

An archived copy of the drivers from February 2007 are available here:

    Windows XP 64-bit 2.00.00

    Windows XP 2.00.00

    Windows 98 1.09.06

    Linux support should be built into present kernels

Copies of the Windows XP and the Windows 98 driver installation guides are also archived here.


USB Rev 3.0 (LINX)

Revision 3.0 of the USB interface uses a LINX chip. The drivers used are the Virtual Com Port (VCP) drivers.

This chip is recognized by the part number SDM-USB-QS1-S printed right on the chip.

Current drivers are available from here.

NOTE: The chips used by the TNC-X have their own product code (EBE0) burned into them. If you use the drivers from the LINX webpage, you will need to modify the .inf files to include this PID, or the drivers will not install.

An archived copy of the drivers from February 2007 are available here:

    Windows XP/2000 QS VCP

    Windows 98 QS VCP

    Linux... see below

Note that the locally archived drivers are already modified to include the EBE0 product code that is unique to the TNC-X.

A copy of the driver installation guide is also archived here.


Linux USB (Rev 3.0 LINX)

This module does work with Linux. You will however need to modify the kernel source and re-compile a kernel to add support for this chip.

It seems that the LINX chip must have some FTDI components inside, as that is the driver it uses.

The patches that need to be made will depend on the kernel version you are running. General guidelines are provided for you to get started with. Locate the block of code and add in the patch (+).

    2.4.xx Branch

    	In /usr/src/linux/drivers/usb/serial/ftdi_sio.c:
    	
    	{ USB_DEVICE_VER(FTDI_VID, FTDI_XF_632_PID, 0, 0x3ff) },
    	{ USB_DEVICE_VER(FTDI_VID, FTDI_VNHCPCUSB_D_PID, 0, 0x3ff) },
    	{ USB_DEVICE_VER(FTDI_VID, FTDI_DSS20_PID, 0, 0x3ff) },
          + { USB_DEVICE_VER(FTDI_VID, FTDI_TNC_X_PID, 0, 0x3ff) },
    	{ USB_DEVICE_VER(FTDI_MTXORB_VID, FTDI_MTXORB_0_PID, 0, 0x3ff) },
    	{ USB_DEVICE_VER(FTDI_MTXORB_VID, FTDI_MTXORB_1_PID, 0, 0x3ff) },
    	{ USB_DEVICE_VER(FTDI_MTXORB_VID, FTDI_MTXORB_2_PID, 0, 0x3ff) },
    	
    	
    	{ USB_DEVICE_VER(FTDI_VID, FTDI_XF_632_PID, 0x400, 0xffff) },
    	{ USB_DEVICE_VER(FTDI_VID, FTDI_VNHCPCUSB_D_PID, 0x400, 0xffff) },
    	{ USB_DEVICE_VER(FTDI_VID, FTDI_DSS20_PID, 0x400, 0xffff) },
          + { USB_DEVICE_VER(FTDI_VID, FTDI_TNC_X_PID, 0x400, 0xffff) },
      	{ USB_DEVICE_VER(FTDI_MTXORB_VID, FTDI_MTXORB_0_PID, 0x400, 0xffff) },
    	{ USB_DEVICE_VER(FTDI_MTXORB_VID, FTDI_MTXORB_1_PID, 0x400, 0xffff) },
    	{ USB_DEVICE_VER(FTDI_MTXORB_VID, FTDI_MTXORB_2_PID, 0x400, 0xffff) },
    	
    	
    	{ USB_DEVICE(FTDI_VID, FTDI_XF_634_PID) },
    	{ USB_DEVICE(FTDI_VID, FTDI_XF_632_PID) },
    	{ USB_DEVICE(FTDI_VID, FTDI_DSS20_PID) },
          + { USB_DEVICE(FTDI_VID, FTDI_TNC_X_PID) },
      	{ USB_DEVICE(FTDI_NF_RIC_VID, FTDI_NF_RIC_PID) },
    	{ USB_DEVICE(FTDI_VID, FTDI_VNHCPCUSB_D_PID) },
    	{ USB_DEVICE(FTDI_MTXORB_VID, FTDI_MTXORB_0_PID) },
    	
    	
    	In /usr/src/linux/drivers/usb/serial/ftdi_sio.h:
    	
          + /*
          + * TNC-X USB-to-packet adapter
          + */
          +
          + #define FTDI_TNC_X_PID 0xEBE0 
          +
            /*
             * Home Electronics (www.home-electro.com) USB gadgets
            */
            #define FTDI_HE_TIRA1_PID 0xFA78 /* Tira-1 IR tranceiver */
    	

    2.6.xx Branch

    	In /usr/src/linux/drivers/usb/serial/ftdi_sio.c:
    	
    	{ USB_DEVICE(FTDI_VID, FTDI_DSS20_PID) },
          + { USB_DEVICE(FTDI_VID, FTDI_TNC_X_PID) },
    	{ USB_DEVICE(FTDI_NF_RIC_VID, FTDI_NF_RIC_PID) },
    	{ USB_DEVICE(FTDI_VID, FTDI_VNHCPCUSB_D_PID) },
    
    	
    	In /usr/src/linux/drivers/usb/serial/ftdi_sio.h:
    	
    	/*
    	 * Home Electronics (www.home-electro.com) USB gadgets
      	*/
    
      	#define FTDI_HE_TIRA1_PID       0xFA78  /* Tira-1 IR transceiver */
    
          + /*
          +  * TNC-X USB-to-packet adapter
          + */
          +
          + #define FTDI_TNC_X_PID 0xEBE0
    
      	

Once you recompile your kernel (and these USB modules), when you plug in the TNC-X it should be recognized, and will usually show up as /dev/ttyUSB0.

There are some other things that you should be aware of if using the USB driver with Linux.

There may be a condition where you can receive packets, but the TNC never transmits. This may be caused by a flow control problem. There isn't supposed to be any flow control, according to the KISS protocol, but some software expects it.

On the serial port, you can add a jumper between RTS and CTS. On the LINX USB module, you can add a jumper from Pin 21 to Pin 22.

Dave Platt, AE5EO, suggests another method to disable flow control. "Linux seems to default the hardware flow control feature to "enabled" when the USB drivers are installed and bind to the device. The Linux "kissattach" driver, used to bind the AX.25 network socket to the serial port, does not disable RTS/CTS handshaking. The software workaround for this is quite simple, fortunately. In whatever AX.25 startup script one uses, one should simply add the line:

	stty --file /dev/ttyUSB0 -crtscts
	

Just before running:

	kissattach /dev/ttyUSB0 $PORTNAME $IPADDRESS
	

This will turn off RTS/CTS handshaking in the driver before starting the KISS protocol, and eliminates the "can hear but cannot speak" problem."

We have experienced this problem, usually occurring on the javAPRSSrvr I-Gate after the software had been running for some time. We tried Dave's suggestion which seemed to help some, but the problem still occurred. Only a re-boot (ick) of the server would restore it. We did not try the Pin 21-22 jumper, we reverted to a multi-port serial card and traditional serial ports.


Audio Modifications

As built, the RX Audio connection presents about a 1kohm impedance to the attached radio. In some cases, this may be a significant load, which may mean there is not enough audio for the TNC to decode.

We have found that it may be necessary to remove R4 (1k) to raise the audio impedance. This was true for the Standard GX-3000, and has also proven useful with the Motorola GM300/M120.

Depending on where in the microphone circuit you are injecting the audio from the TNC, you may find that you cannot get enough drive to properly deviate the transmitter. Again, this is an impedance problem, this time with the output of the TNC.

We have found it necessary in some cases to change the value of R11 (10k). For the Standard GX-3000, we changed R11 to 470kohm to get enough output and range out of the TX Audio pot. On the Motorola GM300/M120, R11 was shorted out in order to provide enough drive to the microphone circuit in the radio.


Transmit Deviation

A "problem" with the TNC-X being so simple, is that it lacks a means to properly set the transmit deviation. Most TNC's have a "calibration mode" that can be used to manually transmit the Mark and Space tones for proper transmitter alignment. Because the TNC-X just wants to see KISS frames to transmit, there is no feature like a "calibration mode" possible.

However, all is not lost. When the TNC-X is idle, the mode select pins to the modem chip are both logic 0. This puts the MX614P into a mode where it is transmitting a 487Hz tone.

Normally, you would adjust a TNC using the high (2200Hz) tone for a deviation of about 3.5kHz, and let the low tone (1200Hz) fall where it may (due to the 6dB/octave pre-emphasis curve in the radio).

Well, we have to do it a little backwards here. Since we only have a low (487Hz) tone to work with, we have to use it for asjustment and verify our results by sending some data.

Following the 6dB/octave (pre-emphasis) curve, if we half 2200Hz twice, we get 550Hz. That's pretty close to the 487Hz we've got to work with. So if we half the desired output deviation (3.5kHz) twice, we get 875Hz of deviation.

This means that if we set up the TNC-X to transmit the 487Hz tone at about 900Hz deviation, we should be transmitting the correct deviation so that our output signal is clean and not hitting the limiter in the radio. A clean output signal is essential to being able to have the data decoded properly on the receiving end of your transmissions.

In order to get the 487Hz tone out of the TNC, all you need to do is apply power (no computer needed) and temporarily jumper the /PTT (J7) to ground. This should key your radio, and if you listen to the demodulated audio on a service monitor or nearby receiver, you'll hear the tone. Set the TX Audio pot (R12) to give you about 900Hz deviation, and you're all set!


Transmit Delay

Just a quick note about setting the TX Delay pot (R13). The easiest way to do this is to listen to your transmissions on a seperate receiver. You will note that there is a pronounced difference between the idle frames (alternating 1's and 0's) being transmitted at the start, followed by the data frames.

Adjust the TX Delay pot (R13) such that there is a just a little burst of idle frames before the data starts. There is no need in tying up a congested RF channel with 1's and 0's in a framing pattern!.