Back to home page

OSCL-LXR

 
 

    


0001 .. SPDX-License-Identifier: GPL-2.0
0002 
0003 ==============
0004 6pack Protocol
0005 ==============
0006 
0007 This is the 6pack-mini-HOWTO, written by
0008 
0009 Andreas Könsgen DG3KQ
0010 
0011 :Internet: ajk@comnets.uni-bremen.de
0012 :AMPR-net: dg3kq@db0pra.ampr.org
0013 :AX.25:    dg3kq@db0ach.#nrw.deu.eu
0014 
0015 Last update: April 7, 1998
0016 
0017 1. What is 6pack, and what are the advantages to KISS?
0018 ======================================================
0019 
0020 6pack is a transmission protocol for data exchange between the PC and
0021 the TNC over a serial line. It can be used as an alternative to KISS.
0022 
0023 6pack has two major advantages:
0024 
0025 - The PC is given full control over the radio
0026   channel. Special control data is exchanged between the PC and the TNC so
0027   that the PC knows at any time if the TNC is receiving data, if a TNC
0028   buffer underrun or overrun has occurred, if the PTT is
0029   set and so on. This control data is processed at a higher priority than
0030   normal data, so a data stream can be interrupted at any time to issue an
0031   important event. This helps to improve the channel access and timing
0032   algorithms as everything is computed in the PC. It would even be possible
0033   to experiment with something completely different from the known CSMA and
0034   DAMA channel access methods.
0035   This kind of real-time control is especially important to supply several
0036   TNCs that are connected between each other and the PC by a daisy chain
0037   (however, this feature is not supported yet by the Linux 6pack driver).
0038 
0039 - Each packet transferred over the serial line is supplied with a checksum,
0040   so it is easy to detect errors due to problems on the serial line.
0041   Received packets that are corrupt are not passed on to the AX.25 layer.
0042   Damaged packets that the TNC has received from the PC are not transmitted.
0043 
0044 More details about 6pack are described in the file 6pack.ps that is located
0045 in the doc directory of the AX.25 utilities package.
0046 
0047 2. Who has developed the 6pack protocol?
0048 ========================================
0049 
0050 The 6pack protocol has been developed by Ekki Plicht DF4OR, Henning Rech
0051 DF9IC and Gunter Jost DK7WJ. A driver for 6pack, written by Gunter Jost and
0052 Matthias Welwarsky DG2FEF, comes along with the PC version of FlexNet.
0053 They have also written a firmware for TNCs to perform the 6pack
0054 protocol (see section 4 below).
0055 
0056 3. Where can I get the latest version of 6pack for LinuX?
0057 =========================================================
0058 
0059 At the moment, the 6pack stuff can obtained via anonymous ftp from
0060 db0bm.automation.fh-aachen.de. In the directory /incoming/dg3kq,
0061 there is a file named 6pack.tgz.
0062 
0063 4. Preparing the TNC for 6pack operation
0064 ========================================
0065 
0066 To be able to use 6pack, a special firmware for the TNC is needed. The EPROM
0067 of a newly bought TNC does not contain 6pack, so you will have to
0068 program an EPROM yourself. The image file for 6pack EPROMs should be
0069 available on any packet radio box where PC/FlexNet can be found. The name of
0070 the file is 6pack.bin. This file is copyrighted and maintained by the FlexNet
0071 team. It can be used under the terms of the license that comes along
0072 with PC/FlexNet. Please do not ask me about the internals of this file as I
0073 don't know anything about it. I used a textual description of the 6pack
0074 protocol to program the Linux driver.
0075 
0076 TNCs contain a 64kByte EPROM, the lower half of which is used for
0077 the firmware/KISS. The upper half is either empty or is sometimes
0078 programmed with software called TAPR. In the latter case, the TNC
0079 is supplied with a DIP switch so you can easily change between the
0080 two systems. When programming a new EPROM, one of the systems is replaced
0081 by 6pack. It is useful to replace TAPR, as this software is rarely used
0082 nowadays. If your TNC is not equipped with the switch mentioned above, you
0083 can build in one yourself that switches over the highest address pin
0084 of the EPROM between HIGH and LOW level. After having inserted the new EPROM
0085 and switched to 6pack, apply power to the TNC for a first test. The connect
0086 and the status LED are lit for about a second if the firmware initialises
0087 the TNC correctly.
0088 
0089 5. Building and installing the 6pack driver
0090 ===========================================
0091 
0092 The driver has been tested with kernel version 2.1.90. Use with older
0093 kernels may lead to a compilation error because the interface to a kernel
0094 function has been changed in the 2.1.8x kernels.
0095 
0096 How to turn on 6pack support:
0097 =============================
0098 
0099 - In the linux kernel configuration program, select the code maturity level
0100   options menu and turn on the prompting for development drivers.
0101 
0102 - Select the amateur radio support menu and turn on the serial port 6pack
0103   driver.
0104 
0105 - Compile and install the kernel and the modules.
0106 
0107 To use the driver, the kissattach program delivered with the AX.25 utilities
0108 has to be modified.
0109 
0110 - Do a cd to the directory that holds the kissattach sources. Edit the
0111   kissattach.c file. At the top, insert the following lines::
0112 
0113     #ifndef N_6PACK
0114     #define N_6PACK (N_AX25+1)
0115     #endif
0116 
0117   Then find the line:
0118 
0119     int disc = N_AX25;
0120 
0121   and replace N_AX25 by N_6PACK.
0122 
0123 - Recompile kissattach. Rename it to spattach to avoid confusions.
0124 
0125 Installing the driver:
0126 ----------------------
0127 
0128 - Do an insmod 6pack. Look at your /var/log/messages file to check if the
0129   module has printed its initialization message.
0130 
0131 - Do a spattach as you would launch kissattach when starting a KISS port.
0132   Check if the kernel prints the message '6pack: TNC found'.
0133 
0134 - From here, everything should work as if you were setting up a KISS port.
0135   The only difference is that the network device that represents
0136   the 6pack port is called sp instead of sl or ax. So, sp0 would be the
0137   first 6pack port.
0138 
0139 Although the driver has been tested on various platforms, I still declare it
0140 ALPHA. BE CAREFUL! Sync your disks before insmoding the 6pack module
0141 and spattaching. Watch out if your computer behaves strangely. Read section
0142 6 of this file about known problems.
0143 
0144 Note that the connect and status LEDs of the TNC are controlled in a
0145 different way than they are when the TNC is used with PC/FlexNet. When using
0146 FlexNet, the connect LED is on if there is a connection; the status LED is
0147 on if there is data in the buffer of the PC's AX.25 engine that has to be
0148 transmitted. Under Linux, the 6pack layer is beyond the AX.25 layer,
0149 so the 6pack driver doesn't know anything about connects or data that
0150 has not yet been transmitted. Therefore the LEDs are controlled
0151 as they are in KISS mode: The connect LED is turned on if data is transferred
0152 from the PC to the TNC over the serial line, the status LED if data is
0153 sent to the PC.
0154 
0155 6. Known problems
0156 =================
0157 
0158 When testing the driver with 2.0.3x kernels and
0159 operating with data rates on the radio channel of 9600 Baud or higher,
0160 the driver may, on certain systems, sometimes print the message '6pack:
0161 bad checksum', which is due to data loss if the other station sends two
0162 or more subsequent packets. I have been told that this is due to a problem
0163 with the serial driver of 2.0.3x kernels. I don't know yet if the problem
0164 still exists with 2.1.x kernels, as I have heard that the serial driver
0165 code has been changed with 2.1.x.
0166 
0167 When shutting down the sp interface with ifconfig, the kernel crashes if
0168 there is still an AX.25 connection left over which an IP connection was
0169 running, even if that IP connection is already closed. The problem does not
0170 occur when there is a bare AX.25 connection still running. I don't know if
0171 this is a problem of the 6pack driver or something else in the kernel.
0172 
0173 The driver has been tested as a module, not yet as a kernel-builtin driver.
0174 
0175 The 6pack protocol supports daisy-chaining of TNCs in a token ring, which is
0176 connected to one serial port of the PC. This feature is not implemented
0177 and at least at the moment I won't be able to do it because I do not have
0178 the opportunity to build a TNC daisy-chain and test it.
0179 
0180 Some of the comments in the source code are inaccurate. They are left from
0181 the SLIP/KISS driver, from which the 6pack driver has been derived.
0182 I haven't modified or removed them yet -- sorry! The code itself needs
0183 some cleaning and optimizing. This will be done in a later release.
0184 
0185 If you encounter a bug or if you have a question or suggestion concerning the
0186 driver, feel free to mail me, using the addresses given at the beginning of
0187 this file.
0188 
0189 Have fun!
0190 
0191 Andreas