xref: /linux/Documentation/networking/device_drivers/hamradio/z8530drv.rst (revision 4b4193256c8d3bc3a5397b5cd9494c2ad386317d)
1*14474950SJakub Kicinski.. SPDX-License-Identifier: GPL-2.0
2*14474950SJakub Kicinski.. include:: <isonum.txt>
3*14474950SJakub Kicinski
4*14474950SJakub Kicinski=========================================================
5*14474950SJakub KicinskiSCC.C - Linux driver for Z8530 based HDLC cards for AX.25
6*14474950SJakub Kicinski=========================================================
7*14474950SJakub Kicinski
8*14474950SJakub Kicinski
9*14474950SJakub KicinskiThis is a subset of the documentation. To use this driver you MUST have the
10*14474950SJakub Kicinskifull package from:
11*14474950SJakub Kicinski
12*14474950SJakub KicinskiInternet:
13*14474950SJakub Kicinski
14*14474950SJakub Kicinski    1. ftp://ftp.ccac.rwth-aachen.de/pub/jr/z8530drv-utils_3.0-3.tar.gz
15*14474950SJakub Kicinski
16*14474950SJakub Kicinski    2. ftp://ftp.pspt.fi/pub/ham/linux/ax25/z8530drv-utils_3.0-3.tar.gz
17*14474950SJakub Kicinski
18*14474950SJakub KicinskiPlease note that the information in this document may be hopelessly outdated.
19*14474950SJakub KicinskiA new version of the documentation, along with links to other important
20*14474950SJakub KicinskiLinux Kernel AX.25 documentation and programs, is available on
21*14474950SJakub Kicinskihttp://yaina.de/jreuter
22*14474950SJakub Kicinski
23*14474950SJakub KicinskiCopyright |copy| 1993,2000 by Joerg Reuter DL1BKE <jreuter@yaina.de>
24*14474950SJakub Kicinski
25*14474950SJakub Kicinskiportions Copyright |copy| 1993 Guido ten Dolle PE1NNZ
26*14474950SJakub Kicinski
27*14474950SJakub Kicinskifor the complete copyright notice see >> Copying.Z8530DRV <<
28*14474950SJakub Kicinski
29*14474950SJakub Kicinski1. Initialization of the driver
30*14474950SJakub Kicinski===============================
31*14474950SJakub Kicinski
32*14474950SJakub KicinskiTo use the driver, 3 steps must be performed:
33*14474950SJakub Kicinski
34*14474950SJakub Kicinski     1. if compiled as module: loading the module
35*14474950SJakub Kicinski     2. Setup of hardware, MODEM and KISS parameters with sccinit
36*14474950SJakub Kicinski     3. Attach each channel to the Linux kernel AX.25 with "ifconfig"
37*14474950SJakub Kicinski
38*14474950SJakub KicinskiUnlike the versions below 2.4 this driver is a real network device
39*14474950SJakub Kicinskidriver. If you want to run xNOS instead of our fine kernel AX.25
40*14474950SJakub Kicinskiuse a 2.x version (available from above sites) or read the
41*14474950SJakub KicinskiAX.25-HOWTO on how to emulate a KISS TNC on network device drivers.
42*14474950SJakub Kicinski
43*14474950SJakub Kicinski
44*14474950SJakub Kicinski1.1 Loading the module
45*14474950SJakub Kicinski======================
46*14474950SJakub Kicinski
47*14474950SJakub Kicinski(If you're going to compile the driver as a part of the kernel image,
48*14474950SJakub Kicinski skip this chapter and continue with 1.2)
49*14474950SJakub Kicinski
50*14474950SJakub KicinskiBefore you can use a module, you'll have to load it with::
51*14474950SJakub Kicinski
52*14474950SJakub Kicinski	insmod scc.o
53*14474950SJakub Kicinski
54*14474950SJakub Kicinskiplease read 'man insmod' that comes with module-init-tools.
55*14474950SJakub Kicinski
56*14474950SJakub KicinskiYou should include the insmod in one of the /etc/rc.d/rc.* files,
57*14474950SJakub Kicinskiand don't forget to insert a call of sccinit after that. It
58*14474950SJakub Kicinskiwill read your /etc/z8530drv.conf.
59*14474950SJakub Kicinski
60*14474950SJakub Kicinski1.2. /etc/z8530drv.conf
61*14474950SJakub Kicinski=======================
62*14474950SJakub Kicinski
63*14474950SJakub KicinskiTo setup all parameters you must run /sbin/sccinit from one
64*14474950SJakub Kicinskiof your rc.*-files. This has to be done BEFORE you can
65*14474950SJakub Kicinski"ifconfig" an interface. Sccinit reads the file /etc/z8530drv.conf
66*14474950SJakub Kicinskiand sets the hardware, MODEM and KISS parameters. A sample file is
67*14474950SJakub Kicinskidelivered with this package. Change it to your needs.
68*14474950SJakub Kicinski
69*14474950SJakub KicinskiThe file itself consists of two main sections.
70*14474950SJakub Kicinski
71*14474950SJakub Kicinski1.2.1 configuration of hardware parameters
72*14474950SJakub Kicinski==========================================
73*14474950SJakub Kicinski
74*14474950SJakub KicinskiThe hardware setup section defines the following parameters for each
75*14474950SJakub KicinskiZ8530::
76*14474950SJakub Kicinski
77*14474950SJakub Kicinski    chip    1
78*14474950SJakub Kicinski    data_a  0x300                   # data port A
79*14474950SJakub Kicinski    ctrl_a  0x304                   # control port A
80*14474950SJakub Kicinski    data_b  0x301                   # data port B
81*14474950SJakub Kicinski    ctrl_b  0x305                   # control port B
82*14474950SJakub Kicinski    irq     5                       # IRQ No. 5
83*14474950SJakub Kicinski    pclock  4915200                 # clock
84*14474950SJakub Kicinski    board   BAYCOM                  # hardware type
85*14474950SJakub Kicinski    escc    no                      # enhanced SCC chip? (8580/85180/85280)
86*14474950SJakub Kicinski    vector  0                       # latch for interrupt vector
87*14474950SJakub Kicinski    special no                      # address of special function register
88*14474950SJakub Kicinski    option  0                       # option to set via sfr
89*14474950SJakub Kicinski
90*14474950SJakub Kicinski
91*14474950SJakub Kicinskichip
92*14474950SJakub Kicinski	- this is just a delimiter to make sccinit a bit simpler to
93*14474950SJakub Kicinski	  program. A parameter has no effect.
94*14474950SJakub Kicinski
95*14474950SJakub Kicinskidata_a
96*14474950SJakub Kicinski	- the address of the data port A of this Z8530 (needed)
97*14474950SJakub Kicinskictrl_a
98*14474950SJakub Kicinski	- the address of the control port A (needed)
99*14474950SJakub Kicinskidata_b
100*14474950SJakub Kicinski	- the address of the data port B (needed)
101*14474950SJakub Kicinskictrl_b
102*14474950SJakub Kicinski	- the address of the control port B (needed)
103*14474950SJakub Kicinski
104*14474950SJakub Kicinskiirq
105*14474950SJakub Kicinski	- the used IRQ for this chip. Different chips can use different
106*14474950SJakub Kicinski	  IRQs or the same. If they share an interrupt, it needs to be
107*14474950SJakub Kicinski	  specified within one chip-definition only.
108*14474950SJakub Kicinski
109*14474950SJakub Kicinskipclock  - the clock at the PCLK pin of the Z8530 (option, 4915200 is
110*14474950SJakub Kicinski	  default), measured in Hertz
111*14474950SJakub Kicinski
112*14474950SJakub Kicinskiboard
113*14474950SJakub Kicinski	- the "type" of the board:
114*14474950SJakub Kicinski
115*14474950SJakub Kicinski	   =======================  ========
116*14474950SJakub Kicinski	   SCC type                 value
117*14474950SJakub Kicinski	   =======================  ========
118*14474950SJakub Kicinski	   PA0HZP SCC card          PA0HZP
119*14474950SJakub Kicinski	   EAGLE card               EAGLE
120*14474950SJakub Kicinski	   PC100 card               PC100
121*14474950SJakub Kicinski	   PRIMUS-PC (DG9BL) card   PRIMUS
122*14474950SJakub Kicinski	   BayCom (U)SCC card       BAYCOM
123*14474950SJakub Kicinski	   =======================  ========
124*14474950SJakub Kicinski
125*14474950SJakub Kicinskiescc
126*14474950SJakub Kicinski	- if you want support for ESCC chips (8580, 85180, 85280), set
127*14474950SJakub Kicinski	  this to "yes" (option, defaults to "no")
128*14474950SJakub Kicinski
129*14474950SJakub Kicinskivector
130*14474950SJakub Kicinski	- address of the vector latch (aka "intack port") for PA0HZP
131*14474950SJakub Kicinski	  cards. There can be only one vector latch for all chips!
132*14474950SJakub Kicinski	  (option, defaults to 0)
133*14474950SJakub Kicinski
134*14474950SJakub Kicinskispecial
135*14474950SJakub Kicinski	- address of the special function register on several cards.
136*14474950SJakub Kicinski	  (option, defaults to 0)
137*14474950SJakub Kicinski
138*14474950SJakub Kicinskioption  - The value you write into that register (option, default is 0)
139*14474950SJakub Kicinski
140*14474950SJakub KicinskiYou can specify up to four chips (8 channels). If this is not enough,
141*14474950SJakub Kicinskijust change::
142*14474950SJakub Kicinski
143*14474950SJakub Kicinski	#define MAXSCC 4
144*14474950SJakub Kicinski
145*14474950SJakub Kicinskito a higher value.
146*14474950SJakub Kicinski
147*14474950SJakub KicinskiExample for the BAYCOM USCC:
148*14474950SJakub Kicinski----------------------------
149*14474950SJakub Kicinski
150*14474950SJakub Kicinski::
151*14474950SJakub Kicinski
152*14474950SJakub Kicinski	chip    1
153*14474950SJakub Kicinski	data_a  0x300                   # data port A
154*14474950SJakub Kicinski	ctrl_a  0x304                   # control port A
155*14474950SJakub Kicinski	data_b  0x301                   # data port B
156*14474950SJakub Kicinski	ctrl_b  0x305                   # control port B
157*14474950SJakub Kicinski	irq     5                       # IRQ No. 5 (#)
158*14474950SJakub Kicinski	board   BAYCOM                  # hardware type (*)
159*14474950SJakub Kicinski	#
160*14474950SJakub Kicinski	# SCC chip 2
161*14474950SJakub Kicinski	#
162*14474950SJakub Kicinski	chip    2
163*14474950SJakub Kicinski	data_a  0x302
164*14474950SJakub Kicinski	ctrl_a  0x306
165*14474950SJakub Kicinski	data_b  0x303
166*14474950SJakub Kicinski	ctrl_b  0x307
167*14474950SJakub Kicinski	board   BAYCOM
168*14474950SJakub Kicinski
169*14474950SJakub KicinskiAn example for a PA0HZP card:
170*14474950SJakub Kicinski-----------------------------
171*14474950SJakub Kicinski
172*14474950SJakub Kicinski::
173*14474950SJakub Kicinski
174*14474950SJakub Kicinski	chip 1
175*14474950SJakub Kicinski	data_a 0x153
176*14474950SJakub Kicinski	data_b 0x151
177*14474950SJakub Kicinski	ctrl_a 0x152
178*14474950SJakub Kicinski	ctrl_b 0x150
179*14474950SJakub Kicinski	irq 9
180*14474950SJakub Kicinski	pclock 4915200
181*14474950SJakub Kicinski	board PA0HZP
182*14474950SJakub Kicinski	vector 0x168
183*14474950SJakub Kicinski	escc no
184*14474950SJakub Kicinski	#
185*14474950SJakub Kicinski	#
186*14474950SJakub Kicinski	#
187*14474950SJakub Kicinski	chip 2
188*14474950SJakub Kicinski	data_a 0x157
189*14474950SJakub Kicinski	data_b 0x155
190*14474950SJakub Kicinski	ctrl_a 0x156
191*14474950SJakub Kicinski	ctrl_b 0x154
192*14474950SJakub Kicinski	irq 9
193*14474950SJakub Kicinski	pclock 4915200
194*14474950SJakub Kicinski	board PA0HZP
195*14474950SJakub Kicinski	vector 0x168
196*14474950SJakub Kicinski	escc no
197*14474950SJakub Kicinski
198*14474950SJakub KicinskiA DRSI would should probably work with this:
199*14474950SJakub Kicinski--------------------------------------------
200*14474950SJakub Kicinski(actually: two DRSI cards...)
201*14474950SJakub Kicinski
202*14474950SJakub Kicinski::
203*14474950SJakub Kicinski
204*14474950SJakub Kicinski	chip 1
205*14474950SJakub Kicinski	data_a 0x303
206*14474950SJakub Kicinski	data_b 0x301
207*14474950SJakub Kicinski	ctrl_a 0x302
208*14474950SJakub Kicinski	ctrl_b 0x300
209*14474950SJakub Kicinski	irq 7
210*14474950SJakub Kicinski	pclock 4915200
211*14474950SJakub Kicinski	board DRSI
212*14474950SJakub Kicinski	escc no
213*14474950SJakub Kicinski	#
214*14474950SJakub Kicinski	#
215*14474950SJakub Kicinski	#
216*14474950SJakub Kicinski	chip 2
217*14474950SJakub Kicinski	data_a 0x313
218*14474950SJakub Kicinski	data_b 0x311
219*14474950SJakub Kicinski	ctrl_a 0x312
220*14474950SJakub Kicinski	ctrl_b 0x310
221*14474950SJakub Kicinski	irq 7
222*14474950SJakub Kicinski	pclock 4915200
223*14474950SJakub Kicinski	board DRSI
224*14474950SJakub Kicinski	escc no
225*14474950SJakub Kicinski
226*14474950SJakub KicinskiNote that you cannot use the on-board baudrate generator off DRSI
227*14474950SJakub Kicinskicards. Use "mode dpll" for clock source (see below).
228*14474950SJakub Kicinski
229*14474950SJakub KicinskiThis is based on information provided by Mike Bilow (and verified
230*14474950SJakub Kicinskiby Paul Helay)
231*14474950SJakub Kicinski
232*14474950SJakub KicinskiThe utility "gencfg"
233*14474950SJakub Kicinski--------------------
234*14474950SJakub Kicinski
235*14474950SJakub KicinskiIf you only know the parameters for the PE1CHL driver for DOS,
236*14474950SJakub Kicinskirun gencfg. It will generate the correct port addresses (I hope).
237*14474950SJakub KicinskiIts parameters are exactly the same as the ones you use with
238*14474950SJakub Kicinskithe "attach scc" command in net, except that the string "init" must
239*14474950SJakub Kicinskinot appear. Example::
240*14474950SJakub Kicinski
241*14474950SJakub Kicinski	gencfg 2 0x150 4 2 0 1 0x168 9 4915200
242*14474950SJakub Kicinski
243*14474950SJakub Kicinskiwill print a skeleton z8530drv.conf for the OptoSCC to stdout.
244*14474950SJakub Kicinski
245*14474950SJakub Kicinski::
246*14474950SJakub Kicinski
247*14474950SJakub Kicinski	gencfg 2 0x300 2 4 5 -4 0 7 4915200 0x10
248*14474950SJakub Kicinski
249*14474950SJakub Kicinskidoes the same for the BAYCOM USCC card. In my opinion it is much easier
250*14474950SJakub Kicinskito edit scc_config.h...
251*14474950SJakub Kicinski
252*14474950SJakub Kicinski
253*14474950SJakub Kicinski1.2.2 channel configuration
254*14474950SJakub Kicinski===========================
255*14474950SJakub Kicinski
256*14474950SJakub KicinskiThe channel definition is divided into three sub sections for each
257*14474950SJakub Kicinskichannel:
258*14474950SJakub Kicinski
259*14474950SJakub KicinskiAn example for scc0::
260*14474950SJakub Kicinski
261*14474950SJakub Kicinski	# DEVICE
262*14474950SJakub Kicinski
263*14474950SJakub Kicinski	device scc0	# the device for the following params
264*14474950SJakub Kicinski
265*14474950SJakub Kicinski	# MODEM / BUFFERS
266*14474950SJakub Kicinski
267*14474950SJakub Kicinski	speed 1200		# the default baudrate
268*14474950SJakub Kicinski	clock dpll		# clock source:
269*14474950SJakub Kicinski				# 	dpll     = normal half duplex operation
270*14474950SJakub Kicinski				# 	external = MODEM provides own Rx/Tx clock
271*14474950SJakub Kicinski				#	divider  = use full duplex divider if
272*14474950SJakub Kicinski				#		   installed (1)
273*14474950SJakub Kicinski	mode nrzi		# HDLC encoding mode
274*14474950SJakub Kicinski				#	nrzi = 1k2 MODEM, G3RUH 9k6 MODEM
275*14474950SJakub Kicinski				#	nrz  = DF9IC 9k6 MODEM
276*14474950SJakub Kicinski				#
277*14474950SJakub Kicinski	bufsize	384		# size of buffers. Note that this must include
278*14474950SJakub Kicinski				# the AX.25 header, not only the data field!
279*14474950SJakub Kicinski				# (optional, defaults to 384)
280*14474950SJakub Kicinski
281*14474950SJakub Kicinski	# KISS (Layer 1)
282*14474950SJakub Kicinski
283*14474950SJakub Kicinski	txdelay 36              # (see chapter 1.4)
284*14474950SJakub Kicinski	persist 64
285*14474950SJakub Kicinski	slot    8
286*14474950SJakub Kicinski	tail    8
287*14474950SJakub Kicinski	fulldup 0
288*14474950SJakub Kicinski	wait    12
289*14474950SJakub Kicinski	min     3
290*14474950SJakub Kicinski	maxkey  7
291*14474950SJakub Kicinski	idle    3
292*14474950SJakub Kicinski	maxdef  120
293*14474950SJakub Kicinski	group   0
294*14474950SJakub Kicinski	txoff   off
295*14474950SJakub Kicinski	softdcd on
296*14474950SJakub Kicinski	slip    off
297*14474950SJakub Kicinski
298*14474950SJakub KicinskiThe order WITHIN these sections is unimportant. The order OF these
299*14474950SJakub Kicinskisections IS important. The MODEM parameters are set with the first
300*14474950SJakub Kicinskirecognized KISS parameter...
301*14474950SJakub Kicinski
302*14474950SJakub KicinskiPlease note that you can initialize the board only once after boot
303*14474950SJakub Kicinski(or insmod). You can change all parameters but "mode" and "clock"
304*14474950SJakub Kicinskilater with the Sccparam program or through KISS. Just to avoid
305*14474950SJakub Kicinskisecurity holes...
306*14474950SJakub Kicinski
307*14474950SJakub Kicinski(1) this divider is usually mounted on the SCC-PBC (PA0HZP) or not
308*14474950SJakub Kicinski    present at all (BayCom). It feeds back the output of the DPLL
309*14474950SJakub Kicinski    (digital pll) as transmit clock. Using this mode without a divider
310*14474950SJakub Kicinski    installed will normally result in keying the transceiver until
311*14474950SJakub Kicinski    maxkey expires --- of course without sending anything (useful).
312*14474950SJakub Kicinski
313*14474950SJakub Kicinski2. Attachment of a channel by your AX.25 software
314*14474950SJakub Kicinski=================================================
315*14474950SJakub Kicinski
316*14474950SJakub Kicinski2.1 Kernel AX.25
317*14474950SJakub Kicinski================
318*14474950SJakub Kicinski
319*14474950SJakub KicinskiTo set up an AX.25 device you can simply type::
320*14474950SJakub Kicinski
321*14474950SJakub Kicinski	ifconfig scc0 44.128.1.1 hw ax25 dl0tha-7
322*14474950SJakub Kicinski
323*14474950SJakub KicinskiThis will create a network interface with the IP number 44.128.20.107
324*14474950SJakub Kicinskiand the callsign "dl0tha". If you do not have any IP number (yet) you
325*14474950SJakub Kicinskican use any of the 44.128.0.0 network. Note that you do not need
326*14474950SJakub Kicinskiaxattach. The purpose of axattach (like slattach) is to create a KISS
327*14474950SJakub Kicinskinetwork device linked to a TTY. Please read the documentation of the
328*14474950SJakub Kicinskiax25-utils and the AX.25-HOWTO to learn how to set the parameters of
329*14474950SJakub Kicinskithe kernel AX.25.
330*14474950SJakub Kicinski
331*14474950SJakub Kicinski2.2 NOS, NET and TFKISS
332*14474950SJakub Kicinski=======================
333*14474950SJakub Kicinski
334*14474950SJakub KicinskiSince the TTY driver (aka KISS TNC emulation) is gone you need
335*14474950SJakub Kicinskito emulate the old behaviour. The cost of using these programs is
336*14474950SJakub Kicinskithat you probably need to compile the kernel AX.25, regardless of whether
337*14474950SJakub Kicinskiyou actually use it or not. First setup your /etc/ax25/axports,
338*14474950SJakub Kicinskifor example::
339*14474950SJakub Kicinski
340*14474950SJakub Kicinski	9k6	dl0tha-9  9600  255 4 9600 baud port (scc3)
341*14474950SJakub Kicinski	axlink	dl0tha-15 38400 255 4 Link to NOS
342*14474950SJakub Kicinski
343*14474950SJakub KicinskiNow "ifconfig" the scc device::
344*14474950SJakub Kicinski
345*14474950SJakub Kicinski	ifconfig scc3 44.128.1.1 hw ax25 dl0tha-9
346*14474950SJakub Kicinski
347*14474950SJakub KicinskiYou can now axattach a pseudo-TTY::
348*14474950SJakub Kicinski
349*14474950SJakub Kicinski	axattach /dev/ptys0 axlink
350*14474950SJakub Kicinski
351*14474950SJakub Kicinskiand start your NOS and attach /dev/ptys0 there. The problem is that
352*14474950SJakub KicinskiNOS is reachable only via digipeating through the kernel AX.25
353*14474950SJakub Kicinski(disastrous on a DAMA controlled channel). To solve this problem,
354*14474950SJakub Kicinskiconfigure "rxecho" to echo the incoming frames from "9k6" to "axlink"
355*14474950SJakub Kicinskiand outgoing frames from "axlink" to "9k6" and start::
356*14474950SJakub Kicinski
357*14474950SJakub Kicinski	rxecho
358*14474950SJakub Kicinski
359*14474950SJakub KicinskiOr simply use "kissbridge" coming with z8530drv-utils::
360*14474950SJakub Kicinski
361*14474950SJakub Kicinski	ifconfig scc3 hw ax25 dl0tha-9
362*14474950SJakub Kicinski	kissbridge scc3 /dev/ptys0
363*14474950SJakub Kicinski
364*14474950SJakub Kicinski
365*14474950SJakub Kicinski3. Adjustment and Display of parameters
366*14474950SJakub Kicinski=======================================
367*14474950SJakub Kicinski
368*14474950SJakub Kicinski3.1 Displaying SCC Parameters:
369*14474950SJakub Kicinski==============================
370*14474950SJakub Kicinski
371*14474950SJakub KicinskiOnce a SCC channel has been attached, the parameter settings and
372*14474950SJakub Kicinskisome statistic information can be shown using the param program::
373*14474950SJakub Kicinski
374*14474950SJakub Kicinski	dl1bke-u:~$ sccstat scc0
375*14474950SJakub Kicinski
376*14474950SJakub Kicinski	Parameters:
377*14474950SJakub Kicinski
378*14474950SJakub Kicinski	speed       : 1200 baud
379*14474950SJakub Kicinski	txdelay     : 36
380*14474950SJakub Kicinski	persist     : 255
381*14474950SJakub Kicinski	slottime    : 0
382*14474950SJakub Kicinski	txtail      : 8
383*14474950SJakub Kicinski	fulldup     : 1
384*14474950SJakub Kicinski	waittime    : 12
385*14474950SJakub Kicinski	mintime     : 3 sec
386*14474950SJakub Kicinski	maxkeyup    : 7 sec
387*14474950SJakub Kicinski	idletime    : 3 sec
388*14474950SJakub Kicinski	maxdefer    : 120 sec
389*14474950SJakub Kicinski	group       : 0x00
390*14474950SJakub Kicinski	txoff       : off
391*14474950SJakub Kicinski	softdcd     : on
392*14474950SJakub Kicinski	SLIP        : off
393*14474950SJakub Kicinski
394*14474950SJakub Kicinski	Status:
395*14474950SJakub Kicinski
396*14474950SJakub Kicinski	HDLC                  Z8530           Interrupts         Buffers
397*14474950SJakub Kicinski	-----------------------------------------------------------------------
398*14474950SJakub Kicinski	Sent       :     273  RxOver :     0  RxInts :   125074  Size    :  384
399*14474950SJakub Kicinski	Received   :    1095  TxUnder:     0  TxInts :     4684  NoSpace :    0
400*14474950SJakub Kicinski	RxErrors   :    1591                  ExInts :    11776
401*14474950SJakub Kicinski	TxErrors   :       0                  SpInts :     1503
402*14474950SJakub Kicinski	Tx State   :    idle
403*14474950SJakub Kicinski
404*14474950SJakub Kicinski
405*14474950SJakub KicinskiThe status info shown is:
406*14474950SJakub Kicinski
407*14474950SJakub Kicinski==============	==============================================================
408*14474950SJakub KicinskiSent		number of frames transmitted
409*14474950SJakub KicinskiReceived	number of frames received
410*14474950SJakub KicinskiRxErrors	number of receive errors (CRC, ABORT)
411*14474950SJakub KicinskiTxErrors	number of discarded Tx frames (due to various reasons)
412*14474950SJakub KicinskiTx State	status of the Tx interrupt handler: idle/busy/active/tail (2)
413*14474950SJakub KicinskiRxOver		number of receiver overruns
414*14474950SJakub KicinskiTxUnder		number of transmitter underruns
415*14474950SJakub KicinskiRxInts		number of receiver interrupts
416*14474950SJakub KicinskiTxInts		number of transmitter interrupts
417*14474950SJakub KicinskiEpInts		number of receiver special condition interrupts
418*14474950SJakub KicinskiSpInts		number of external/status interrupts
419*14474950SJakub KicinskiSize		maximum size of an AX.25 frame (*with* AX.25 headers!)
420*14474950SJakub KicinskiNoSpace		number of times a buffer could not get allocated
421*14474950SJakub Kicinski==============	==============================================================
422*14474950SJakub Kicinski
423*14474950SJakub KicinskiAn overrun is abnormal. If lots of these occur, the product of
424*14474950SJakub Kicinskibaudrate and number of interfaces is too high for the processing
425*14474950SJakub Kicinskipower of your computer. NoSpace errors are unlikely to be caused by the
426*14474950SJakub Kicinskidriver or the kernel AX.25.
427*14474950SJakub Kicinski
428*14474950SJakub Kicinski
429*14474950SJakub Kicinski3.2 Setting Parameters
430*14474950SJakub Kicinski======================
431*14474950SJakub Kicinski
432*14474950SJakub Kicinski
433*14474950SJakub KicinskiThe setting of parameters of the emulated KISS TNC is done in the
434*14474950SJakub Kicinskisame way in the SCC driver. You can change parameters by using
435*14474950SJakub Kicinskithe kissparms program from the ax25-utils package or use the program
436*14474950SJakub Kicinski"sccparam"::
437*14474950SJakub Kicinski
438*14474950SJakub Kicinski     sccparam <device> <paramname> <decimal-|hexadecimal value>
439*14474950SJakub Kicinski
440*14474950SJakub KicinskiYou can change the following parameters:
441*14474950SJakub Kicinski
442*14474950SJakub Kicinski===========   =====
443*14474950SJakub Kicinskiparam	      value
444*14474950SJakub Kicinski===========   =====
445*14474950SJakub Kicinskispeed         1200
446*14474950SJakub Kicinskitxdelay       36
447*14474950SJakub Kicinskipersist       255
448*14474950SJakub Kicinskislottime      0
449*14474950SJakub Kicinskitxtail        8
450*14474950SJakub Kicinskifulldup       1
451*14474950SJakub Kicinskiwaittime      12
452*14474950SJakub Kicinskimintime       3
453*14474950SJakub Kicinskimaxkeyup      7
454*14474950SJakub Kicinskiidletime      3
455*14474950SJakub Kicinskimaxdefer      120
456*14474950SJakub Kicinskigroup         0x00
457*14474950SJakub Kicinskitxoff         off
458*14474950SJakub Kicinskisoftdcd       on
459*14474950SJakub KicinskiSLIP          off
460*14474950SJakub Kicinski===========   =====
461*14474950SJakub Kicinski
462*14474950SJakub Kicinski
463*14474950SJakub KicinskiThe parameters have the following meaning:
464*14474950SJakub Kicinski
465*14474950SJakub Kicinskispeed:
466*14474950SJakub Kicinski     The baudrate on this channel in bits/sec
467*14474950SJakub Kicinski
468*14474950SJakub Kicinski     Example: sccparam /dev/scc3 speed 9600
469*14474950SJakub Kicinski
470*14474950SJakub Kicinskitxdelay:
471*14474950SJakub Kicinski     The delay (in units of 10 ms) after keying of the
472*14474950SJakub Kicinski     transmitter, until the first byte is sent. This is usually
473*14474950SJakub Kicinski     called "TXDELAY" in a TNC.  When 0 is specified, the driver
474*14474950SJakub Kicinski     will just wait until the CTS signal is asserted. This
475*14474950SJakub Kicinski     assumes the presence of a timer or other circuitry in the
476*14474950SJakub Kicinski     MODEM and/or transmitter, that asserts CTS when the
477*14474950SJakub Kicinski     transmitter is ready for data.
478*14474950SJakub Kicinski     A normal value of this parameter is 30-36.
479*14474950SJakub Kicinski
480*14474950SJakub Kicinski     Example: sccparam /dev/scc0 txd 20
481*14474950SJakub Kicinski
482*14474950SJakub Kicinskipersist:
483*14474950SJakub Kicinski     This is the probability that the transmitter will be keyed
484*14474950SJakub Kicinski     when the channel is found to be free.  It is a value from 0
485*14474950SJakub Kicinski     to 255, and the probability is (value+1)/256.  The value
486*14474950SJakub Kicinski     should be somewhere near 50-60, and should be lowered when
487*14474950SJakub Kicinski     the channel is used more heavily.
488*14474950SJakub Kicinski
489*14474950SJakub Kicinski     Example: sccparam /dev/scc2 persist 20
490*14474950SJakub Kicinski
491*14474950SJakub Kicinskislottime:
492*14474950SJakub Kicinski     This is the time between samples of the channel. It is
493*14474950SJakub Kicinski     expressed in units of 10 ms.  About 200-300 ms (value 20-30)
494*14474950SJakub Kicinski     seems to be a good value.
495*14474950SJakub Kicinski
496*14474950SJakub Kicinski     Example: sccparam /dev/scc0 slot 20
497*14474950SJakub Kicinski
498*14474950SJakub Kicinskitail:
499*14474950SJakub Kicinski     The time the transmitter will remain keyed after the last
500*14474950SJakub Kicinski     byte of a packet has been transferred to the SCC. This is
501*14474950SJakub Kicinski     necessary because the CRC and a flag still have to leave the
502*14474950SJakub Kicinski     SCC before the transmitter is keyed down. The value depends
503*14474950SJakub Kicinski     on the baudrate selected.  A few character times should be
504*14474950SJakub Kicinski     sufficient, e.g. 40ms at 1200 baud. (value 4)
505*14474950SJakub Kicinski     The value of this parameter is in 10 ms units.
506*14474950SJakub Kicinski
507*14474950SJakub Kicinski     Example: sccparam /dev/scc2 4
508*14474950SJakub Kicinski
509*14474950SJakub Kicinskifull:
510*14474950SJakub Kicinski     The full-duplex mode switch. This can be one of the following
511*14474950SJakub Kicinski     values:
512*14474950SJakub Kicinski
513*14474950SJakub Kicinski     0:   The interface will operate in CSMA mode (the normal
514*14474950SJakub Kicinski	  half-duplex packet radio operation)
515*14474950SJakub Kicinski     1:   Fullduplex mode, i.e. the transmitter will be keyed at
516*14474950SJakub Kicinski	  any time, without checking the received carrier.  It
517*14474950SJakub Kicinski	  will be unkeyed when there are no packets to be sent.
518*14474950SJakub Kicinski     2:   Like 1, but the transmitter will remain keyed, also
519*14474950SJakub Kicinski	  when there are no packets to be sent.  Flags will be
520*14474950SJakub Kicinski	  sent in that case, until a timeout (parameter 10)
521*14474950SJakub Kicinski	  occurs.
522*14474950SJakub Kicinski
523*14474950SJakub Kicinski     Example: sccparam /dev/scc0 fulldup off
524*14474950SJakub Kicinski
525*14474950SJakub Kicinskiwait:
526*14474950SJakub Kicinski     The initial waittime before any transmit attempt, after the
527*14474950SJakub Kicinski     frame has been queue for transmit.  This is the length of
528*14474950SJakub Kicinski     the first slot in CSMA mode.  In full duplex modes it is
529*14474950SJakub Kicinski     set to 0 for maximum performance.
530*14474950SJakub Kicinski     The value of this parameter is in 10 ms units.
531*14474950SJakub Kicinski
532*14474950SJakub Kicinski     Example: sccparam /dev/scc1 wait 4
533*14474950SJakub Kicinski
534*14474950SJakub Kicinskimaxkey:
535*14474950SJakub Kicinski     The maximal time the transmitter will be keyed to send
536*14474950SJakub Kicinski     packets, in seconds.  This can be useful on busy CSMA
537*14474950SJakub Kicinski     channels, to avoid "getting a bad reputation" when you are
538*14474950SJakub Kicinski     generating a lot of traffic.  After the specified time has
539*14474950SJakub Kicinski     elapsed, no new frame will be started. Instead, the trans-
540*14474950SJakub Kicinski     mitter will be switched off for a specified time (parameter
541*14474950SJakub Kicinski     min), and then the selected algorithm for keyup will be
542*14474950SJakub Kicinski     started again.
543*14474950SJakub Kicinski     The value 0 as well as "off" will disable this feature,
544*14474950SJakub Kicinski     and allow infinite transmission time.
545*14474950SJakub Kicinski
546*14474950SJakub Kicinski     Example: sccparam /dev/scc0 maxk 20
547*14474950SJakub Kicinski
548*14474950SJakub Kicinskimin:
549*14474950SJakub Kicinski     This is the time the transmitter will be switched off when
550*14474950SJakub Kicinski     the maximum transmission time is exceeded.
551*14474950SJakub Kicinski
552*14474950SJakub Kicinski     Example: sccparam /dev/scc3 min 10
553*14474950SJakub Kicinski
554*14474950SJakub Kicinskiidle:
555*14474950SJakub Kicinski     This parameter specifies the maximum idle time in full duplex
556*14474950SJakub Kicinski     2 mode, in seconds.  When no frames have been sent for this
557*14474950SJakub Kicinski     time, the transmitter will be keyed down.  A value of 0 is
558*14474950SJakub Kicinski     has same result as the fullduplex mode 1. This parameter
559*14474950SJakub Kicinski     can be disabled.
560*14474950SJakub Kicinski
561*14474950SJakub Kicinski     Example: sccparam /dev/scc2 idle off	# transmit forever
562*14474950SJakub Kicinski
563*14474950SJakub Kicinskimaxdefer
564*14474950SJakub Kicinski     This is the maximum time (in seconds) to wait for a free channel
565*14474950SJakub Kicinski     to send. When this timer expires the transmitter will be keyed
566*14474950SJakub Kicinski     IMMEDIATELY. If you love to get trouble with other users you
567*14474950SJakub Kicinski     should set this to a very low value ;-)
568*14474950SJakub Kicinski
569*14474950SJakub Kicinski     Example: sccparam /dev/scc0 maxdefer 240	# 2 minutes
570*14474950SJakub Kicinski
571*14474950SJakub Kicinski
572*14474950SJakub Kicinskitxoff:
573*14474950SJakub Kicinski     When this parameter has the value 0, the transmission of packets
574*14474950SJakub Kicinski     is enable. Otherwise it is disabled.
575*14474950SJakub Kicinski
576*14474950SJakub Kicinski     Example: sccparam /dev/scc2 txoff on
577*14474950SJakub Kicinski
578*14474950SJakub Kicinskigroup:
579*14474950SJakub Kicinski     It is possible to build special radio equipment to use more than
580*14474950SJakub Kicinski     one frequency on the same band, e.g. using several receivers and
581*14474950SJakub Kicinski     only one transmitter that can be switched between frequencies.
582*14474950SJakub Kicinski     Also, you can connect several radios that are active on the same
583*14474950SJakub Kicinski     band.  In these cases, it is not possible, or not a good idea, to
584*14474950SJakub Kicinski     transmit on more than one frequency.  The SCC driver provides a
585*14474950SJakub Kicinski     method to lock transmitters on different interfaces, using the
586*14474950SJakub Kicinski     "param <interface> group <x>" command.  This will only work when
587*14474950SJakub Kicinski     you are using CSMA mode (parameter full = 0).
588*14474950SJakub Kicinski
589*14474950SJakub Kicinski     The number <x> must be 0 if you want no group restrictions, and
590*14474950SJakub Kicinski     can be computed as follows to create restricted groups:
591*14474950SJakub Kicinski     <x> is the sum of some OCTAL numbers:
592*14474950SJakub Kicinski
593*14474950SJakub Kicinski
594*14474950SJakub Kicinski     ===  =======================================================
595*14474950SJakub Kicinski     200  This transmitter will only be keyed when all other
596*14474950SJakub Kicinski	  transmitters in the group are off.
597*14474950SJakub Kicinski     100  This transmitter will only be keyed when the carrier
598*14474950SJakub Kicinski	  detect of all other interfaces in the group is off.
599*14474950SJakub Kicinski     0xx  A byte that can be used to define different groups.
600*14474950SJakub Kicinski	  Interfaces are in the same group, when the logical AND
601*14474950SJakub Kicinski	  between their xx values is nonzero.
602*14474950SJakub Kicinski     ===  =======================================================
603*14474950SJakub Kicinski
604*14474950SJakub Kicinski     Examples:
605*14474950SJakub Kicinski
606*14474950SJakub Kicinski     When 2 interfaces use group 201, their transmitters will never be
607*14474950SJakub Kicinski     keyed at the same time.
608*14474950SJakub Kicinski
609*14474950SJakub Kicinski     When 2 interfaces use group 101, the transmitters will only key
610*14474950SJakub Kicinski     when both channels are clear at the same time.  When group 301,
611*14474950SJakub Kicinski     the transmitters will not be keyed at the same time.
612*14474950SJakub Kicinski
613*14474950SJakub Kicinski     Don't forget to convert the octal numbers into decimal before
614*14474950SJakub Kicinski     you set the parameter.
615*14474950SJakub Kicinski
616*14474950SJakub Kicinski     Example: (to be written)
617*14474950SJakub Kicinski
618*14474950SJakub Kicinskisoftdcd:
619*14474950SJakub Kicinski     use a software dcd instead of the real one... Useful for a very
620*14474950SJakub Kicinski     slow squelch.
621*14474950SJakub Kicinski
622*14474950SJakub Kicinski     Example: sccparam /dev/scc0 soft on
623*14474950SJakub Kicinski
624*14474950SJakub Kicinski
625*14474950SJakub Kicinski4. Problems
626*14474950SJakub Kicinski===========
627*14474950SJakub Kicinski
628*14474950SJakub KicinskiIf you have tx-problems with your BayCom USCC card please check
629*14474950SJakub Kicinskithe manufacturer of the 8530. SGS chips have a slightly
630*14474950SJakub Kicinskidifferent timing. Try Zilog...  A solution is to write to register 8
631*14474950SJakub Kicinskiinstead to the data port, but this won't work with the ESCC chips.
632*14474950SJakub Kicinski*SIGH!*
633*14474950SJakub Kicinski
634*14474950SJakub KicinskiA very common problem is that the PTT locks until the maxkeyup timer
635*14474950SJakub Kicinskiexpires, although interrupts and clock source are correct. In most
636*14474950SJakub Kicinskicases compiling the driver with CONFIG_SCC_DELAY (set with
637*14474950SJakub Kicinskimake config) solves the problems. For more hints read the (pseudo) FAQ
638*14474950SJakub Kicinskiand the documentation coming with z8530drv-utils.
639*14474950SJakub Kicinski
640*14474950SJakub KicinskiI got reports that the driver has problems on some 386-based systems.
641*14474950SJakub Kicinski(i.e. Amstrad) Those systems have a bogus AT bus timing which will
642*14474950SJakub Kicinskilead to delayed answers on interrupts. You can recognize these
643*14474950SJakub Kicinskiproblems by looking at the output of Sccstat for the suspected
644*14474950SJakub Kicinskiport. If it shows under- and overruns you own such a system.
645*14474950SJakub Kicinski
646*14474950SJakub KicinskiDelayed processing of received data: This depends on
647*14474950SJakub Kicinski
648*14474950SJakub Kicinski- the kernel version
649*14474950SJakub Kicinski
650*14474950SJakub Kicinski- kernel profiling compiled or not
651*14474950SJakub Kicinski
652*14474950SJakub Kicinski- a high interrupt load
653*14474950SJakub Kicinski
654*14474950SJakub Kicinski- a high load of the machine --- running X, Xmorph, XV and Povray,
655*14474950SJakub Kicinski  while compiling the kernel... hmm ... even with 32 MB RAM ...  ;-)
656*14474950SJakub Kicinski  Or running a named for the whole .ampr.org domain on an 8 MB
657*14474950SJakub Kicinski  box...
658*14474950SJakub Kicinski
659*14474950SJakub Kicinski- using information from rxecho or kissbridge.
660*14474950SJakub Kicinski
661*14474950SJakub KicinskiKernel panics: please read /linux/README and find out if it
662*14474950SJakub Kicinskireally occurred within the scc driver.
663*14474950SJakub Kicinski
664*14474950SJakub KicinskiIf you cannot solve a problem, send me
665*14474950SJakub Kicinski
666*14474950SJakub Kicinski- a description of the problem,
667*14474950SJakub Kicinski- information on your hardware (computer system, scc board, modem)
668*14474950SJakub Kicinski- your kernel version
669*14474950SJakub Kicinski- the output of cat /proc/net/z8530
670*14474950SJakub Kicinski
671*14474950SJakub Kicinski4. Thor RLC100
672*14474950SJakub Kicinski==============
673*14474950SJakub Kicinski
674*14474950SJakub KicinskiMysteriously this board seems not to work with the driver. Anyone
675*14474950SJakub Kicinskigot it up-and-running?
676*14474950SJakub Kicinski
677*14474950SJakub Kicinski
678*14474950SJakub KicinskiMany thanks to Linus Torvalds and Alan Cox for including the driver
679*14474950SJakub Kicinskiin the Linux standard distribution and their support.
680*14474950SJakub Kicinski
681*14474950SJakub Kicinski::
682*14474950SJakub Kicinski
683*14474950SJakub Kicinski	Joerg Reuter	ampr-net: dl1bke@db0pra.ampr.org
684*14474950SJakub Kicinski			AX-25   : DL1BKE @ DB0ABH.#BAY.DEU.EU
685*14474950SJakub Kicinski			Internet: jreuter@yaina.de
686*14474950SJakub Kicinski			WWW     : http://yaina.de/jreuter
687