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