1 README for the ISDN-subsystem
7 This README describes how to set up and how to use the different parts
10 For using the ISDN-subsystem, some additional userlevel programs are
11 necessary. Those programs and some contributed utilities are available
16 /pub/isdn4linux/isdn4k-utils-<VersionNumber>.tar.gz
19 We also have set up a mailing-list:
21 The isdn4linux-project originates in Germany, and therefore by historical
22 reasons, the mailing-list's primary language is german. However mails
23 written in english have been welcome all the time.
25 to subscribe: write a email to majordomo@hub-wue.franken.de,
26 Subject irrelevant, in the message body:
27 subscribe isdn4linux <your_email_address>
29 To write to the mailing-list, write to isdn4linux@hub-wue.franken.de
31 This mailinglist is bidirectionally gated to the newsgroup
33 de.alt.comm.isdn4linux
35 There is also a well maintained FAQ (both english and german) available
36 at ftp.franken.de in /pub/isdn4linux/FAQ/
37 This FAQ is also available at http://www.lrz-muenchen.de/~ui161ab/www/isdn/
41 In the following Text, the terms MSN and EAZ are used.
43 MSN is the abbreviation for (M)ultiple(S)ubscriber(N)umber, and applies
44 to Euro(EDSS1)-type lines. Usually it is simply the phone number.
46 EAZ is the abbreviation of (E)ndgeraete(A)uswahl(Z)iffer and
47 applies to German 1TR6-type lines. This is a one-digit string,
48 simply appended to the base phone number
50 The internal handling is nearly identical, so replace the appropriate
51 term to that one, which applies to your local ISDN-environment.
53 When the link-level-module isdn.o is loaded, it supports up to 16
54 low-level-modules with up to 64 channels. (The number 64 is arbitrarily
55 chosen and can be configured at compile-time --ISDN_MAX in isdn.h).
56 A low-level-driver can register itself through an interface (which is
57 defined in isdnif.h) and gets assigned a slot.
58 The following char-devices are made available for each channel:
60 A raw-control-device with the following functions:
61 write: raw D-channel-messages (format: depends on driver).
62 read: raw D-channel-messages (format: depends on driver).
63 ioctl: depends on driver, i.e. for the ICN-driver, the base-address of
64 the ports and the shared memory on the card can be set and read
65 also the boot-code and the protocol software can be loaded into
68 O N L Y !!! for debugging (no locking against other devices):
69 One raw-data-device with the following functions:
70 write: data to B-channel.
71 read: data from B-channel.
73 In addition the following devices are made available:
75 128 tty-devices (64 cuix and 64 ttyIx) with integrated modem-emulator:
76 The functionality is almost the same as that of a serial device
77 (the line-discs are handled by the kernel), which lets you run
78 SLIP, CSLIP and asynchronous PPP through the devices. We have tested
79 Seyon, minicom, CSLIP (uri-dip) PPP and mgetty (compiled with NO_FAX),
82 The modem-emulation supports the following:
85 ATA Answer incoming call.
86 ATD<No.> Dial, the number may contain:
88 the latter are ignored until 'S'.
89 The 'S' must precede the number, if
90 the line is a SPV (German 1TR6).
92 ATE1 Echo on (default).
94 ATH1 Off hook (ignored).
96 ATI Return "ISDN for Linux...".
99 ATI2 Report of last connection.
100 ATO On line (data mode).
101 ATQ0 Enable result codes (default).
102 ATQ1 Disable result codes (default).
103 ATSx=y Set register x to y.
104 ATSx? Show contents of register x.
105 ATV0 Numeric responses.
106 ATV1 English responses (default).
107 ATZ Load registers and EAZ/MSN from Profile.
108 AT&Bx Set Send-Packet-size to x (max. 4000)
109 The real packet-size may be limited by the
110 low-level-driver used. e.g. the HiSax-Module-
111 limit is 2000. You will get NO Error-Message,
112 if you set it to higher values, because at the
113 time of giving this command the corresponding
114 driver may not be selected (see "Automatic
115 Assignment") however the size of outgoing packets
116 will be limited correctly.
118 AT&D2 DTR-low-edge: Hang up and return to
119 command mode (default).
120 AT&D3 Same as AT&D2 but also resets all registers.
121 AT&Ex Set the EAZ/MSN for this channel to x.
122 AT&F Reset all registers and profile to "factory-defaults"
123 AT&Rx Select V.110 bitrate adaption.
124 This command enables V.110 protocol with 9600 baud
125 (x=9600), 19200 baud (x=19200) or 38400 baud
126 (x=38400). A value of x=0 disables V.110 switching
127 back to default X.75. This command sets the following
129 Reg 14 (Layer-2 protocol):
135 Reg 19 (Additional Service Indicator):
140 Note on value in Reg 19:
141 There is _NO_ common convention for 38400 baud.
142 The value 198 is choosen arbitrarily. Users
143 _MUST_ negotiate this value before establishing
145 AT&Sx Set window-size (x = 1..8) (not yet implemented)
146 AT&V Show all settings.
147 AT&W0 Write registers and EAZ/MSN to profile. See also
148 iprofd (5.c in this README).
149 AT&X0 BTX-mode and T.70-mode off (default)
150 AT&X1 BTX-mode on. (S13.1=1, S13.5=0 S14=0, S16=7, S18=7, S19=0)
151 AT&X2 T.70-mode on. (S13.1=1, S13.5=1, S14=0, S16=7, S18=7, S19=0)
152 AT+Rx Resume a suspended call with CallID x (x = 1,2,3...)
153 AT+Sx Suspend a call with CallID x (x = 1,2,3...)
155 For voice-mode commands refer to README.audio
157 1.3.2 Escape sequence:
158 During a connection, the emulation reacts just like
159 a normal modem to the escape sequence <DELAY>+++<DELAY>.
160 (The escape character - default '+' - can be set in the
162 The DELAY must at least be 1.5 seconds long and delay
163 between the escape characters must not exceed 0.5 seconds.
167 Nr. Default Description
168 0 0 Answer on ring number.
169 (no auto-answer if S0=0).
171 2 43 Escape character.
172 (a value >= 128 disables the escape sequence).
173 3 13 Carriage return character (ASCII).
174 4 10 Line feed character (ASCII).
175 5 8 Backspace character (ASCII).
176 6 3 Delay in seconds before dialing.
177 7 60 Wait for carrier.
178 8 2 Pause time for comma (ignored)
179 9 6 Carrier detect time (ignored)
180 10 7 Carrier loss to disconnect time (ignored).
181 11 70 Touch tone timing (ignored).
182 12 69 Bit coded register:
183 Bit 0: 0 = Suppress response messages.
184 1 = Show response messages.
185 Bit 1: 0 = English response messages.
186 1 = Numeric response messages.
189 Bit 3 0 = DCD always on.
190 1 = DCD follows carrier.
191 Bit 4 0 = CTS follows RTS
192 1 = Ignore RTS, CTS always on.
193 Bit 5 0 = return to command mode on DTR low.
194 1 = Same as 0 but also resets all
196 See also register 13, bit 2
197 Bit 6 0 = DSR always on.
198 1 = DSR only on if channel is available.
199 Bit 7 0 = Cisco-PPP-flag-hack off (default).
200 1 = Cisco-PPP-flag-hack on.
201 13 0 Bit coded register:
202 Bit 0: 0 = Use delayed tty-send-algorithm
204 Bit 1: 0 = T.70 protocol (Only for BTX!) off
205 1 = T.70 protocol (Only for BTX!) on
206 Bit 2: 0 = Don't hangup on DTR low.
207 1 = Hangup on DTR low.
208 Bit 3: 0 = Standard response messages
209 1 = Extended response messages
210 Bit 4: 0 = CALLER NUMBER before every RING.
211 1 = CALLER NUMBER after first RING.
212 Bit 5: 0 = T.70 extended protocol off
213 1 = T.70 extended protocol on
214 Bit 6: 0 = Special RUNG Message off
215 1 = Special RUNG Message on
216 "RUNG" is delivered on a ttyI, if
217 an incoming call happened (RING) and
218 the remote party hung up before any
220 Bit 7: 0 = Don't show display messages from net
221 1 = Show display messages from net
222 (S12 Bit 1 must be 0 too)
223 14 0 Layer-2 protocol:
224 0 = X75/LAPB with I-frames
225 1 = X75/LAPB with UI-frames
226 2 = X75/LAPB with BUI-frames
228 4 = Transparent (audio)
230 8 = V.110, 19200 baud
231 9 = V.110, 38400 baud
232 10 = Analog Modem (only if hardware supports this)
233 11 = Fax G3 (only if hardware supports this)
234 15 0 Layer-3 protocol:
236 1 = transparent with audio features (e.g. DSP)
237 2 = Fax G3 (S14 has to be set to 11)
238 16 250 Send-Packet-size/16
239 17 8 Window-size (not yet implemented)
240 18 4 Bit coded register, Service-Octet-1 to accept,
241 or to be used on dialout:
242 Bit 0: Service 1 (audio) when set.
243 Bit 1: Service 5 (BTX) when set.
244 Bit 2: Service 7 (data) when set.
245 Note: It is possible to set more than one
246 bit. In this case, on incoming calls
247 the selected services are accepted,
248 and if the service is "audio", the
249 Layer-2-protocol is automatically
250 changed to 4 regardless of the setting
251 of register 14. On outgoing calls,
252 the most significant 1-bit is chosen to
253 select the outgoing service octet.
255 20 0 Bit coded register (readonly)
256 Service-Octet-1 of last call.
257 Bit mapping is the same as register 18
258 21 0 Bit coded register (readonly)
259 Set on incoming call (during RING) to
260 octet 3 of calling party number IE (Numbering plan)
261 See section 4.5.10 of ITU Q.931
262 22 0 Bit coded register (readonly)
263 Set on incoming call (during RING) to
264 octet 3a of calling party number IE (Screening info)
265 See section 4.5.10 of ITU Q.931
266 23 0 Bit coded register:
267 Bit 0: 0 = Add CPN to RING message off
268 1 = Add CPN to RING message on
270 Last but not least a (at the moment fairly primitive) device to request
271 the line-status (/dev/isdninfo) is made available.
273 Automatic assignment of devices to lines:
275 All inactive physical lines are listening to all EAZs for incoming
276 calls and are NOT assigned to a specific tty or network interface.
277 When an incoming call is detected, the driver looks first for a network
278 interface and then for an opened tty which:
280 1. is configured for the same EAZ.
281 2. has the same protocol settings for the B-channel.
282 3. (only for network interfaces if the security flag is set)
283 contains the caller number in its access list.
284 4. Either the channel is not bound exclusively to another Net-interface, or
285 it is bound AND the other checks apply to exactly this interface.
286 (For usage of the bind-features, refer to the isdnctrl-man-page)
288 Only when a matching interface or tty is found is the call accepted
289 and the "connection" between the low-level-layer and the link-level-layer
290 is established and kept until the end of the connection.
291 In all other cases no connection is established. Isdn4linux can be
292 configured to either do NOTHING in this case (which is useful, if
293 other, external devices with the same EAZ/MSN are connected to the bus)
294 or to reject the call actively. (isdnctrl busreject ...)
296 For an outgoing call, the inactive physical lines are searched.
297 The call is placed on the first physical line, which supports the
298 requested protocols for the B-channel. If a net-interface, however
299 is pre-bound to a channel, this channel is used directly.
301 This makes it possible to configure several network interfaces and ttys
302 for one EAZ, if the network interfaces are set to secure operation.
303 If an incoming call matches one network interface, it gets connected to it.
304 If another incoming call for the same EAZ arrives, which does not match
305 a network interface, the first tty gets a "RING" and so on.
306 As soon as voice gets supported (with the availability of the Diehl-driver),
307 the service-identifier will be evaluated in addition.
309 2 System prerequisites:
313 Always use the latest module utilities. The current version is
314 named in Documentation/Changes. Some old versions of insmod
315 are not capable of setting the driver-Ids correctly.
317 3. Lowlevel-driver configuration.
319 Configuration depends on how the drivers are built. See the
320 README.<yourDriver> for information on driver-specific setup.
324 The major and minor numbers and their names are described in
325 Documentation/devices.txt. The major numbers are:
327 43 for the ISDN-tty's.
328 44 for the ISDN-callout-tty's.
329 45 for control/info/debug devices.
333 a) For some card-types, firmware has to be loaded into the cards, before
334 proceeding with device-independent setup. See README.<yourDriver>
337 b) If you only intend to use ttys, you are nearly ready now.
339 c) If you want to have really permanent "Modem"-settings on disk, you
340 can start the daemon iprofd. Give it a path to a file at the command-
341 line. It will store the profile-settings in this file every time
342 an AT&W0 is performed on any ISDN-tty. If the file already exists,
343 all profiles are initialized from this file. If you want to unload
344 any of the modules, kill iprofd first.
346 d) For networking, continue: Create an interface:
349 e) Set the EAZ (or MSN for Euro-ISDN):
352 (For 1TR6 a single digit is allowed, for Euro-ISDN the number is your
353 real MSN e.g.: Phone-Number)
355 f) Set the number for outgoing calls on the interface:
356 isdnctrl addphone isdn0 out 1234567
357 ... (this can be executed more than once, all assigned numbers are
359 and the number(s) for incoming calls:
360 isdnctrl addphone isdn0 in 1234567
362 g) Set the timeout for hang-up:
363 isdnctrl huptimeout isdn0 <timeout_in_seconds>
365 h) additionally you may activate charge-hang-up (= Hang up before
366 next charge-info, this only works, if your isdn-provider transmits
367 the charge-info during and after the connection):
368 isdnctrl chargehup isdn0 on
370 i) Set the dial mode of the interface:
371 isdnctrl dialmode isdn0 auto
372 "off" means that you (or the system) cannot make any connection
373 (neither incoming or outgoing connections are possible). Use
374 this if you want to be sure that no connections will be made.
375 "auto" means that the interface is in auto-dial mode, and will
376 attempt to make a connection whenever a network data packet needs
377 the interface's link. Note that this can cause unexpected dialouts,
378 and lead to a high phone bill! Some daemons or other pc's that use
379 this interface can cause this.
380 Incoming connections are also possible.
381 "manual" is a dial mode created to prevent the unexpected dialouts.
382 In this mode, the interface will never make any connections on its
383 own. You must explicitly initiate a connection with "isdnctrl dial
384 isdn0". However, after an idle time of no traffic as configured for
385 the huptimeout value with isdnctrl, the connection _will_ be ended.
386 If you don't want any automatic hangup, set the huptimeout value to 0.
387 "manual" is the default.
389 j) Setup the interface with ifconfig as usual, and set a route to it.
391 k) (optional) If you run X11 and have Tcl/Tk-wish version 4.0, you can use
392 the script tools/tcltk/isdnmon. You can add actions for line-status
393 changes. See the comments at the beginning of the script for how to
394 do that. There are other tty-based tools in the tools-subdirectory
395 contributed by Michael Knigge (imon), Volker Götz (imontty) and
396 Andreas Kool (isdnmon).
398 l) For initial testing, you can set the verbose-level to 2 (default: 0).
399 Then all incoming calls are logged, even if they are not addressed
400 to one of the configured net-interfaces:
403 Now you are ready! A ping to the set address should now result in an
404 automatic dial-out (look at syslog kernel-messages).
405 The phone numbers and EAZs can be assigned at any time with isdnctrl.
406 You can add as many interfaces as you like with addif following the
407 directions above. Of course, there may be some limitations. But we have
408 tested as many as 20 interfaces without any problem. However, if you
409 don't give an interface name to addif, the kernel will assign a name
410 which starts with "eth". The number of "eth"-interfaces is limited by
413 5. Additional options for isdnctrl:
415 "isdnctrl secure <InterfaceName> on"
416 Only incoming calls, for which the caller-id is listed in the access
417 list of the interface are accepted. You can add caller-id's With the
418 command "isdnctrl addphone <InterfaceName> in <caller-id>"
419 Euro-ISDN does not transmit the leading '0' of the caller-id for an
420 incoming call, therefore you should configure it accordingly.
421 If the real number for the dialout e.g. is "09311234567" the number
422 to configure here is "9311234567". The pattern-match function
423 works similar to the shell mechanism.
425 ? one arbitrary digit
426 * zero or arbitrary many digits
427 [123] one of the digits in the list
428 [1-5] one digit between '1' and '5'
429 a '^' as the first character in a list inverts the list
432 "isdnctrl secure <InterfaceName> off"
433 Switch off secure operation (default).
435 "isdnctrl ihup <InterfaceName> [on|off]"
436 Switch the hang-up-timer for incoming calls on or off.
438 "isdnctrl eaz <InterfaceName>"
439 Returns the EAZ of an interface.
441 "isdnctrl delphone <InterfaceName> in|out <number>"
442 Deletes a number from one of the access-lists of the interface.
444 "isdnctrl delif <InterfaceName>"
445 Removes the interface (and possible slaves) from the kernel.
446 (You have to unregister it with "ifconfig <InterfaceName> down" before).
448 "isdnctrl callback <InterfaceName> [on|off]"
449 Switches an interface to callback-mode. In this mode, an incoming call
450 will be rejected and after this the remote-station will be called. If
451 you test this feature by using ping, some routers will re-dial very
452 quickly, so that the callback from isdn4linux may not be recognized.
453 In this case use ping with the option -i <sec> to increase the interval
454 between echo-packets.
456 "isdnctrl cbdelay <InterfaceName> [seconds]"
457 Sets the delay (default 5 sec) between an incoming call and start of
458 dialing when callback is enabled.
460 "isdnctrl cbhup <InterfaceName> [on|off]"
461 This enables (default) or disables an active hangup (reject) when getting an
462 incoming call for an interface which is configured for callback.
464 "isdnctrl encap <InterfaceName> <EncapType>"
465 Selects the type of packet-encapsulation. The encapsulation can be changed
466 only while an interface is down.
468 At the moment the following values are supported:
470 rawip (Default) Selects raw-IP-encapsulation. This means, MAC-headers
472 ip IP with type-field. Same as IP but the type-field of the MAC-header
474 x25iface X.25 interface encapsulation (first byte semantics as defined in
475 ../networking/x25-iface.txt). Use this for running the linux
476 X.25 network protocol stack (AF_X25 sockets) on top of isdn.
477 cisco-h A special-mode for communicating with a Cisco, which is configured
479 ethernet No stripping. Packets are sent with full MAC-header.
480 The Ethernet-address of the interface is faked, from its
481 IP-address: fc:fc:i1:i2:i3:i4, where i1-4 are the IP-addr.-values.
482 syncppp Synchronous PPP
484 uihdlc HDLC with UI-frame-header (for use with DOS ISPA, option -h1)
487 NOTE: x25iface encapsulation is currently experimental. Please
488 read README.x25 for further details
491 Watching packets, using standard-tcpdump will fail for all encapsulations
492 except ethernet because tcpdump does not know how to handle packets
493 without MAC-header. A patch for tcpdump is included in the utility-package
496 "isdnctrl l2_prot <InterfaceName> <L2-ProtocolName>"
497 Selects a layer-2-protocol.
498 (With the ICN-driver and the HiSax-driver, "x75i" and "hdlc" is available.
499 With other drivers, "x75ui", "x75bui", "x25dte", "x25dce" may be
500 possible too. See README.x25 for x25 related l2 protocols.)
502 isdnctrl l3_prot <InterfaceName> <L3-ProtocolName>
503 The same for layer-3. (At the moment only "trans" is allowed)
505 "isdnctrl list <InterfaceName>"
506 Shows all parameters of an interface and the charge-info.
507 Try "all" as the interface name.
509 "isdnctrl hangup <InterfaceName>"
510 Forces hangup of an interface.
512 "isdnctrl bind <InterfaceName> <DriverId>,<ChannelNumber> [exclusive]"
513 If you are using more than one ISDN card, it is sometimes necessary to
514 dial out using a specific card or even preserve a specific channel for
515 dialout of a specific net-interface. This can be done with the above
516 command. Replace <DriverId> by whatever you assigned while loading the
517 module. The <ChannelNumber> is counted from zero. The upper limit
518 depends on the card used. At the moment no card supports more than
519 2 channels, so the upper limit is one.
521 "isdnctrl unbind <InterfaceName>"
522 unbinds a previously bound interface.
524 "isdnctrl busreject <DriverId> on|off"
525 If switched on, isdn4linux replies a REJECT to incoming calls, it
526 cannot match to any configured interface.
527 If switched off, nothing happens in this case.
528 You normally should NOT enable this feature, if the ISDN adapter is not
529 the only device connected to the S0-bus. Otherwise it could happen that
530 isdn4linux rejects an incoming call, which belongs to another device on
533 "isdnctrl addslave <InterfaceName> <SlaveName>
534 Creates a slave interface for channel-bundling. Slave interfaces are
535 not seen by the kernel, but their ISDN-part can be configured with
536 isdnctrl as usual. (Phone numbers, EAZ/MSN, timeouts etc.) If more
537 than two channels are to be bundled, feel free to create as many as you
538 want. InterfaceName must be a real interface, NOT a slave. Slave interfaces
539 start dialing, if the master interface resp. the previous slave interface
540 has a load of more than 7000 cps. They hangup if the load goes under 7000
541 cps, according to their "huptimeout"-parameter.
543 "isdnctrl sdelay <InterfaceName> secs."
544 This sets the minimum time an Interface has to be fully loaded, until
545 it sends a dial-request to its slave.
547 "isdnctrl dial <InterfaceName>"
548 Forces an interface to start dialing even if no packets are to be
551 "isdnctrl mapping <DriverId> MSN0,MSN1,MSN2,...MSN9"
552 This installs a mapping table for EAZ<->MSN-mapping for a single line.
553 Missing MSN's have to be given as "-" or can be omitted, if at the end
555 With this command, it's now possible to have an interface listening to
556 mixed 1TR6- and Euro-Type lines. In this case, the interface has to be
557 configured to a 1TR6-type EAZ (one digit). The mapping is also valid
558 for tty-emulation. Seen from the interface/tty-level the mapping
559 CAN be used, however it's possible to use single tty's/interfaces with
560 real MSN's (more digits) also, in which case the mapping will be ignored.
563 You have a 1TR6-type line with base-nr. 1234567 and a Euro-line with
564 MSN's 987654, 987655 and 987656. The DriverId for the Euro-line is "EURO".
566 isdnctrl mapping EURO -,987654,987655,987656,-,987655
568 isdnctrl eaz isdn0 1 # listen on 12345671(1tr6) and 987654(euro)
570 isdnctrl eaz isdn1 4 # listen on 12345674(1tr6) only.
572 isdnctrl eaz isdn2 987654 # listen on 987654(euro) only.
574 Same scheme is used with AT&E... at the tty's.
576 6. If you want to write a new low-level-driver, you are welcome.
577 The interface to the link-level-module is described in the file INTERFACE.
578 If the interface should be expanded for any reason, don't do it
579 on your own, send me a mail containing the proposed changes and
580 some reasoning about them.
581 If other drivers will not be affected, I will include the changes
583 For developers only, there is a second mailing-list. Write to me
584 (fritz@wuemaus.franken.de), if you want to join that list.