Blame view

Documentation/telephony/ixj.txt 14 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
  Linux Quicknet-Drivers-Howto
  Quicknet Technologies, Inc. (www.quicknet.net)
  Version 0.3.4  December 18, 1999
  
  1.0  Introduction
  
  This document describes the first GPL release version of the Linux
  driver for the Quicknet Internet PhoneJACK and Internet LineJACK
  cards.  More information about these cards is available at
  www.quicknet.net.  The driver version discussed in this document is
  0.3.4.
  
  These cards offer nice telco style interfaces to use your standard
  telephone/key system/PBX as the user interface for VoIP applications.
  The Internet LineJACK also offers PSTN connectivity for a single line
  Internet to PSTN gateway.  Of course, you can add more than one card
  to a system to obtain multi-line functionality.  At this time, the
  driver supports the POTS port on both the Internet PhoneJACK and the
  Internet LineJACK, but the PSTN port on the latter card is not yet
  supported.
  
  This document, and the drivers for the cards, are intended for a
  limited audience that includes technically capable programmers who
  would like to experiment with Quicknet cards.  The drivers are
  considered in ALPHA status and are not yet considered stable enough
  for general, widespread use in an unlimited audience.
  
  That's worth saying again:
  
  THE LINUX DRIVERS FOR QUICKNET CARDS ARE PRESENTLY IN A ALPHA STATE
  AND SHOULD NOT BE CONSIDERED AS READY FOR NORMAL WIDESPREAD USE.
  
  They are released early in the spirit of Internet development and to
  make this technology available to innovators who would benefit from
  early exposure.
  
  When we promote the device driver to "beta" level it will be
  considered ready for non-programmer, non-technical users.  Until then,
  please be aware that these drivers may not be stable and may affect
  the performance of your system.
  
  
  1.1 Latest Additions/Improvements
  
  The 0.3.4 version of the driver is the first GPL release.  Several
  features had to be removed from the prior binary only module, mostly
  for reasons of Intellectual Property rights.  We can't release
  information that is not ours - so certain aspects of the driver had to
  be removed to protect the rights of others.  
  
  Specifically, very old Internet PhoneJACK cards have non-standard
  G.723.1 codecs (due to the early nature of the DSPs in those days).
  The auto-conversion code to bring those cards into compliance with
25985edce   Lucas De Marchi   Fix common misspe...
54
  today's standards is available as a binary only module to those people
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
  needing it.  If you bought your card after 1997 or so, you are OK -
  it's only the very old cards that are affected.
  
  Also, the code to download G.728/G.729/G.729a codecs to the DSP is
  available as a binary only module as well.  This IP is not ours to
  release.  
  
  Hooks are built into the GPL driver to allow it to work with other
  companion modules that are completely separate from this module.
  
  1.2 Copyright, Trademarks, Disclaimer, & Credits 
  
  Copyright
  
  Copyright (c) 1999 Quicknet Technologies, Inc.  Permission is granted
  to freely copy and distribute this document provided you preserve it
  in its original form. For corrections and minor changes contact the
  maintainer at linux@quicknet.net.
  
  Trademarks
  
  Internet PhoneJACK and Internet LineJACK are registered trademarks of
  Quicknet Technologies, Inc.
  
  Disclaimer
  
  Much of the info in this HOWTO is early information released by
  Quicknet Technologies, Inc. for the express purpose of allowing early
  testing and use of the Linux drivers developed for their products.
  While every attempt has been made to be thorough, complete and
  accurate, the information contained here may be unreliable and there
  are likely a number of errors in this document. Please let the
  maintainer know about them. Since this is free documentation, it
  should be obvious that neither I nor previous authors can be held
  legally responsible for any errors.
  
  Credits
  
  This HOWTO was written by:
  
  	Greg Herlein <gherlein@quicknet.net>
  	Ed Okerson <eokerson@quicknet.net> 
  
  1.3  Future Plans: You Can Help 
  
  Please let the maintainer know of any errors in facts, opinions,
  logic, spelling, grammar, clarity, links, etc.  But first, if the date
  is over a month old, check to see that you have the latest
  version. Please send any info that you think belongs in this document.
  
  You can also contribute code and/or bug-fixes for the sample
  applications.
  
  
  1.4  Where to get things
0ea6e6112   Justin P. Mattock   Documentation: up...
110
  Info on latest versions of the driver are here:
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
111

0ea6e6112   Justin P. Mattock   Documentation: up...
112
  http://web.archive.org/web/*/http://www.quicknet.net/develop.htm
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
  
  1.5  Mailing List
  
  Quicknet operates a mailing list to provide a public forum on using
  these drivers.
  
  To subscribe to the linux-sdk mailing list, send an email to:
  
     majordomo@linux.quicknet.net
  
  In the body of the email, type:
  
     subscribe linux-sdk <your-email-address>
  
  Please delete any signature block that you would normally add to the
  bottom of your email - it tends to confuse majordomo.
  
  To send mail to the list, address your mail to 
  
     linux-sdk@linux.quicknet.net
  
  Your message will go out to everyone on the list.
  
  To unsubscribe to the linux-sdk mailing list, send an email to:
  
     majordomo@linux.quicknet.net
  
  In the body of the email, type:
  
     unsubscribe linux-sdk <your-email-address>
  
  
  
  2.0  Requirements
  
  2.1  Quicknet Card(s)
  
  You will need at least one Internet PhoneJACK or Internet LineJACK
  cards.  These are ISA or PCI bus devices that use Plug-n-Play for
  configuration, and use no IRQs.  The driver will support up to 16
  cards in any one system, of any mix between the two types.
  
  Note that you will need two cards to do any useful testing alone, since
  you will need a card on both ends of the connection.  Of course, if
  you are doing collaborative work, perhaps your friends or coworkers
  have cards too.  If not, we'll gladly sell them some!
  
  
  2.2  ISAPNP
  
  Since the Quicknet cards are Plug-n-Play devices, you will need the
  isapnp tools package to configure the cards, or you can use the isapnp
  module to autoconfigure them.  The former package probably came with
  your Linux distribution.  Documentation on this package is available
  online at:
  
  http://mailer.wiwi.uni-marburg.de/linux/LDP/HOWTO/Plug-and-Play-HOWTO.html
  
  The isapnp autoconfiguration is available on the Quicknet website at:
  
      http://www.quicknet.net/develop.htm
  
  though it may be in the kernel by the time you read this.
  
  
  3.0  Card Configuration 
  
  If you did not get your drivers as part of the linux kernel, do the
  following to install them:
  
     a.  untar the distribution file.  We use the following command:
          tar -xvzf ixj-0.x.x.tgz
  
  This creates a subdirectory holding all the necessary files.  Go to that
  subdirectory.
  
     b.  run the "ixj_dev_create" script to remove any stray device
  files left in the /dev directory, and to create the new officially
  designated device files.  Note that the old devices were called 
  /dev/ixj, and the new method uses /dev/phone.  
  
     c.  type "make;make install" - this will compile and install the
  module.
  
     d.  type "depmod -av" to rebuild all your kernel version dependencies.
  
     e.  if you are using the isapnp module to configure the cards
         automatically, then skip to step f.  Otherwise, ensure that you
         have run the isapnp configuration utility to properly configure
         the cards.
  
         e1. The Internet PhoneJACK has one configuration register that
             requires 16 IO ports.  The Internet LineJACK card has two
             configuration registers and isapnp reports that IO 0
             requires 16 IO ports and IO 1 requires 8.  The Quicknet
             driver assumes that these registers are configured to be
             contiguous, i.e. if IO 0 is set to 0x340 then IO 1 should
             be set to 0x350.
  
             Make sure that none of the cards overlap if you have
             multiple cards in the system.
  
             If you are new to the isapnp tools, you can jumpstart
             yourself by doing the following:
  
        e2.  go to the /etc directory and run pnpdump to get a blank
             isapnp.conf file.
  
  	   	pnpdump > /etc/isapnp.conf
  
        e3.  edit the /etc/isapnp.conf file to set the IO warnings and
             the register IO addresses. The IO warnings means that you
             should find the line in the file that looks like this:
  
  	   (CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING
  
  	   and you should edit the line to look like this:
  
  	   (CONFLICT (IO WARNING)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) #
  	   or WARNING
  
             The next step is to set the IO port addresses.  The issue
             here is that isapnp does not identify all of the ports out
             there.  Specifically any device that does not have a driver
             or module loaded by Linux will not be registered.  This
             includes older sound cards and network cards.  We have
             found that the IO port 0x300 is often used even though
             isapnp claims that no-one is using those ports.  We
             recommend that for a single card installation that port
             0x340 (and 0x350) be used.  The IO port line should change
             from this:
  
  	   (IO 0 (SIZE 16) (BASE 0x0300) (CHECK))
  
  	   to this:
  
  	   (IO 0 (SIZE 16) (BASE 0x0340) )
  
         e4.  if you have multiple Quicknet cards, make sure that you do
              not have any overlaps.  Be especially careful if you are
              mixing Internet PhoneJACK and Internet LineJACK cards in
              the same system.  In these cases we recommend moving the
              IO port addresses to the 0x400 block.  Please note that on
              a few machines the 0x400 series are used.  Feel free to
              experiment with other addresses.  Our cards have been
              proven to work using IO addresses of up to 0xFF0.
  
         e5.  the last step is to uncomment the activation line so the
              drivers will be associated with the port.  This means the
              line (immediately below) the IO line should go from this:
  
              # (ACT Y)
  
              to this:
  
  	    (ACT Y)
  
              Once you have finished editing the isapnp.conf file you
              must submit it into the pnp driverconfigure the cards.
              This is done using the following command:
  
  	    isapnp isapnp.conf
  
  	    If this works you should see a line that identifies the
              Quicknet device, the IO port(s) chosen, and a message
              "Enabled OK".
  
     f.  if you are loading the module by hand, use insmod.  An example
  of this would look like this:
  
  	insmod phonedev
  	insmod ixj dspio=0x320,0x310 xio=0,0x330
  
  Then verify the module loaded by running lsmod. If you are not using a
  module that matches your kernel version, you may need to "force" the
  load using the -f option in the insmod command.
  
  	insmod phonedev
  	insmod -f ixj dspio=0x320,0x310 xio=0,0x330
  
  
  If you are using isapnp to autoconfigure your card, then you do NOT
  need any of the above, though you need to use depmod to load the
  driver, like this:
  
  	depmod ixj
  
  which will result in the needed drivers getting loaded automatically.
a81792f66   Johannes Berg   remove mention of...
301
302
     g.  if you are planning on having the kernel automatically request
  the module for you, then you need to edit /etc/conf.modules and add the
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
303
304
305
306
307
  following lines:
  
  	options ixj dspio=0x340 xio=0x330 ixjdebug=0
  
  If you do this, then when you execute an application that uses the
a81792f66   Johannes Berg   remove mention of...
308
  module the kernel will request that it is loaded.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
  
    h.  if you want non-root users to be able to read and write to the 
  ixj devices (this is a good idea!) you should do the following:
  
       - decide upon a group name to use and create that group if 
         needed.  Add the user names to that group that you wish to 
         have access to the device.  For example, we typically will
         create a group named "ixj" in /etc/group and add all users
         to that group that we want to run software that can use the 
         ixjX devices.
  
       - change the permissions on the device files, like this:
  	
         chgrp ixj /dev/ixj*	
         chmod 660 /dev/ixj*
  	
  Once this is done, then non-root users should be able to use the
  devices.  If you have enabled autoloading of modules, then the user
  should be able to open the device and have the module loaded
  automatically for them.
  
  
  4.0 Driver Installation problems.
  
  We have tested these drivers on the 2.2.9, 2.2.10, 2.2.12, and 2.2.13 kernels
  and in all cases have eventually been able to get the drivers to load and 
  run.  We have found four types of problems that prevent this from happening.
  The problems and solutions are:
  
    a. A step was missed in the installation.  Go back and use section 3
  as a checklist.  Many people miss running the ixj_dev_create script and thus
  never load the device names into the filesystem.
  
    b. The kernel is inconsistently linked.  We have found this problem in
  the Out Of the Box installation of several distributions.  The symptoms 
  are that neither driver will load, and that the unknown symbols include "jiffy"
  and "kmalloc".  The solution is to recompile both the kernel and the
  modules.  The command string for the final compile looks like this:
  
      In the kernel directory:
      1.  cp .config /tmp
      2.  make mrproper
      3.  cp /tmp/.config .
      4.	make clean;make bzImage;make modules;make modules_install
  
  This rebuilds both the kernel and all the modules and makes sure they all 
  have the same linkages.  This generally solves the problem once the new 
  kernel is installed and the system rebooted.
  
    c. The kernel has been patched, then unpatched.  This happens when
  someone decides to use an earlier kernel after they load a later kernel.
  The symptoms are proceeding through all three above steps and still not
  being able to load the driver.  What has happened is that the generated
  header files are out of sync with the kernel itself.  The solution is
  to recompile (again) using "make mrproper".  This will remove and then
  regenerate all the necessary header files.  Once this is done, then you 
  need to install and reboot the kernel.  We have not seen any problem
  loading one of our drivers after this treatment.
  
  5.0  Known Limitations
  
  We cannot currently play "dial-tone" and listen for DTMF digits at the
  same time using the ISA PhoneJACK.  This is a bug in the 8020 DSP chip
  used on that product.  All other Quicknet products function normally
  in this regard.  We have a work-around, but it's not done yet.  Until
  then, if you want dial-tone, you can always play a recorded dial-tone
  sound into the audio until you have gathered the DTMF digits.