| xj | b04a402 | 2021-11-25 15:01:52 +0800 | [diff] [blame^] | 1 | This is the 6pack-mini-HOWTO, written by | 
|  | 2 |  | 
|  | 3 | Andreas Könsgen DG3KQ | 
|  | 4 | Internet: ajk@comnets.uni-bremen.de | 
|  | 5 | AMPR-net: dg3kq@db0pra.ampr.org | 
|  | 6 | AX.25:    dg3kq@db0ach.#nrw.deu.eu | 
|  | 7 |  | 
|  | 8 | Last update: April 7, 1998 | 
|  | 9 |  | 
|  | 10 | 1. What is 6pack, and what are the advantages to KISS? | 
|  | 11 |  | 
|  | 12 | 6pack is a transmission protocol for data exchange between the PC and | 
|  | 13 | the TNC over a serial line. It can be used as an alternative to KISS. | 
|  | 14 |  | 
|  | 15 | 6pack has two major advantages: | 
|  | 16 | - The PC is given full control over the radio | 
|  | 17 | channel. Special control data is exchanged between the PC and the TNC so | 
|  | 18 | that the PC knows at any time if the TNC is receiving data, if a TNC | 
|  | 19 | buffer underrun or overrun has occurred, if the PTT is | 
|  | 20 | set and so on. This control data is processed at a higher priority than | 
|  | 21 | normal data, so a data stream can be interrupted at any time to issue an | 
|  | 22 | important event. This helps to improve the channel access and timing | 
|  | 23 | algorithms as everything is computed in the PC. It would even be possible | 
|  | 24 | to experiment with something completely different from the known CSMA and | 
|  | 25 | DAMA channel access methods. | 
|  | 26 | This kind of real-time control is especially important to supply several | 
|  | 27 | TNCs that are connected between each other and the PC by a daisy chain | 
|  | 28 | (however, this feature is not supported yet by the Linux 6pack driver). | 
|  | 29 |  | 
|  | 30 | - Each packet transferred over the serial line is supplied with a checksum, | 
|  | 31 | so it is easy to detect errors due to problems on the serial line. | 
|  | 32 | Received packets that are corrupt are not passed on to the AX.25 layer. | 
|  | 33 | Damaged packets that the TNC has received from the PC are not transmitted. | 
|  | 34 |  | 
|  | 35 | More details about 6pack are described in the file 6pack.ps that is located | 
|  | 36 | in the doc directory of the AX.25 utilities package. | 
|  | 37 |  | 
|  | 38 | 2. Who has developed the 6pack protocol? | 
|  | 39 |  | 
|  | 40 | The 6pack protocol has been developed by Ekki Plicht DF4OR, Henning Rech | 
|  | 41 | DF9IC and Gunter Jost DK7WJ. A driver for 6pack, written by Gunter Jost and | 
|  | 42 | Matthias Welwarsky DG2FEF, comes along with the PC version of FlexNet. | 
|  | 43 | They have also written a firmware for TNCs to perform the 6pack | 
|  | 44 | protocol (see section 4 below). | 
|  | 45 |  | 
|  | 46 | 3. Where can I get the latest version of 6pack for LinuX? | 
|  | 47 |  | 
|  | 48 | At the moment, the 6pack stuff can obtained via anonymous ftp from | 
|  | 49 | db0bm.automation.fh-aachen.de. In the directory /incoming/dg3kq, | 
|  | 50 | there is a file named 6pack.tgz. | 
|  | 51 |  | 
|  | 52 | 4. Preparing the TNC for 6pack operation | 
|  | 53 |  | 
|  | 54 | To be able to use 6pack, a special firmware for the TNC is needed. The EPROM | 
|  | 55 | of a newly bought TNC does not contain 6pack, so you will have to | 
|  | 56 | program an EPROM yourself. The image file for 6pack EPROMs should be | 
|  | 57 | available on any packet radio box where PC/FlexNet can be found. The name of | 
|  | 58 | the file is 6pack.bin. This file is copyrighted and maintained by the FlexNet | 
|  | 59 | team. It can be used under the terms of the license that comes along | 
|  | 60 | with PC/FlexNet. Please do not ask me about the internals of this file as I | 
|  | 61 | don't know anything about it. I used a textual description of the 6pack | 
|  | 62 | protocol to program the Linux driver. | 
|  | 63 |  | 
|  | 64 | TNCs contain a 64kByte EPROM, the lower half of which is used for | 
|  | 65 | the firmware/KISS. The upper half is either empty or is sometimes | 
|  | 66 | programmed with software called TAPR. In the latter case, the TNC | 
|  | 67 | is supplied with a DIP switch so you can easily change between the | 
|  | 68 | two systems. When programming a new EPROM, one of the systems is replaced | 
|  | 69 | by 6pack. It is useful to replace TAPR, as this software is rarely used | 
|  | 70 | nowadays. If your TNC is not equipped with the switch mentioned above, you | 
|  | 71 | can build in one yourself that switches over the highest address pin | 
|  | 72 | of the EPROM between HIGH and LOW level. After having inserted the new EPROM | 
|  | 73 | and switched to 6pack, apply power to the TNC for a first test. The connect | 
|  | 74 | and the status LED are lit for about a second if the firmware initialises | 
|  | 75 | the TNC correctly. | 
|  | 76 |  | 
|  | 77 | 5. Building and installing the 6pack driver | 
|  | 78 |  | 
|  | 79 | The driver has been tested with kernel version 2.1.90. Use with older | 
|  | 80 | kernels may lead to a compilation error because the interface to a kernel | 
|  | 81 | function has been changed in the 2.1.8x kernels. | 
|  | 82 |  | 
|  | 83 | How to turn on 6pack support: | 
|  | 84 |  | 
|  | 85 | - In the linux kernel configuration program, select the code maturity level | 
|  | 86 | options menu and turn on the prompting for development drivers. | 
|  | 87 |  | 
|  | 88 | - Select the amateur radio support menu and turn on the serial port 6pack | 
|  | 89 | driver. | 
|  | 90 |  | 
|  | 91 | - Compile and install the kernel and the modules. | 
|  | 92 |  | 
|  | 93 | To use the driver, the kissattach program delivered with the AX.25 utilities | 
|  | 94 | has to be modified. | 
|  | 95 |  | 
|  | 96 | - Do a cd to the directory that holds the kissattach sources. Edit the | 
|  | 97 | kissattach.c file. At the top, insert the following lines: | 
|  | 98 |  | 
|  | 99 | #ifndef N_6PACK | 
|  | 100 | #define N_6PACK (N_AX25+1) | 
|  | 101 | #endif | 
|  | 102 |  | 
|  | 103 | Then find the line | 
|  | 104 |  | 
|  | 105 | int disc = N_AX25; | 
|  | 106 |  | 
|  | 107 | and replace N_AX25 by N_6PACK. | 
|  | 108 |  | 
|  | 109 | - Recompile kissattach. Rename it to spattach to avoid confusions. | 
|  | 110 |  | 
|  | 111 | Installing the driver: | 
|  | 112 |  | 
|  | 113 | - Do an insmod 6pack. Look at your /var/log/messages file to check if the | 
|  | 114 | module has printed its initialization message. | 
|  | 115 |  | 
|  | 116 | - Do a spattach as you would launch kissattach when starting a KISS port. | 
|  | 117 | Check if the kernel prints the message '6pack: TNC found'. | 
|  | 118 |  | 
|  | 119 | - From here, everything should work as if you were setting up a KISS port. | 
|  | 120 | The only difference is that the network device that represents | 
|  | 121 | the 6pack port is called sp instead of sl or ax. So, sp0 would be the | 
|  | 122 | first 6pack port. | 
|  | 123 |  | 
|  | 124 | Although the driver has been tested on various platforms, I still declare it | 
|  | 125 | ALPHA. BE CAREFUL! Sync your disks before insmoding the 6pack module | 
|  | 126 | and spattaching. Watch out if your computer behaves strangely. Read section | 
|  | 127 | 6 of this file about known problems. | 
|  | 128 |  | 
|  | 129 | Note that the connect and status LEDs of the TNC are controlled in a | 
|  | 130 | different way than they are when the TNC is used with PC/FlexNet. When using | 
|  | 131 | FlexNet, the connect LED is on if there is a connection; the status LED is | 
|  | 132 | on if there is data in the buffer of the PC's AX.25 engine that has to be | 
|  | 133 | transmitted. Under Linux, the 6pack layer is beyond the AX.25 layer, | 
|  | 134 | so the 6pack driver doesn't know anything about connects or data that | 
|  | 135 | has not yet been transmitted. Therefore the LEDs are controlled | 
|  | 136 | as they are in KISS mode: The connect LED is turned on if data is transferred | 
|  | 137 | from the PC to the TNC over the serial line, the status LED if data is | 
|  | 138 | sent to the PC. | 
|  | 139 |  | 
|  | 140 | 6. Known problems | 
|  | 141 |  | 
|  | 142 | When testing the driver with 2.0.3x kernels and | 
|  | 143 | operating with data rates on the radio channel of 9600 Baud or higher, | 
|  | 144 | the driver may, on certain systems, sometimes print the message '6pack: | 
|  | 145 | bad checksum', which is due to data loss if the other station sends two | 
|  | 146 | or more subsequent packets. I have been told that this is due to a problem | 
|  | 147 | with the serial driver of 2.0.3x kernels. I don't know yet if the problem | 
|  | 148 | still exists with 2.1.x kernels, as I have heard that the serial driver | 
|  | 149 | code has been changed with 2.1.x. | 
|  | 150 |  | 
|  | 151 | When shutting down the sp interface with ifconfig, the kernel crashes if | 
|  | 152 | there is still an AX.25 connection left over which an IP connection was | 
|  | 153 | running, even if that IP connection is already closed. The problem does not | 
|  | 154 | occur when there is a bare AX.25 connection still running. I don't know if | 
|  | 155 | this is a problem of the 6pack driver or something else in the kernel. | 
|  | 156 |  | 
|  | 157 | The driver has been tested as a module, not yet as a kernel-builtin driver. | 
|  | 158 |  | 
|  | 159 | The 6pack protocol supports daisy-chaining of TNCs in a token ring, which is | 
|  | 160 | connected to one serial port of the PC. This feature is not implemented | 
|  | 161 | and at least at the moment I won't be able to do it because I do not have | 
|  | 162 | the opportunity to build a TNC daisy-chain and test it. | 
|  | 163 |  | 
|  | 164 | Some of the comments in the source code are inaccurate. They are left from | 
|  | 165 | the SLIP/KISS driver, from which the 6pack driver has been derived. | 
|  | 166 | I haven't modified or removed them yet -- sorry! The code itself needs | 
|  | 167 | some cleaning and optimizing. This will be done in a later release. | 
|  | 168 |  | 
|  | 169 | If you encounter a bug or if you have a question or suggestion concerning the | 
|  | 170 | driver, feel free to mail me, using the addresses given at the beginning of | 
|  | 171 | this file. | 
|  | 172 |  | 
|  | 173 | Have fun! | 
|  | 174 |  | 
|  | 175 | Andreas |