Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | This is the 6pack-mini-HOWTO, written by |
| 2 | |
John Anthony Kazos Jr | be2a608 | 2007-05-09 08:50:42 +0200 | [diff] [blame] | 3 | Andreas Könsgen DG3KQ |
Ralf Baechle | 6733259 | 2009-07-17 04:47:19 +0000 | [diff] [blame] | 4 | Internet: ajk@comnets.uni-bremen.de |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |