]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | README for the ISDN-subsystem |
2 | ||
3 | 1. Preface | |
4 | ||
5 | 1.1 Introduction | |
6 | ||
7 | This README describes how to set up and how to use the different parts | |
8 | of the ISDN-subsystem. | |
9 | ||
10 | For using the ISDN-subsystem, some additional userlevel programs are | |
11 | necessary. Those programs and some contributed utilities are available | |
12 | at | |
13 | ||
14 | ftp.isdn4linux.de | |
15 | ||
16 | /pub/isdn4linux/isdn4k-utils-<VersionNumber>.tar.gz | |
17 | ||
18 | ||
19 | We also have set up a mailing-list: | |
20 | ||
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. | |
24 | ||
25 | to subscribe: write a email to majordomo@listserv.isdn4linux.de, | |
26 | Subject irrelevant, in the message body: | |
27 | subscribe isdn4linux <your_email_address> | |
28 | ||
29 | To write to the mailing-list, write to isdn4linux@listserv.isdn4linux.de | |
30 | ||
31 | This mailinglist is bidirectionally gated to the newsgroup | |
32 | ||
33 | de.alt.comm.isdn4linux | |
34 | ||
35 | There is also a well maintained FAQ in English available at | |
36 | http://www.mhessler.de/i4lfaq/ | |
37 | It can be viewed online, or downloaded in sgml/text/html format. | |
38 | The FAQ can also be viewed online at | |
39 | http://www.isdn4inux.de/faq/ | |
40 | or downloaded from | |
41 | ftp://ftp.isdn4linux.de/pub/isdn4linux/FAQ/ | |
42 | ||
43 | 1.1 Technical details | |
44 | ||
45 | In the following Text, the terms MSN and EAZ are used. | |
46 | ||
47 | MSN is the abbreviation for (M)ultiple(S)ubscriber(N)umber, and applies | |
48 | to Euro(EDSS1)-type lines. Usually it is simply the phone number. | |
49 | ||
50 | EAZ is the abbreviation of (E)ndgeraete(A)uswahl(Z)iffer and | |
51 | applies to German 1TR6-type lines. This is a one-digit string, | |
52 | simply appended to the base phone number | |
53 | ||
54 | The internal handling is nearly identical, so replace the appropriate | |
55 | term to that one, which applies to your local ISDN-environment. | |
56 | ||
57 | When the link-level-module isdn.o is loaded, it supports up to 16 | |
58 | low-level-modules with up to 64 channels. (The number 64 is arbitrarily | |
59 | chosen and can be configured at compile-time --ISDN_MAX in isdn.h). | |
60 | A low-level-driver can register itself through an interface (which is | |
61 | defined in isdnif.h) and gets assigned a slot. | |
62 | The following char-devices are made available for each channel: | |
63 | ||
64 | A raw-control-device with the following functions: | |
65 | write: raw D-channel-messages (format: depends on driver). | |
66 | read: raw D-channel-messages (format: depends on driver). | |
67 | ioctl: depends on driver, i.e. for the ICN-driver, the base-address of | |
68 | the ports and the shared memory on the card can be set and read | |
69 | also the boot-code and the protocol software can be loaded into | |
70 | the card. | |
71 | ||
72 | O N L Y !!! for debugging (no locking against other devices): | |
73 | One raw-data-device with the following functions: | |
74 | write: data to B-channel. | |
75 | read: data from B-channel. | |
76 | ||
77 | In addition the following devices are made available: | |
78 | ||
79 | 128 tty-devices (64 cuix and 64 ttyIx) with integrated modem-emulator: | |
80 | The functionality is almost the same as that of a serial device | |
81 | (the line-discs are handled by the kernel), which lets you run | |
82 | SLIP, CSLIP and asynchronous PPP through the devices. We have tested | |
83 | Seyon, minicom, CSLIP (uri-dip) PPP, mgetty, XCept and Hylafax. | |
84 | ||
85 | The modem-emulation supports the following: | |
86 | 1.3.1 Commands: | |
87 | ||
88 | ATA Answer incoming call. | |
89 | ATD<No.> Dial, the number may contain: | |
90 | [0-9] and [,#.*WPT-S] | |
91 | the latter are ignored until 'S'. | |
92 | The 'S' must precede the number, if | |
93 | the line is a SPV (German 1TR6). | |
94 | ATE0 Echo off. | |
95 | ATE1 Echo on (default). | |
96 | ATH Hang-up. | |
97 | ATH1 Off hook (ignored). | |
98 | ATH0 Hang-up. | |
99 | ATI Return "ISDN for Linux...". | |
100 | ATI0 " | |
101 | ATI1 " | |
102 | ATI2 Report of last connection. | |
103 | ATO On line (data mode). | |
104 | ATQ0 Enable result codes (default). | |
105 | ATQ1 Disable result codes (default). | |
106 | ATSx=y Set register x to y. | |
107 | ATSx? Show contents of register x. | |
108 | ATV0 Numeric responses. | |
109 | ATV1 English responses (default). | |
110 | ATZ Load registers and EAZ/MSN from Profile. | |
111 | AT&Bx Set Send-Packet-size to x (max. 4000) | |
112 | The real packet-size may be limited by the | |
113 | low-level-driver used. e.g. the HiSax-Module- | |
114 | limit is 2000. You will get NO Error-Message, | |
115 | if you set it to higher values, because at the | |
116 | time of giving this command the corresponding | |
117 | driver may not be selected (see "Automatic | |
118 | Assignment") however the size of outgoing packets | |
119 | will be limited correctly. | |
120 | AT&D0 Ignore DTR | |
121 | AT&D2 DTR-low-edge: Hang up and return to | |
122 | command mode (default). | |
123 | AT&D3 Same as AT&D2 but also resets all registers. | |
124 | AT&Ex Set the EAZ/MSN for this channel to x. | |
125 | AT&F Reset all registers and profile to "factory-defaults" | |
126 | AT&Lx Set list of phone numbers to listen on. x is a | |
127 | list of wildcard patterns separated by semicolon. | |
128 | If this is set, it has precedence over the MSN set | |
129 | by AT&E. | |
130 | AT&Rx Select V.110 bitrate adaption. | |
131 | This command enables V.110 protocol with 9600 baud | |
132 | (x=9600), 19200 baud (x=19200) or 38400 baud | |
133 | (x=38400). A value of x=0 disables V.110 switching | |
134 | back to default X.75. This command sets the following | |
135 | Registers: | |
136 | Reg 14 (Layer-2 protocol): | |
137 | x = 0: 0 | |
138 | x = 9600: 7 | |
139 | x = 19200: 8 | |
140 | x = 38400: 9 | |
141 | Reg 18.2 = 1 | |
142 | Reg 19 (Additional Service Indicator): | |
143 | x = 0: 0 | |
144 | x = 9600: 197 | |
145 | x = 19200: 199 | |
146 | x = 38400: 198 | |
147 | Note on value in Reg 19: | |
148 | There is _NO_ common convention for 38400 baud. | |
149 | The value 198 is chosen arbitrarily. Users | |
150 | _MUST_ negotiate this value before establishing | |
151 | a connection. | |
152 | AT&Sx Set window-size (x = 1..8) (not yet implemented) | |
153 | AT&V Show all settings. | |
154 | AT&W0 Write registers and EAZ/MSN to profile. See also | |
155 | iprofd (5.c in this README). | |
156 | AT&X0 BTX-mode and T.70-mode off (default) | |
157 | AT&X1 BTX-mode on. (S13.1=1, S13.5=0 S14=0, S16=7, S18=7, S19=0) | |
158 | AT&X2 T.70-mode on. (S13.1=1, S13.5=1, S14=0, S16=7, S18=7, S19=0) | |
159 | AT+Rx Resume a suspended call with CallID x (x = 1,2,3...) | |
160 | AT+Sx Suspend a call with CallID x (x = 1,2,3...) | |
161 | ||
162 | For voice-mode commands refer to README.audio | |
163 | ||
164 | 1.3.2 Escape sequence: | |
165 | During a connection, the emulation reacts just like | |
166 | a normal modem to the escape sequence <DELAY>+++<DELAY>. | |
167 | (The escape character - default '+' - can be set in the | |
168 | register 2). | |
169 | The DELAY must at least be 1.5 seconds long and delay | |
170 | between the escape characters must not exceed 0.5 seconds. | |
171 | ||
172 | 1.3.3 Registers: | |
173 | ||
174 | Nr. Default Description | |
175 | 0 0 Answer on ring number. | |
176 | (no auto-answer if S0=0). | |
177 | 1 0 Count of rings. | |
178 | 2 43 Escape character. | |
179 | (a value >= 128 disables the escape sequence). | |
180 | 3 13 Carriage return character (ASCII). | |
181 | 4 10 Line feed character (ASCII). | |
182 | 5 8 Backspace character (ASCII). | |
183 | 6 3 Delay in seconds before dialing. | |
184 | 7 60 Wait for carrier. | |
185 | 8 2 Pause time for comma (ignored) | |
186 | 9 6 Carrier detect time (ignored) | |
187 | 10 7 Carrier loss to disconnect time (ignored). | |
188 | 11 70 Touch tone timing (ignored). | |
189 | 12 69 Bit coded register: | |
190 | Bit 0: 0 = Suppress response messages. | |
191 | 1 = Show response messages. | |
192 | Bit 1: 0 = English response messages. | |
193 | 1 = Numeric response messages. | |
194 | Bit 2: 0 = Echo off. | |
195 | 1 = Echo on. | |
196 | Bit 3 0 = DCD always on. | |
197 | 1 = DCD follows carrier. | |
198 | Bit 4 0 = CTS follows RTS | |
199 | 1 = Ignore RTS, CTS always on. | |
200 | Bit 5 0 = return to command mode on DTR low. | |
201 | 1 = Same as 0 but also resets all | |
202 | registers. | |
203 | See also register 13, bit 2 | |
204 | Bit 6 0 = DSR always on. | |
205 | 1 = DSR only on if channel is available. | |
206 | Bit 7 0 = Cisco-PPP-flag-hack off (default). | |
207 | 1 = Cisco-PPP-flag-hack on. | |
208 | 13 0 Bit coded register: | |
209 | Bit 0: 0 = Use delayed tty-send-algorithm | |
210 | 1 = Direct tty-send. | |
211 | Bit 1: 0 = T.70 protocol (Only for BTX!) off | |
212 | 1 = T.70 protocol (Only for BTX!) on | |
213 | Bit 2: 0 = Don't hangup on DTR low. | |
214 | 1 = Hangup on DTR low. | |
215 | Bit 3: 0 = Standard response messages | |
216 | 1 = Extended response messages | |
217 | Bit 4: 0 = CALLER NUMBER before every RING. | |
218 | 1 = CALLER NUMBER after first RING. | |
219 | Bit 5: 0 = T.70 extended protocol off | |
220 | 1 = T.70 extended protocol on | |
221 | Bit 6: 0 = Special RUNG Message off | |
222 | 1 = Special RUNG Message on | |
223 | "RUNG" is delivered on a ttyI, if | |
224 | an incoming call happened (RING) and | |
225 | the remote party hung up before any | |
226 | local ATA was given. | |
227 | Bit 7: 0 = Don't show display messages from net | |
228 | 1 = Show display messages from net | |
229 | (S12 Bit 1 must be 0 too) | |
230 | 14 0 Layer-2 protocol: | |
231 | 0 = X75/LAPB with I-frames | |
232 | 1 = X75/LAPB with UI-frames | |
233 | 2 = X75/LAPB with BUI-frames | |
234 | 3 = HDLC | |
235 | 4 = Transparent (audio) | |
236 | 7 = V.110, 9600 baud | |
237 | 8 = V.110, 19200 baud | |
238 | 9 = V.110, 38400 baud | |
239 | 10 = Analog Modem (only if hardware supports this) | |
240 | 11 = Fax G3 (only if hardware supports this) | |
241 | 15 0 Layer-3 protocol: | |
242 | 0 = transparent | |
243 | 1 = transparent with audio features (e.g. DSP) | |
244 | 2 = Fax G3 Class 2 commands (S14 has to be set to 11) | |
245 | 3 = Fax G3 Class 1 commands (S14 has to be set to 11) | |
246 | 16 250 Send-Packet-size/16 | |
247 | 17 8 Window-size (not yet implemented) | |
248 | 18 4 Bit coded register, Service-Octet-1 to accept, | |
249 | or to be used on dialout: | |
250 | Bit 0: Service 1 (audio) when set. | |
251 | Bit 1: Service 5 (BTX) when set. | |
252 | Bit 2: Service 7 (data) when set. | |
253 | Note: It is possible to set more than one | |
254 | bit. In this case, on incoming calls | |
255 | the selected services are accepted, | |
256 | and if the service is "audio", the | |
257 | Layer-2-protocol is automatically | |
258 | changed to 4 regardless of the setting | |
259 | of register 14. On outgoing calls, | |
260 | the most significant 1-bit is chosen to | |
261 | select the outgoing service octet. | |
262 | 19 0 Service-Octet-2 | |
263 | 20 0 Bit coded register (readonly) | |
264 | Service-Octet-1 of last call. | |
265 | Bit mapping is the same as register 18 | |
266 | 21 0 Bit coded register (readonly) | |
267 | Set on incoming call (during RING) to | |
268 | octet 3 of calling party number IE (Numbering plan) | |
269 | See section 4.5.10 of ITU Q.931 | |
270 | 22 0 Bit coded register (readonly) | |
271 | Set on incoming call (during RING) to | |
272 | octet 3a of calling party number IE (Screening info) | |
273 | See section 4.5.10 of ITU Q.931 | |
274 | 23 0 Bit coded register: | |
275 | Bit 0: 0 = Add CPN to RING message off | |
276 | 1 = Add CPN to RING message on | |
277 | Bit 1: 0 = Add CPN to FCON message off | |
278 | 1 = Add CPN to FCON message on | |
279 | Bit 2: 0 = Add CDN to RING/FCON message off | |
280 | 1 = Add CDN to RING/FCON message on | |
281 | ||
282 | Last but not least a (at the moment fairly primitive) device to request | |
283 | the line-status (/dev/isdninfo) is made available. | |
284 | ||
285 | Automatic assignment of devices to lines: | |
286 | ||
287 | All inactive physical lines are listening to all EAZs for incoming | |
288 | calls and are NOT assigned to a specific tty or network interface. | |
289 | When an incoming call is detected, the driver looks first for a network | |
290 | interface and then for an opened tty which: | |
291 | ||
292 | 1. is configured for the same EAZ. | |
293 | 2. has the same protocol settings for the B-channel. | |
294 | 3. (only for network interfaces if the security flag is set) | |
295 | contains the caller number in its access list. | |
296 | 4. Either the channel is not bound exclusively to another Net-interface, or | |
297 | it is bound AND the other checks apply to exactly this interface. | |
298 | (For usage of the bind-features, refer to the isdnctrl-man-page) | |
299 | ||
300 | Only when a matching interface or tty is found is the call accepted | |
301 | and the "connection" between the low-level-layer and the link-level-layer | |
302 | is established and kept until the end of the connection. | |
303 | In all other cases no connection is established. Isdn4linux can be | |
304 | configured to either do NOTHING in this case (which is useful, if | |
305 | other, external devices with the same EAZ/MSN are connected to the bus) | |
306 | or to reject the call actively. (isdnctrl busreject ...) | |
307 | ||
308 | For an outgoing call, the inactive physical lines are searched. | |
309 | The call is placed on the first physical line, which supports the | |
310 | requested protocols for the B-channel. If a net-interface, however | |
311 | is pre-bound to a channel, this channel is used directly. | |
312 | ||
313 | This makes it possible to configure several network interfaces and ttys | |
314 | for one EAZ, if the network interfaces are set to secure operation. | |
315 | If an incoming call matches one network interface, it gets connected to it. | |
316 | If another incoming call for the same EAZ arrives, which does not match | |
317 | a network interface, the first tty gets a "RING" and so on. | |
318 | ||
319 | 2 System prerequisites: | |
320 | ||
321 | ATTENTION! | |
322 | ||
323 | Always use the latest module utilities. The current version is | |
324 | named in Documentation/Changes. Some old versions of insmod | |
325 | are not capable of setting the driver-Ids correctly. | |
326 | ||
327 | 3. Lowlevel-driver configuration. | |
328 | ||
329 | Configuration depends on how the drivers are built. See the | |
330 | README.<yourDriver> for information on driver-specific setup. | |
331 | ||
332 | 4. Device-inodes | |
333 | ||
334 | The major and minor numbers and their names are described in | |
335 | Documentation/devices.txt. The major numbers are: | |
336 | ||
337 | 43 for the ISDN-tty's. | |
338 | 44 for the ISDN-callout-tty's. | |
339 | 45 for control/info/debug devices. | |
340 | ||
341 | 5. Application | |
342 | ||
343 | a) For some card-types, firmware has to be loaded into the cards, before | |
344 | proceeding with device-independent setup. See README.<yourDriver> | |
345 | for how to do that. | |
346 | ||
347 | b) If you only intend to use ttys, you are nearly ready now. | |
348 | ||
349 | c) If you want to have really permanent "Modem"-settings on disk, you | |
350 | can start the daemon iprofd. Give it a path to a file at the command- | |
351 | line. It will store the profile-settings in this file every time | |
352 | an AT&W0 is performed on any ISDN-tty. If the file already exists, | |
353 | all profiles are initialized from this file. If you want to unload | |
354 | any of the modules, kill iprofd first. | |
355 | ||
356 | d) For networking, continue: Create an interface: | |
357 | isdnctrl addif isdn0 | |
358 | ||
359 | e) Set the EAZ (or MSN for Euro-ISDN): | |
360 | isdnctrl eaz isdn0 2 | |
361 | ||
362 | (For 1TR6 a single digit is allowed, for Euro-ISDN the number is your | |
363 | real MSN e.g.: Phone-Number) | |
364 | ||
365 | f) Set the number for outgoing calls on the interface: | |
366 | isdnctrl addphone isdn0 out 1234567 | |
367 | ... (this can be executed more than once, all assigned numbers are | |
368 | tried in order) | |
369 | and the number(s) for incoming calls: | |
370 | isdnctrl addphone isdn0 in 1234567 | |
371 | ||
372 | g) Set the timeout for hang-up: | |
373 | isdnctrl huptimeout isdn0 <timeout_in_seconds> | |
374 | ||
375 | h) additionally you may activate charge-hang-up (= Hang up before | |
376 | next charge-info, this only works, if your isdn-provider transmits | |
377 | the charge-info during and after the connection): | |
378 | isdnctrl chargehup isdn0 on | |
379 | ||
380 | i) Set the dial mode of the interface: | |
381 | isdnctrl dialmode isdn0 auto | |
382 | "off" means that you (or the system) cannot make any connection | |
383 | (neither incoming or outgoing connections are possible). Use | |
384 | this if you want to be sure that no connections will be made. | |
385 | "auto" means that the interface is in auto-dial mode, and will | |
386 | attempt to make a connection whenever a network data packet needs | |
387 | the interface's link. Note that this can cause unexpected dialouts, | |
388 | and lead to a high phone bill! Some daemons or other pc's that use | |
389 | this interface can cause this. | |
390 | Incoming connections are also possible. | |
391 | "manual" is a dial mode created to prevent the unexpected dialouts. | |
392 | In this mode, the interface will never make any connections on its | |
393 | own. You must explicitly initiate a connection with "isdnctrl dial | |
394 | isdn0". However, after an idle time of no traffic as configured for | |
395 | the huptimeout value with isdnctrl, the connection _will_ be ended. | |
396 | If you don't want any automatic hangup, set the huptimeout value to 0. | |
397 | "manual" is the default. | |
398 | ||
399 | j) Setup the interface with ifconfig as usual, and set a route to it. | |
400 | ||
401 | k) (optional) If you run X11 and have Tcl/Tk-wish version 4.0, you can use | |
402 | the script tools/tcltk/isdnmon. You can add actions for line-status | |
403 | changes. See the comments at the beginning of the script for how to | |
404 | do that. There are other tty-based tools in the tools-subdirectory | |
405 |