FAQ
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:8k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

C/C++

  1. Frequently Asked Questions (FAQ) about the Linux Driver 
  2. for Quicknet Technologies, Inc. Internet PhoneJACK and LineJACK Cards
  3. Version: 0.1.3 - July 2, 1999
  4. Document maintainer:  Greg Herlein (gherlein@quicknet.net)
  5. ___________________________________________________________________________
  6. Table of Contents
  7. Section 1.0 - General Questions
  8.     1.1 - What is the sample rate for audio on the cards?
  9.     1.2 - Can the Internet PhoneJACK/LineJACK do CallerID?
  10.     1.3 - Can I put multiple LineJACK/PhoneJACK cards in one computer?
  11. Section 2.0 - Installation and Configuration
  12.     2.1 - How do I load the module?
  13.     2.2 - How can I use kerneld do automatically load the ixj module?
  14.     2.3 - How can I let non-root users use the ixj devices?  
  15.     2.4 - How do I use isapnp? 
  16.     2.5 - How do I make isapnp work?  It keeps failing!
  17. Section 3.0 - Use of IOCTLS
  18.     3.1 - Will we be able to set a configurable frame size for linear
  19.           (PCM)?
  20.     3.2 - Is the IXJCTL_RING ioctl call a blocking call ? Can this
  21.           call be made configurable so that we can change the type or
  22.           number of rings?
  23.     3.3 - What does IXJCTL_DSP_RESET do? 
  24.     3.4 - What does IXJCTL_DSP_SYNC do?
  25.     3.5 - What does IXJCTL_DSP_TYPE do?
  26.     3.6 - What does IXJCTL_DSP_VERSION do?
  27. Section 4.0 - Performance Improvements
  28.     4.1 - How can I reduce latency?
  29. ___________________________________________________________________________
  30. Section 1.0 - General Questions
  31. 1.1 - What is the sample rate for audio on the cards?
  32. A:  Everything is being done at 8KHz.
  33. 1.2 - Can the Internet PhoneJACK/LineJACK do CallerID?
  34. A: Yes and No.  The LineJACK can detect the CallerID information and
  35. that information can be made available to the driver.  The driver does
  36. not yet support this, but it will in the near future.  However, the
  37. LineJACK will probably not be able to generate CallerID information
  38. without extra user-level code.  This requires an FSK signal (at 1200
  39. baud) be generated and played over the line between the first and
  40. second rings.  The hardware will support this on-hook transmission,
  41. but code has yet to be written to take advantage of that.
  42. 1.3 - Can I put multiple LineJACK/PhoneJACK cards in one computer?
  43. A: Absolutely!  The driver will support up to 16 such devices in one
  44. computer.  The device files created in the /dev directory are numbered
  45. ixj0-ixj15.  
  46. ___________________________________________________________________________
  47. Section 2.0 - Installation and Configuration
  48. 2.1 - How do I load the module?
  49. A:  If you are loading the module by hand, use insmod.  An example
  50. of this would look like this:
  51. insmod ixj io=0x300 ixjdebug=0
  52. Then verify the module loaded by running lsmod.
  53. 2.2 - How can I use kerneld do automatically load the ixj module?
  54. A:  You need to edit /etc/conf.modules and add the following lines:
  55. options ixj io=0x300 ixjdebug=0
  56. alias char-major-159 ixj
  57. If you do this, then when you execute an application that uses the
  58. module kerneld will load the module for you.  Note that to do this,
  59. you need to have your kernel set to support kerneld.  You can check
  60. for this by looking at /usr/src/linux/.config and you should see this:
  61. # Loadable module support
  62. #
  63. CONFIG_MODULES=y
  64. # CONFIG_MODVERSIONS is not set
  65. CONFIG_KMOD=y
  66. 2.3 - How can I let non-root users use the ixj devices?  
  67. A: You need to set the permissions on the devices to a group that you
  68. want to have permission to use the card.  Here is how:
  69.      - decide upon a group name to use and create that group if 
  70.        needed.  Add the user names to that group that you wish to 
  71.        have access to the device.  For example, we typically will
  72.        create a group named "ixj" in /etc/group and add all users
  73.        to that group that we want to run software that can use the 
  74.        ixjX devices.
  75.      - change the permissions on the device files, like this:
  76.        chgrp ixj /dev/ixj*
  77.        chmod 660 /dev/ixj*
  78. Once this is done, then non-root users should be able to use the
  79. devices.  If you have enabled autoloading of modules, then the user
  80. should be able to open the device and have the module loaded
  81. automatically for them.
  82. 2.4 - How do I use isapnp? 
  83.  
  84. A: If you are new to the isapnp tools, you can jumpstart yourself by
  85. doing the following:
  86.    a.  run pnpdump to get a blank isapnp.conf file
  87. pnpdump > /etc/isapnp.conf
  88.    b.  edit the /etc/isapnp.conf file to set the register IO addresses.
  89.    c.  if you have multiple Quicknet cards, make sure that you do
  90. not have any overlaps.  Be especially careful if you are mixing Internet
  91. PhoneJACK and Internet LineJACK cards in the same system.
  92. More information is available at:
  93. http://mailer.wiwi.uni-marburg.de/linux/LDP/HOWTO/Plug-and-Play-HOWTO.html
  94. 2.5 - How do I make isapnp work?  It keeps failing!
  95. A:  There is a known problem with the isapnp system for recent distributions
  96. To work around this, do the following:  
  97.    - edit the isapnp.conf file and look for this line near the top:
  98. (CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING
  99. change that line to look like this:
  100. (CONFLICT (IO WARNING)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING
  101. then go to the section where you activate the Quicknet card and
  102. find the area that looks like this:
  103. (IO 0 (SIZE 16) (BASE 0x0310) (CHECK))
  104. and edit it to look like this:
  105. (IO 0 (SIZE 16) (BASE 0x0310))
  106. Use the appropriate io port address for your system, of course.
  107.      
  108. ___________________________________________________________________________
  109. Section 3.0 - Use of IOCTLS
  110. 3.1 - Will we be able to set a configurable frame size for linear (PCM)?
  111. A: The only options are 10ms (160 bytes), 20ms (320 bytes), and 30ms
  112. (480 bytes).  Right now it is locked at 30ms frames because that is
  113. the fundamental frame size of all the TrueSpeech formats, including
  114. G.723.1.  Access to those codecs were the primary design goal of this
  115. driver.  It is not possible to simply stream bytes into the DSP like
  116. you would a sound card.  That would require a much more sophisticated
  117. buffering system than we now use.
  118. 3.2 - Is the IXJCTL_RING ioctl call a blocking call ? Can this call be
  119. made configurable so that we can change the type or number of rings?
  120. The IXJCTL_RING ioctl will be supplemented by other ioctls that will
  121. change the type and number of rings.  These ioctls are already planned and
  122. partially implemented.  
  123. 3.3 - What does IXJCTL_DSP_RESET do? 
  124. #define IXJCTL_DSP_RESET                _IO  ('q', 0x00)
  125. This ioctl will send the reset signal to the DSP should something go
  126. wrong and the DSP get into an unknown state.  Under normal
  127. circumstances it is not needed, but this is the real work and
  128. circumstances are not always normal. :)
  129. 3.4 - What does IXJCTL_DSP_SYNC do?
  130. #define IXJCTL_DSP_SYNC                 _IO  ('q', 0x01)
  131. This sets the sync mode of the DSP, host sync, poll sync etc.  Again
  132. this is not normally needed as the driver sets the proper mode of the
  133. DSP, it was mainly included for completeness of the DSP command set.
  134. 3.5 - What does IXJCTL_DSP_TYPE do?
  135. #define IXJCTL_DSP_TYPE                 _IOR ('q', 0x0C, int)
  136. This returns a value that indicates the DSP type, for the Phone Jack it
  137. will return 0x8020 and for the Line Jack it will return 0x8021.
  138. 3.6 - What does IXJCTL_DSP_VERSION do?
  139.  
  140. #define IXJCTL_DSP_VERSION              _IOR ('q', 0x0D, int)
  141. This will return the version of the DSP that is on the board.  Typical
  142. values are 0x0112 and 0x0114.  This can give some insight when doing
  143. diagnostics on CODEC problems, as the DSP code version implements some
  144. CODECs differently.
  145. ___________________________________________________________________________
  146. Section 4.0 - Performance Improvements
  147. 4.1 - How can I reduce latency?
  148. A: Reducing latency across the Internet is beyond the scope of this
  149. answer!  However, reducing latency with the cards is possible in
  150. certain situations.  The IXJCTL_REC_DEPTH command sets the internal
  151. buffer depth of the DSP.  Setting a lower depth reduces latency, but
  152. increases the demand of the application to service the driver without
  153. frame loss.  The DSP has 480 bytes of physical buffer memory for the
  154. record channel so the true maximum limit is determined by how many
  155. frames will fit in the buffer.
  156. 1 uncompressed (480 byte) 16-bit linear frame.
  157. 2 uncompressed (240 byte) 8-bit A-law/mu-law frames.
  158. 15 TrueSpeech 8.5 frames.
  159. 20 TrueSpeech 6.3,5.3,4.8 or 4.1 frames.
  160. The default in the driver is currently set to 2 frames.