FAQ
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:8k
- Frequently Asked Questions (FAQ) about the Linux Driver
- for Quicknet Technologies, Inc. Internet PhoneJACK and LineJACK Cards
- Version: 0.1.3 - July 2, 1999
- Document maintainer: Greg Herlein (gherlein@quicknet.net)
- ___________________________________________________________________________
- Table of Contents
- Section 1.0 - General Questions
- 1.1 - What is the sample rate for audio on the cards?
- 1.2 - Can the Internet PhoneJACK/LineJACK do CallerID?
- 1.3 - Can I put multiple LineJACK/PhoneJACK cards in one computer?
- Section 2.0 - Installation and Configuration
- 2.1 - How do I load the module?
- 2.2 - How can I use kerneld do automatically load the ixj module?
- 2.3 - How can I let non-root users use the ixj devices?
- 2.4 - How do I use isapnp?
- 2.5 - How do I make isapnp work? It keeps failing!
- Section 3.0 - Use of IOCTLS
- 3.1 - Will we be able to set a configurable frame size for linear
- (PCM)?
- 3.2 - Is the IXJCTL_RING ioctl call a blocking call ? Can this
- call be made configurable so that we can change the type or
- number of rings?
- 3.3 - What does IXJCTL_DSP_RESET do?
- 3.4 - What does IXJCTL_DSP_SYNC do?
- 3.5 - What does IXJCTL_DSP_TYPE do?
- 3.6 - What does IXJCTL_DSP_VERSION do?
- Section 4.0 - Performance Improvements
- 4.1 - How can I reduce latency?
- ___________________________________________________________________________
- Section 1.0 - General Questions
- 1.1 - What is the sample rate for audio on the cards?
- A: Everything is being done at 8KHz.
- 1.2 - Can the Internet PhoneJACK/LineJACK do CallerID?
- A: Yes and No. The LineJACK can detect the CallerID information and
- that information can be made available to the driver. The driver does
- not yet support this, but it will in the near future. However, the
- LineJACK will probably not be able to generate CallerID information
- without extra user-level code. This requires an FSK signal (at 1200
- baud) be generated and played over the line between the first and
- second rings. The hardware will support this on-hook transmission,
- but code has yet to be written to take advantage of that.
- 1.3 - Can I put multiple LineJACK/PhoneJACK cards in one computer?
- A: Absolutely! The driver will support up to 16 such devices in one
- computer. The device files created in the /dev directory are numbered
- ixj0-ixj15.
- ___________________________________________________________________________
- Section 2.0 - Installation and Configuration
- 2.1 - How do I load the module?
- A: If you are loading the module by hand, use insmod. An example
- of this would look like this:
- insmod ixj io=0x300 ixjdebug=0
- Then verify the module loaded by running lsmod.
- 2.2 - How can I use kerneld do automatically load the ixj module?
- A: You need to edit /etc/conf.modules and add the following lines:
- options ixj io=0x300 ixjdebug=0
- alias char-major-159 ixj
- If you do this, then when you execute an application that uses the
- module kerneld will load the module for you. Note that to do this,
- you need to have your kernel set to support kerneld. You can check
- for this by looking at /usr/src/linux/.config and you should see this:
- # Loadable module support
- #
- CONFIG_MODULES=y
- # CONFIG_MODVERSIONS is not set
- CONFIG_KMOD=y
- 2.3 - How can I let non-root users use the ixj devices?
- A: You need to set the permissions on the devices to a group that you
- want to have permission to use the card. Here is how:
- - 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.
- 2.4 - How do I use isapnp?
-
- A: If you are new to the isapnp tools, you can jumpstart yourself by
- doing the following:
- a. run pnpdump to get a blank isapnp.conf file
- pnpdump > /etc/isapnp.conf
- b. edit the /etc/isapnp.conf file to set the register IO addresses.
- c. 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.
- More information is available at:
- http://mailer.wiwi.uni-marburg.de/linux/LDP/HOWTO/Plug-and-Play-HOWTO.html
- 2.5 - How do I make isapnp work? It keeps failing!
- A: There is a known problem with the isapnp system for recent distributions
- To work around this, do the following:
- - edit the isapnp.conf file and look for this line near the top:
- (CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING
- change that line to look like this:
- (CONFLICT (IO WARNING)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING
- then go to the section where you activate the Quicknet card and
- find the area that looks like this:
- (IO 0 (SIZE 16) (BASE 0x0310) (CHECK))
- and edit it to look like this:
- (IO 0 (SIZE 16) (BASE 0x0310))
- Use the appropriate io port address for your system, of course.
-
- ___________________________________________________________________________
- Section 3.0 - Use of IOCTLS
- 3.1 - Will we be able to set a configurable frame size for linear (PCM)?
- A: The only options are 10ms (160 bytes), 20ms (320 bytes), and 30ms
- (480 bytes). Right now it is locked at 30ms frames because that is
- the fundamental frame size of all the TrueSpeech formats, including
- G.723.1. Access to those codecs were the primary design goal of this
- driver. It is not possible to simply stream bytes into the DSP like
- you would a sound card. That would require a much more sophisticated
- buffering system than we now use.
- 3.2 - Is the IXJCTL_RING ioctl call a blocking call ? Can this call be
- made configurable so that we can change the type or number of rings?
- The IXJCTL_RING ioctl will be supplemented by other ioctls that will
- change the type and number of rings. These ioctls are already planned and
- partially implemented.
- 3.3 - What does IXJCTL_DSP_RESET do?
- #define IXJCTL_DSP_RESET _IO ('q', 0x00)
- This ioctl will send the reset signal to the DSP should something go
- wrong and the DSP get into an unknown state. Under normal
- circumstances it is not needed, but this is the real work and
- circumstances are not always normal. :)
- 3.4 - What does IXJCTL_DSP_SYNC do?
- #define IXJCTL_DSP_SYNC _IO ('q', 0x01)
- This sets the sync mode of the DSP, host sync, poll sync etc. Again
- this is not normally needed as the driver sets the proper mode of the
- DSP, it was mainly included for completeness of the DSP command set.
- 3.5 - What does IXJCTL_DSP_TYPE do?
- #define IXJCTL_DSP_TYPE _IOR ('q', 0x0C, int)
- This returns a value that indicates the DSP type, for the Phone Jack it
- will return 0x8020 and for the Line Jack it will return 0x8021.
- 3.6 - What does IXJCTL_DSP_VERSION do?
-
- #define IXJCTL_DSP_VERSION _IOR ('q', 0x0D, int)
- This will return the version of the DSP that is on the board. Typical
- values are 0x0112 and 0x0114. This can give some insight when doing
- diagnostics on CODEC problems, as the DSP code version implements some
- CODECs differently.
- ___________________________________________________________________________
- Section 4.0 - Performance Improvements
- 4.1 - How can I reduce latency?
- A: Reducing latency across the Internet is beyond the scope of this
- answer! However, reducing latency with the cards is possible in
- certain situations. The IXJCTL_REC_DEPTH command sets the internal
- buffer depth of the DSP. Setting a lower depth reduces latency, but
- increases the demand of the application to service the driver without
- frame loss. The DSP has 480 bytes of physical buffer memory for the
- record channel so the true maximum limit is determined by how many
- frames will fit in the buffer.
- 1 uncompressed (480 byte) 16-bit linear frame.
- 2 uncompressed (240 byte) 8-bit A-law/mu-law frames.
- 15 TrueSpeech 8.5 frames.
- 20 TrueSpeech 6.3,5.3,4.8 or 4.1 frames.
- The default in the driver is currently set to 2 frames.