1
Linux Quicknet-Drivers-Howto
2
Quicknet Technologies, Inc. (www.quicknet.net)
3
Version 0.3.4 December 18, 1999
7
This document describes the first GPL release version of the Linux
8
driver for the Quicknet Internet PhoneJACK and Internet LineJACK
9
cards. More information about these cards is available at
10
www.quicknet.net. The driver version discussed in this document is
13
These cards offer nice telco style interfaces to use your standard
14
telephone/key system/PBX as the user interface for VoIP applications.
15
The Internet LineJACK also offers PSTN connectivity for a single line
16
Internet to PSTN gateway. Of course, you can add more than one card
17
to a system to obtain multi-line functionality. At this time, the
18
driver supports the POTS port on both the Internet PhoneJACK and the
19
Internet LineJACK, but the PSTN port on the latter card is not yet
22
This document, and the drivers for the cards, are intended for a
23
limited audience that includes technically capable programmers who
24
would like to experiment with Quicknet cards. The drivers are
25
considered in ALPHA status and are not yet considered stable enough
26
for general, widespread use in an unlimited audience.
28
That's worth saying again:
30
THE LINUX DRIVERS FOR QUICKNET CARDS ARE PRESENTLY IN A ALPHA STATE
31
AND SHOULD NOT BE CONSIDERED AS READY FOR NORMAL WIDESPREAD USE.
33
They are released early in the spirit of Internet development and to
34
make this technology available to innovators who would benefit from
37
When we promote the device driver to "beta" level it will be
38
considered ready for non-programmer, non-technical users. Until then,
39
please be aware that these drivers may not be stable and may affect
40
the performance of your system.
43
1.1 Latest Additions/Improvements
45
The 0.3.4 version of the driver is the first GPL release. Several
46
features had to be removed from the prior binary only module, mostly
47
for reasons of Intellectual Property rights. We can't release
48
information that is not ours - so certain aspects of the driver had to
49
be removed to protect the rights of others.
51
Specifically, very old Internet PhoneJACK cards have non-standard
52
G.723.1 codecs (due to the early nature of the DSPs in those days).
53
The auto-conversion code to bring those cards into compliance with
54
today's standards is available as a binary only module to those people
55
needing it. If you bought your card after 1997 or so, you are OK -
56
it's only the very old cards that are affected.
58
Also, the code to download G.728/G.729/G.729a codecs to the DSP is
59
available as a binary only module as well. This IP is not ours to
62
Hooks are built into the GPL driver to allow it to work with other
63
companion modules that are completely separate from this module.
65
1.2 Copyright, Trademarks, Disclaimer, & Credits
69
Copyright (c) 1999 Quicknet Technologies, Inc. Permission is granted
70
to freely copy and distribute this document provided you preserve it
71
in its original form. For corrections and minor changes contact the
72
maintainer at linux@quicknet.net.
76
Internet PhoneJACK and Internet LineJACK are registered trademarks of
77
Quicknet Technologies, Inc.
81
Much of the info in this HOWTO is early information released by
82
Quicknet Technologies, Inc. for the express purpose of allowing early
83
testing and use of the Linux drivers developed for their products.
84
While every attempt has been made to be thorough, complete and
85
accurate, the information contained here may be unreliable and there
86
are likely a number of errors in this document. Please let the
87
maintainer know about them. Since this is free documentation, it
88
should be obvious that neither I nor previous authors can be held
89
legally responsible for any errors.
93
This HOWTO was written by:
95
Greg Herlein <gherlein@quicknet.net>
96
Ed Okerson <eokerson@quicknet.net>
98
1.3 Future Plans: You Can Help
100
Please let the maintainer know of any errors in facts, opinions,
101
logic, spelling, grammar, clarity, links, etc. But first, if the date
102
is over a month old, check to see that you have the latest
103
version. Please send any info that you think belongs in this document.
105
You can also contribute code and/or bug-fixes for the sample
109
1.4 Where to get things
111
Info on latest versions of the driver are here:
113
http://web.archive.org/web/*/http://www.quicknet.net/develop.htm
117
Quicknet operates a mailing list to provide a public forum on using
120
To subscribe to the linux-sdk mailing list, send an email to:
122
majordomo@linux.quicknet.net
124
In the body of the email, type:
126
subscribe linux-sdk <your-email-address>
128
Please delete any signature block that you would normally add to the
129
bottom of your email - it tends to confuse majordomo.
131
To send mail to the list, address your mail to
133
linux-sdk@linux.quicknet.net
135
Your message will go out to everyone on the list.
137
To unsubscribe to the linux-sdk mailing list, send an email to:
139
majordomo@linux.quicknet.net
141
In the body of the email, type:
143
unsubscribe linux-sdk <your-email-address>
151
You will need at least one Internet PhoneJACK or Internet LineJACK
152
cards. These are ISA or PCI bus devices that use Plug-n-Play for
153
configuration, and use no IRQs. The driver will support up to 16
154
cards in any one system, of any mix between the two types.
156
Note that you will need two cards to do any useful testing alone, since
157
you will need a card on both ends of the connection. Of course, if
158
you are doing collaborative work, perhaps your friends or coworkers
159
have cards too. If not, we'll gladly sell them some!
164
Since the Quicknet cards are Plug-n-Play devices, you will need the
165
isapnp tools package to configure the cards, or you can use the isapnp
166
module to autoconfigure them. The former package probably came with
167
your Linux distribution. Documentation on this package is available
170
http://mailer.wiwi.uni-marburg.de/linux/LDP/HOWTO/Plug-and-Play-HOWTO.html
172
The isapnp autoconfiguration is available on the Quicknet website at:
174
http://www.quicknet.net/develop.htm
176
though it may be in the kernel by the time you read this.
179
3.0 Card Configuration
181
If you did not get your drivers as part of the linux kernel, do the
182
following to install them:
184
a. untar the distribution file. We use the following command:
185
tar -xvzf ixj-0.x.x.tgz
187
This creates a subdirectory holding all the necessary files. Go to that
190
b. run the "ixj_dev_create" script to remove any stray device
191
files left in the /dev directory, and to create the new officially
192
designated device files. Note that the old devices were called
193
/dev/ixj, and the new method uses /dev/phone.
195
c. type "make;make install" - this will compile and install the
198
d. type "depmod -av" to rebuild all your kernel version dependencies.
200
e. if you are using the isapnp module to configure the cards
201
automatically, then skip to step f. Otherwise, ensure that you
202
have run the isapnp configuration utility to properly configure
205
e1. The Internet PhoneJACK has one configuration register that
206
requires 16 IO ports. The Internet LineJACK card has two
207
configuration registers and isapnp reports that IO 0
208
requires 16 IO ports and IO 1 requires 8. The Quicknet
209
driver assumes that these registers are configured to be
210
contiguous, i.e. if IO 0 is set to 0x340 then IO 1 should
213
Make sure that none of the cards overlap if you have
214
multiple cards in the system.
216
If you are new to the isapnp tools, you can jumpstart
217
yourself by doing the following:
219
e2. go to the /etc directory and run pnpdump to get a blank
222
pnpdump > /etc/isapnp.conf
224
e3. edit the /etc/isapnp.conf file to set the IO warnings and
225
the register IO addresses. The IO warnings means that you
226
should find the line in the file that looks like this:
228
(CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING
230
and you should edit the line to look like this:
232
(CONFLICT (IO WARNING)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) #
235
The next step is to set the IO port addresses. The issue
236
here is that isapnp does not identify all of the ports out
237
there. Specifically any device that does not have a driver
238
or module loaded by Linux will not be registered. This
239
includes older sound cards and network cards. We have
240
found that the IO port 0x300 is often used even though
241
isapnp claims that no-one is using those ports. We
242
recommend that for a single card installation that port
243
0x340 (and 0x350) be used. The IO port line should change
246
(IO 0 (SIZE 16) (BASE 0x0300) (CHECK))
250
(IO 0 (SIZE 16) (BASE 0x0340) )
252
e4. if you have multiple Quicknet cards, make sure that you do
253
not have any overlaps. Be especially careful if you are
254
mixing Internet PhoneJACK and Internet LineJACK cards in
255
the same system. In these cases we recommend moving the
256
IO port addresses to the 0x400 block. Please note that on
257
a few machines the 0x400 series are used. Feel free to
258
experiment with other addresses. Our cards have been
259
proven to work using IO addresses of up to 0xFF0.
261
e5. the last step is to uncomment the activation line so the
262
drivers will be associated with the port. This means the
263
line (immediately below) the IO line should go from this:
271
Once you have finished editing the isapnp.conf file you
272
must submit it into the pnp driverconfigure the cards.
273
This is done using the following command:
277
If this works you should see a line that identifies the
278
Quicknet device, the IO port(s) chosen, and a message
281
f. if you are loading the module by hand, use insmod. An example
282
of this would look like this:
285
insmod ixj dspio=0x320,0x310 xio=0,0x330
287
Then verify the module loaded by running lsmod. If you are not using a
288
module that matches your kernel version, you may need to "force" the
289
load using the -f option in the insmod command.
292
insmod -f ixj dspio=0x320,0x310 xio=0,0x330
295
If you are using isapnp to autoconfigure your card, then you do NOT
296
need any of the above, though you need to use depmod to load the
301
which will result in the needed drivers getting loaded automatically.
303
g. if you are planning on having the kernel automatically request
304
the module for you, then you need to edit /etc/conf.modules and add the
307
options ixj dspio=0x340 xio=0x330 ixjdebug=0
309
If you do this, then when you execute an application that uses the
310
module the kernel will request that it is loaded.
312
h. if you want non-root users to be able to read and write to the
313
ixj devices (this is a good idea!) you should do the following:
315
- decide upon a group name to use and create that group if
316
needed. Add the user names to that group that you wish to
317
have access to the device. For example, we typically will
318
create a group named "ixj" in /etc/group and add all users
319
to that group that we want to run software that can use the
322
- change the permissions on the device files, like this:
327
Once this is done, then non-root users should be able to use the
328
devices. If you have enabled autoloading of modules, then the user
329
should be able to open the device and have the module loaded
330
automatically for them.
333
4.0 Driver Installation problems.
335
We have tested these drivers on the 2.2.9, 2.2.10, 2.2.12, and 2.2.13 kernels
336
and in all cases have eventually been able to get the drivers to load and
337
run. We have found four types of problems that prevent this from happening.
338
The problems and solutions are:
340
a. A step was missed in the installation. Go back and use section 3
341
as a checklist. Many people miss running the ixj_dev_create script and thus
342
never load the device names into the filesystem.
344
b. The kernel is inconsistently linked. We have found this problem in
345
the Out Of the Box installation of several distributions. The symptoms
346
are that neither driver will load, and that the unknown symbols include "jiffy"
347
and "kmalloc". The solution is to recompile both the kernel and the
348
modules. The command string for the final compile looks like this:
350
In the kernel directory:
354
4. make clean;make bzImage;make modules;make modules_install
356
This rebuilds both the kernel and all the modules and makes sure they all
357
have the same linkages. This generally solves the problem once the new
358
kernel is installed and the system rebooted.
360
c. The kernel has been patched, then unpatched. This happens when
361
someone decides to use an earlier kernel after they load a later kernel.
362
The symptoms are proceeding through all three above steps and still not
363
being able to load the driver. What has happened is that the generated
364
header files are out of sync with the kernel itself. The solution is
365
to recompile (again) using "make mrproper". This will remove and then
366
regenerate all the necessary header files. Once this is done, then you
367
need to install and reboot the kernel. We have not seen any problem
368
loading one of our drivers after this treatment.
370
5.0 Known Limitations
372
We cannot currently play "dial-tone" and listen for DTMF digits at the
373
same time using the ISA PhoneJACK. This is a bug in the 8020 DSP chip
374
used on that product. All other Quicknet products function normally
375
in this regard. We have a work-around, but it's not done yet. Until
376
then, if you want dial-tone, you can always play a recorded dial-tone
377
sound into the audio until you have gathered the DTMF digits.