If you are a skilled Linux user, the following explanations
will help you using the NetStream2000 driver without the scripts,
giving a better understanding of the situation.

The driver is made of
1. kernel land modules --- must be handled as root.
2. user land library and client applications --- better handled as user.

------------------------------------------------------------------------

1. Kernel land

 a. Special devices
  Must be created with mknod (e.g. ``mknod /dev/realmagic0 c 122 0'') 
  and chmod a+rw

  For /dev/realmagic?:
  crw-rw-rw-    1 root     root     122,   0 Oct 11 11:01 /dev/realmagic0
  crw-rw-rw-    1 root     root     122,   1 Oct  9 17:52 /dev/realmagic1
  For /dev/dvdpc?:
  crw-rw-rw-    1 root     root     123,   0 Oct 11 11:01 /dev/dvdpc0
  crw-rw-rw-    1 root     root     123,   1 Oct 10 16:33 /dev/dvdpc1
  crw-rw-rw-    1 root     root     123,   2 Oct 10 16:33 /dev/dvdpc2
  crw-rw-rw-    1 root     root     123,   3 Oct 10 16:33 /dev/dvdpc3

 b. realmagic84xx.o module
  insmod realmagic84xx registers all NetStream2000 present in the PCI bus. 
  If your board does not contain a EM8400 chip, override this default by using:
  ``insmod anyrealmagic.o quasar_dev_id=0x8450'' for instance.
  If insmod fails your board is either badly inserted, either broken.
  It *must* succeed or anything else will fail.

 c. dvdpacketcommand.o module
  Do you run a kernel allowing direct sending of packet commands? (check
  this by grep CDROM_SEND_PACKET cdrom.h:

  #define CDROM_SEND_PACKET       0x5393  /* send a packet to the drive */)

  Kernels >= 2.2.16, latest 2.3.x have this ioctl.
    For these kernels, the /dev/dvdpc? devices need not exist, 
    dvdpacketcommand.o module are obsolete (cannot be compiled anyways).

  Kernels <= 2.2.15 do not have this ioctl.
    This module (read the source code) scans the IDE interface and
    exposes the cdrom_queue_packet_command function. Resp. hda, hdb, hdc, hdd
    are mapped on resp. /dev/dvdpc0, 1, 2, 3.

 d. About ATAPI errors
   The packet command used to ask the DVD drive its RPC scheme:
   a4 00 00 00 00 00 00 00 00 08 08 00
   is not understood by most RPC1 drive and the kernel logs this
   as a bogus ATAPI command. RPC2 drives answer properly.

 e. Boards and design supported by this release (Hardware Library):
 	// analog overlay boards
	NE2000_BRD
	NE2000TV_BRD
	NE2000STPC_BRD
	ANALOG_PVR_BRD

	// digital overlay boards
	VE2000_BRD
	GALAXY2_BRD
	CLARION_BRD
	QUAD_BRD
	DIGITAL_PVR_BRD
	HOMETH_BRD
	QUAD7X_BRD

2. User land

 a. Finding dynamic libs
   Do not forget export LD_LIBRARY_PATH=./lib
   remotecontrol, playfile, link dynamically to libEM84xx.so.

   calibration, miniplayer and fileplayer link dynamically to libnovaclient.so 
   and libsettings.so. Commands are sent to the process using the
   decoder (remotecontrol) using a message queue. This IPC changes
   with USE_REALMAGIC84xx to allow multiple devices to run at the same time.

 b. Choosing between devices via environment
   If you use a recent kernel allowing CDROM_SEND_PACKET you *must* set
   export USE_KERNEL_CDROM_SEND_PACKET=yes
   If this variable is unset default is to try accessing also /dev/dvdpc?.

   You can choose the decoder if you have more than one with:
   export USE_REALMAGIC84xx=/dev/realmagic1 for instance. 
   If this variable is unset default is /dev/realmagic0.

   You can choose the DVD drive to use if you have more than one with:
   export USE_DRIVE=/dev/hdb for instance. 
   If this variable is unset default is /dev/hdc (secondary master).
   If kernel does not allow CDROM_SEND_PACKET, do *not* use link names 
   such as /dev/cdrom, since the dvdpc number is deduced from the /dev/hd?
   name.
   If it does, you can also use SCSI drives (usually /dev/scd0). Do not
   forget chmod a+rw.

   For remotecontrol application, you can choose the remote control port
   with
   export REMOTECONTROLPORT=/dev/ttyS1 for instance.
   If this variable is unset default is /dev/ttyS0 (first serial port).
   The serial port must be chmod a+rw and will be set in raw mode during
   operation.

   Using environment you can easily get two or more NetStream2000 to play on
   the same PC; if you take care to autocalibrate separately each device
   you can get multiple DVDs to play in windows on the same VGA monitor.

 c. Configuration files
   [HOME must be set]
   $HOME/.realmagicrcx stores the customized parameters for /dev/realmagicx  
   device.
   $HOME/.realmagicanalogoverlayrcx stores the analog overlay calibration
   parameters for /dev/realmagicx device.
   $HOME/.realmagicHWLrcx stores the EM84xx Hardware Library settings
   parameters for /dev/realmagicx device. realmagicHWLrc0 can be used as an
   example.

 d. Crashes
   If for some reason remotecontrol crashes, a sleeping process may remain
   in the process table, preventing a new one to open(/dev/realmagic0).

   Check this with pidof remotecontrol if your system has this command.
   Kill it with killall remotecontrol. Often this won't be enough, you
   will have to use 

   killall -KILL remotecontrol

 e. ``Real-time'' features, round robin scheduling, priorities and memory
   locking.
	
   To use these features you must run the application as root.
   Use for instance:

   export USE_ROUND_ROBIN=50,60,70

   to set the priority of the interrupt thread to 70, the priority
   of the stream class driver threads to 60, and all the other threads
   to 50.
   The logs show when the settings are actually done.

About analog overlay

   Analog overlay autocalibration is ok for 1024x768, 800x600 or 640x480.
   For higher resolutions autocalibration may be difficult or impossible;
   because of hardware bandwidth limitation, you will get a blurry or 
   distorted overlay at resolutions over 1600x1200.
   
   Low resolutions like 800x600 or 640x480 allow an optimal quality of 
   the overlayed image. Since the window content (the key color) is
   overwritten by an analogic signal, resolution of the monitor is
   not relevant then.

   During the autocalibration process the decoder should not be playing;
   we use for this purpose a ``dummy'' application that just calls
   MPEGDriverEntry and sleeps. You may use calibration or miniplayer
   on a playing DVD to change brightness/saturation/contrast/volume.

   Of course you may run or you will run into troubles if you use:
	* remote displays :-)
	* more than one monitor
	* more than one screen	
	* virtual desktops
	* customized high-resolution or very high vsync modelines
	* a monitor resolution less than root window resolution (viewport)
	  This should be handled ok, though, when moving the window.

   If you switch resolution with Alt-Ctrl-+/- miniplayer won't catch
   the change and the overlay will certainly be offscreen.
 
   Note: calibration application expects XF86VidModeGetModeLine, 
   XF86VidModeGetViewPort/SetViewPort to run properly which was not 
   the case on one of our test machines.
   (calls to XF86VidModeSetViewPort have been disabled).

***

You may also read the ChangeLog file to get detailed information about
NetStream2000 beta driver progress.
