| 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 |
| todays standards is available as a binary only module to those people |
| 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 |
| |
| You can download the latest versions of the driver from: |
| |
| http://www.quicknet.net/develop.htm |
| |
| You can download the latest version of this document from: |
| |
| http://www.quicknet.net/develop.htm |
| |
| |
| 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. |
| |
| 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 |
| following lines: |
| |
| options ixj dspio=0x340 xio=0x330 ixjdebug=0 |
| |
| If you do this, then when you execute an application that uses the |
| module the kernel will request that it is loaded. |
| |
| 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. |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |