*********** NetStream2000 driver for Linux FAQ **************

(updated Feb 21th 2001)

1. OS related questions
-----------------------

Q1.1 What flavors of Linux does the Netstream2000 work with?
	
     Drivers and supporting applications should work with all major
     Linux distributions. More precisely:

Q1.2 Which kernel is this software compatible with?

     2.0.x is not supported by the current module and is not planned to be.

     2.2.x versions with x<=15 are supported using a kernel module
     called dvdpacketcommand.o.
     2.2.x versions with x>=16, and 2.4.0-testx versions are supported
     using the new kernel cdrom API.

     2.4.x versions are now supported yet (using the new kernel cdrom API).

     Multiprocessing: SMP-enabled kernels are not supported.

     Some 2.3.x versions may be supported using a solution or the other.

     Since the modules come with source code, advanced users can 
     modify them for customized use at will --- 2.0.x or SMP support.

Q1.3 Can I use Netstream2000 on LinuxPPC or any other non-x86 Linux systems?

     No. Sigma Designs supports only x86-based CPU. There is no plan
     for ports to other architecture in a near-future.

Q1.4 Is FreeBSD or any other BSD flavor supported?

     No. There is no plan for a port to xBSD in a near future.

2. Hardware-related Questions
------------------------------

Q2.1 Does this driver work on other cards from Sigma Designs (Hollywood+,
     NetStream2...)?

     This driver works on Sigma designs cards based on the EM84xx
     newest chip, right now this chip is found only on the 
     NetStream2000 boards.

     About older hardware (EM8300 and before):
     Sigma Designs never stated any intention of bringing Linux compatibility
     for EM8300-based cards and has no plans to support EM8300.

     There is an experimental linux driver for the Hollywood+ by an
     independent programmer Henrik Johannson (see on
     http://www.freshmeat.net). This driver has only bare bone
     capabilities (especially no DVD navigation features).  Sigma
     Designs does not support this non-proprietary driver and will not
     answer questions towards its installation, use, and bugs.

     Disclaimer: Sigma Designs provides links to third party websites
     for drivers and other information that support the use of our
     products without any implied endorsement. These are proprietary
     sites and offerings, and as such we make no representations of
     worthiness of their code, nor do we provide any technical support
     or related customization services.

Q2.2 What do I need to use the software?

     You need a NetStream2000 board by Sigma Designs. for DVD
     playback, an IDE or SCSI DVD-Drive is required. To use the sample player
     provided, you will need a REALmagic remote control, available for
     purchase at http://www.sigmadesigns.com/products.htm#rc.
     You may also find free third party players (check
     http://ns2k4linux.sourceforge.net/ for instance ).

Q2.3 Will my SCSI DVD-drive work?

     Yes, but only with kernels >=2.2.16.

Q2.4 How do you handle RPC-2 DVD drives? and RPC-1 DVD drives?

     To play a DVD title, the DVD disc itself and the NetStream2000
     need to be set to the same region code. When using an RPC-2
     drive, it must be set to the same region too.

3. Capabilities-related questions
---------------------------------

Q3.1 What are the formats supported by this beta?

     This beta will allow you to play MPEG-1 and MPEG-2 files, DVD and
     SVCD titles, transport streams, etc...
     See the full documentation for further details.

Q3.2 What kind of transport stream is supported?

     Quoting an answer made to one of our customers:

     ``How the demux guess what PID is audio and what PID is video ?  
	
       The demux is using the PAT and PMT. 

       Should we include a PAT (Program Association Table) and a PMT (Program
       Map Table) with the only ES required ?  

       Right now, we support only transport stream that have only one program
       stream. We need the PAT and PMT to demux.

       Any restriction on the PID chosen ?  

       No restriction on PIDs.

       Must we include PCR packets ?

       We do not use the PCR right now, but we may use them in the future.''

Q3.3 Is analog overlay available?

     Yes. For details see README.advanced file in the package.

Q3.4 Is OSD supported on the TV output?

     On-Screen Display allows you to display bitmaps on the TV,
     fullscreen or over parts of the playing video.
     The NetStream 2000 has such capability and software support for
     it is coming soon.

4. FMP API-related questions
----------------------------

Q4.1 How do I switch between PAL and NTSC?

     Look at sample source code in CelesteApp/remote.c, line 1607
     (this is the implementation of the --pal command line switch).

Q4.2 How can I stream video over the network?
	
     If you do not use a specific protocol such as RTSP, if the
     stream comes from a socket as it would come from a file, you may
     write a very simple program on the RMPLAYFILE model to read
     from a traditional UNIX socket.

5. Troubleshooting
------------------

Q5.1 insmod realmagic84xx.o answers ``device or resource busy''

     Three possible explanations:
	* there is no NetStream2000 plugged in the computer
	* the card is not enabled by the bios or badly inserted 
          (run grep 84xx /proc/pci to make sure the PC recognizes it)
	* (very, very rare) for some reason the module execution
 	  went wrong. You will certainly run into a kernel Oops
	  soon, you'd better reboot.

Q5.2 an application using libEM84xx.so exits saying: ``cannot open quasar''

     Quasar is an alternate name for EM84xx.

     Two possible explanations:
	* you did not run loaddriver script / more details: realmagic84xx.o
	is not inserted, the /dev/realmagic0 device does not exist, or
 	does not have the right permissions
	* /dev/realmagic0 cannot be opened twice: maybe a previous application
	using the device crashed and kept the device open. Check this with
	pidof playfile or ps axuw |grep playfile
	and killall -KILL playfile (can occur with remotecontrol).

Q5.3 what is a buffer?

      A buffer is reserved as contiguous pages by the kernel module
      (so that it is suitable for DMA). A page is 4KB on i386 
      and usually we choose 32KB size for buffers (8 contiguous pages).

      In case of low ram or loaded system, memory gets really sparse
      and you may be unable to get easily contiguous pages. Asking 
      for larger buffers (64KB, 128KB) in this case will make things 
      worse --- this is not a bug of our driver but an expected OS 
      behavior.

      So, better increase the number of buffers instead of the size 
      of the buffers.

      8 buffers of 32KB has always been enough in our tests, and 
      increasing the number of buffers doesn't make things much better.

      If you really need a deterministic behavior, and have a platform
      with x MB of RAM, you can boot linux with mem=(x-1)M of RAM and
      then use the last MB as you like it; you can then rewrite dmaalloc
      in quasar.c to pick its memory from this reserved area [need some
      knowledge of linux device driver programming].

Q5.4 How can I get my DVD drive to work in DMA mode?

      First of all, this does not improve performance a lot.

      The transfer mode of the drives is an operating system feature
      and cannot be directly controlled by the NetStream2000 driver.

      Here is how to proceed --- enabling DMA on some drives or
      mistaking the devices names on IDE interfaces can lead 
      to unpredictable results
      * if your drive is on secondary IDE, reboot your kernel
	with the option ide1=dma (or insert ``append = "ide1=dma"''
	in your lilo.conf appropriate section, run lilo and reboot).
      * run hdparm -d /dev/hdc if your drive is secondary master.

Q5.5 I have a NetStream2000 but no remote control! What can I do?

      You can run RMPLAYFILE application to check your card works.

      You can study the code in RMREMOTE/linuxremote.c and other files,
      rewrite OSReadPort and similar functions to get their input from
      the keyboard (getc()) and then map your preferred keys on the
      commands in the remote.c switch { } statement.

Q5.6 I have setup a new linux kernel but I cannot compile the realmagic84xx.o
     module, insmod replies: kernel-module version mismatch.

      The most probable reason is: the new kernel is in /usr/src/linux/
      and you forgot to update the old kernel headers in /usr/include/linux,
      which are usually symbolic links.

      Usually when you compile a new kernel called 2.x.y, make sure:
	
      /usr/src/linux is a link to /usr/src/linux-2.x.y
      /usr/src/linux/include/linux is a link to /usr/include/linux
      /usr/src/linux/include/asm is a link to /usr/include/asm
      /usr/src/linux/include/net is a link to /usr/include/net

      This has to be done after compilation since asm/ only exists when
      make menuconfig (or friend) has been run.

      By the way you should not try to set up a new kernel if you're not
      really sure of the way to do it.

      Another reason for failure is that the module does not compile
      for the (customized?) kernel you use. You do not even have a valid 
      realmagic84xx.o file in this case and you can send us a detailed 
      report about this.

6. Getting more help?
---------------------

Q6.1 Where can I get more help ?

     This is beta software. Sigma Designs won't guarantee any support
     for it. Nevertheless, your input is very much appreciated. Feel
     free to send an email at linux@sdesigns.com or to post a message
     on news://news.sigmadesigns.com.
