Nextview EPG Decoder Documentation

This is the manual page for the nxtvepg software package.



NAME

nxtvepg - Decoder, Browser and Analyzer for the Nextview Electronic Programme Guide

SYNOPSIS

nxtvepg [ options ] [ database ]


DESCRIPTION

nxtvepg is an X11 and Win32API application to decode, analyze and browse TV programme schedules transmitted on analog TV channels as defined in ETS 300 707: ``Protocol for a TV Guide using electronic data transmission'' by the European Telecommunications Standards Institute.

The Nextview standard was developed for use in TV sets, but it can also be received and used in a PC - provided you have a Teletext capable TV tuner card and are lucky enough to have a Nextview content provider in your country.

nxtvepg enables you to obtain free TV programme listings for all of the major networks in Germany, Austria, France and Switzerland. Currently Nextview EPG is transmitted by the following TV networks (note that each of these EPGs cover not only the provider's programme but also that of many other networks):

For up-to-date information check the nxtvepg homepage in the Internet (see the About popup in the Help menu). If you don't receive any of the channels listed above, you can only use the demo mode as described with the -demo command line option.


OPTIONS

Summary of command line options:

-display display
UNIX only: The display on which the windows will be created. Default: taken from environment variable DISPLAY.

-geometry geometry
Specifies the position of the main window, e.g. -geometry -0+0 to put the main window in the upper right corner of the visible screen. The size of the window cannot be changed.

-iconic
Start with the main window iconified (i.e. minimized).

-rcfile path
Specify an alternate configuration file. Default: on UNIX $HOME/.nxtvepgrc, on Windows nxtvepg.ini in the current directory.

-dbdir directory
Specify an alternate directory for the databases. Default: On UNIX /usr/tmp/nxtvdb, on Windows the current directory. Note that the database management is not equipped for concurrent writing, so if you have more than one TV tuner card in your system or network, relocate the directory into the users' homes.

If you're using an acquisition daemon, the browser must be configured to use the same directory as the daemon. If the daemon is running on a different host, you need to mount the remote directory, e.g. via NFS.

-card index
Specify which tuner card to use, if you have more than one. The given index is appended to /dev/vbi and /dev/video. Default: index 0, i.e. the card in the first PCI slot.

-provider CNI
Select a provider by its hexadecimal CNI (Country and Network Identifier), e.g. -provider d94 for ``Pro Sieben''. You can find out the provider's CNI during a provider scan or from the database file names. Default: the last provider selected during the previous session.

-noacq
Start with acquisition disabled. The acquisition can still be started later from the Control menu.

-daemon
Start without the graphical user interface (UNIX only). The process will detach from the terminal and perform background acquisition. If no other options are given the same provider and acquisition mode as configured with the GUI will be used. If the -provider option is given acquisition will work for this provider only (note the difference to non-daemon mode, where that option selects the browser database). The -daemon option cannot be combined with the -noacq or -demo options.

The daemon always creates a named socket in the /tmp directory plus optionally a TCP/IP socket to allow connects by browser processes. While connected, the browser receives updates for opened Nextview databases and reports about the acquisition progress; if left unconnected, the browser listing might be incomplete or outdated.

It's important to note that the browser must use the same -dbdir directory, because the daemon forwards only deltas to the database files stored in that directory. For more details see the Client/Server dialog described in CONFIGURATION.

Warning: for security reasons it's depreciated to run the daemon with root privileges, because nxtvepg has not been reviewed yet for possible exploits. If you want to start the daemon already during system startup, you should use su(1). Also note that you'll probably need to specify -rcfile because the $HOME environment variable might not be (correctly) defined. Example:

   su nobody -c "/usr/local/bin/nxtvepg -daemon \
                 -rcfile /usr/local/etc/nxtvepgrc"

The only way to stop the daemon is to send it a signal, i.e. kill it with SIGTERM. For more details see CONTROL and FILES.

-nodetach
In daemon mode this option prevents the process actually making itself a daemon, i.e. it doesn't fork and stays connected to the terminal. Also all log messages starting with level .I warning are sent to standard error out (e.g. configuration errors that lead to an immediate exit). This mode is intended for debugging purposes only.

-acqpassive
In daemon mode this option overrides the acquisition mode setting in the configuration file and forces the acquisition into passive mode (see ACQUISITION MODES). The configuration file is not changed, so that you can use different acquisition strategies for daemon and GUI.

-demo path
Load database given by path and enter demo mode. In this mode all entries of the database are shifted into the presence, i.e. just far enough so that none expire. Hence the entries' dates and times are not for real and acquisition or database reselection is not possible.

-help
List all available command line options.

After the options you can add a database filename. This is equivalent to specifying -dbdir and -provider. The provider CNI is taken from the file name. If the file name does not have the format as defined in FILES, it's assumed to be a demo database and loaded just as with the -demo option. The database filename argument silently overrides any previously given options.

This is particularily useful for users of graphical file managers (like the Windows Explorer) who can just drag and drop a database file onto the executable. When used on Windows systems the working directory is set to the one that contains the executable, because the Explorer seems to set it to the user's desktop root, so that none of the DLLs and drivers are found.

Note to Windows users: all these options - unless otherwise noted - are available in the Win32 version too. You can supply the options either from a ``MS-DOS'' command prompt or batch file, or by appending them to the executable in a shortcut definition.


GETTING STARTED

Before you can start reading in TV programme schedules (called acquisition from here on), you have to do just a few configurations. Which ones depends on your setup and will be described in the following. As long as your browser window contains no data, there's also a recommondation how to get to data in the browser window, highlighted with a yellow background.

This manual describes all features of nxtvepg in detail. You do not have to read all of it at once to operate the software. However it's recommended to skim at least through BASIC BROWSING, DATA ACQUISITION and FILTERING.

Windows users first have to configure the driver for their TV card. Therefore invoke the 'TV card input' dialog from the Configure menu (see CONFIGURATION) and specify the type of your tuner. In Germany, Austria and Switzerland it should be either Philips PAL or Temic PAL. In France it's one of the SECAM types. Then select how your card's PLL needs to be set up. On most cards it's either No init or 28 MHz. If you're not sure about your configuration, start with the topmost and then try them one after each other and start an EPG scan inbetween to check if the tuner works. If this seems too much work, open your PC and read the manufacturer from the metal tuner box on the TV tuner card.

If you don't have an antenna connected to your PC, you can select an external source for video input. If you have problems see README for more details and a list of error messages from the Windows driver.

UNIX users just need to check if the correct input source and frequency table are selected in the TV card input dialog.

In the next step - if you chose to use the TV tuner - run a provider scan from the Configure menu. During the scan all TV channels are checked for Nextview transmissions. After the scan has finished, open the provider selection dialog from the Configure menu and select you favorite one.

If the provider scan does not find all Nextview provider channels (possibly due to weak reception - this is a very simple scan that does not attempt any fine-tuning) check the Slow button and try again. If this does not help, you can still add the missing providers manually. set the acquisition mode to external or passive (UNIX only). Then use an external application to tune the channel (Windows users have to stop acquisition first; then start the TV application; then tune the channel; then quit the other application; finally start acquisition again). In external mode nxtvepg will not touch the tuner and wait infinitly for Nextview reception on the current channel. On Windows (and Linux with bttv drivers version 0.7.50 and earlier) this method has the disadvantage that no frequency will be known for this provider so this procedure has to be repeated every time you start acquisition.

Alternatively if you decided not to use the tuner, open the Acquisition mode dialog from the Configure menu and select external mode. Then provide the video signal of one of the content provider channels listed in the introduction to the selected input socket. As soon as an EPG provider is recognized, its data will appear in the browser window. See DATA ACQUISITION about the disadvantages of not using the TV tuner as input.

Acquisition of a complete database takes about 20 minutes. However programmes that are nearer in the future are available much faster, since they are transmitted more often. The currently running and directly following programmes of all networks are usually available after about 2-3 minutes max.


BASIC BROWSING

The browser mainly consists of two windows: the upper one contains a list of programme titles, sorted by start time. All currently running programmes (or rather: all programmes that should be running according to their start time) are marked by a light blue background color. One line in the list is selected by a cursor; the lower window contains the attributes and description for this selected title. The amount of information available here depends entirely on the content provider.

The basic browsing of programme information works very straight-forward. You can either use the mouse or the keyboard cursor keys:

With the mouse, you can click on any title to select it and display its description in the lower window. With a double-click you open a popup window with a summary of all attributes known for that title. See FILTERING on how to use those for filtering. Use the scrollbar to scroll the listing forward to programmes farer in the future.

With the keyboard, use the Cursor up/down keys to select any title. For fast scrolling use the page up/down keys. With the Home key you always get back to the first title. With TAB and SHIFT-TAB you can move the keyboard input focus to other widgets, e.g. to the scrollbars or the shortcut list. On Unix, the menus can be accessed with the Meta key (usually the ALT key) together with one of the underlined characters in the menu buttons.

nxtvepg can communicate with the xawtv TV application (UNIX only) to provide a connection in both directions: Firstly you'll find a Tune-TV button in the main window below the clock. When you press it, the network of the currently selected programme will be tuned into xawtv. With the right mouse button you can also pop up a small menu which offers basic control over xawtv. Secondly, when you change the channel in xawtv, the cursor will automatically jump onto the programme currently running on that network. To use these features, you'll have to open the Network name configuration dialog at least once to synchronize network names with your xawtv station names. See CONFIGURATION for details.

At the bottom of the window there is a status line which informs you about the state of the browser database and background acquisition. It's basically a very dense summary of the Statistics popups from the Control menu and is especially useful to warn you about the database age or stalled acquisition.

Note: For most providers it holds true that descriptions are available only (or only in full length) for currently running programmes and those whose start time is very close. This time span for full coverage can be as short as 2 hours, or 3 titles per network. For details on the acquisition process see the following chapter.


DATA ACQUISITION

As long as acquisition is enabled, programme titles are constantly being acquired or updated in the background. You will notice that all incoming programme information is instantly inserted to the programme listing. Every effort is taken to not alter the cursor position or title selection, except if the cursor is on the very first item - then the cursor stays on top.

By default, the acquisition always works for the provider whose database you have loaded into the browser. Therefore, upon program start or whenever you switch providers, the TV tuner is set onto the frequency of the provider's TV channel. Please note that this mode is only possible after a provider scan, because that's the only way to find out the frequencies. Check out ACQUISITION MODES for more sophisticated acquisition strategies.

If you do not choose the TV tuner as input (e.g. if you choose an external source via the Composite or S-Video input sockets), or if the TV tuner is kept busy by another application (UNIX only, e.g. if you watch TV) data is still being acquired, but it's no longer possible to automatically change the TV channel. Hence you are resposible for selecting the channel of the provider who's database you want to load or refresh. If a transmission belonging to a different provider than the one selected in the browser is detected, a second database is automatically opened in the background to store the incoming data.

The transmitted database is constantly in change: Elapsed titles are removed, new titles appended, and the titles closest to the current time updated with an increased amount of description. (The reason that the complete description is not transmitted for all titles is simply that the size of the database has to be reduced - it shall be transmitted in 20 minutes maximum.) So you should start the acquisition as often as possible, about every 2-3 hours, at least a couple of minutes before you browse.

You can monitor the progress of acquisition with the timescale and database statistics windows from the Control menu. See STATISTICS for details.


ACQUISITION MODES

The acquisition mode configuration dialog enables you to control for which providers data is collected, and in which order. It's mainly intended for users who use more than one provider's database, i.e. in a merged database, or want to optimize startup time. If you're happy with a single provider or don't want to browse immediately after program start, you should keep the default, which is loading data always for the provider selected in the browser.

Passive
UNIX only: In this mode the software never accesses the video device and never changes the input channel or tuner frequency. It's useful if you want to set up the source with command line tools like v4lctl. If you're using applications which keep the video device busy (e.g. a TV application) you don't need this mode, because when nxtvepg detects an unsolicited channel change, it automatically switches to the passive mode for as long as the video device remains busy.

Please note: when nxtvepg does not control the input channel, it can not automatically take care of updating your databases. Even if the browser database should be completely empty, no data will appear until you tune in the provider's channel manually with an external application. Because of this, passive mode is depreciated.

External
This is the recommended mode for Composite or S-Video input sources. Only the input source will be set; the tuner is not touched. Hence the provider channel has to be selected either externally (e.g. in a satellite receiver connected to the Composite or S-Video input sockets) or by a different application (e.g. TV application, UNIX only), just like in passive mode.

On Windows systems this mode can be used if your tuner is not known to nxtvepg, i.e. if the EPG scan does not find any channels with all of the available tuner types. In this case tune in the provider channel with a TV application; then quit this application and start nxtvepg. When you view the acquisition statistics from the Control menu, the VPS/PDC code of the tuned channel should appear in the lower half of the window.

Follow-UI
This is the default mode: the acquisition always works for the provider you have selected for the browser (i.e. user interface). If you change the provider in the browser window, acquisition follows by tuning the new channel. Of course this requires to have performed an EPG scan at least once, so that the tuner frequencies of all providers are known. When you use a merged database in the browser, acquisition works on each of the merged providers, one after another, just like in the mode described next.

Manually selected
This mode enables you to manually select for which providers the acquisition should work. If you select more than one provider, they are loaded one after another, in your specified order. Warning: if you choose a provider for the browser that's not on the list, no data will be loaded into the browser, even if it's completely empty.

Since transmission errors have to be considered, it's not attempted to load every single block of a provider before acquisitions switches to the next. Instead a statistical criterium was defined, that regards the variance in coverage of all networks contained in the database, and the slope of that variance.

Cyclic: Now - Near - All
Like the previous mode, this one enables you to specify a list of providers to load data for. However they are not just loaded completely one after another. Instead, a 3-staged round-robin is implemented. In the first stage, only Now data is loaded, i.e. the currently running and next 2-3 programmes. When this has been completed for all providers, the next stage begins, which loads Near data, i.e. all programmes running in the next 12-24 hours. When that was completed, the final stage loads the outstanding blocks for all providers. See below for an explanation what this mode is good for.

Cyclic: Now - All
This is the same as the previous mode, except that the Near stage is skipped.

Cyclic: Near - All
This is the same as the mode before the previous one, except that the Now stage is skipped.

Which mode is best for you depends on how you use the browser. As said above, if you're mainly using a single provider, stick with the Follow-UI mode. If you use a merged database, data is automatically loaded for all contained providers. However if you switch manually between multiple providers, you should choose one of the manual acquisition modes.

The Cyclic modes enables you to optimize startup time. While in standard manual mode, the first database is loaded completely before the next one is started, in Cyclic modes you can specify to load only Now data of all providers first. Hence already after a couple minutes you'll have updated Now information for all providers. If you require more look-ahead than the next 2-3 programmes, e.g. the complete evening, use a Cyclic mode that starts with the Near stage.

If you use manual acquisition together with a merged browser database, make sure to put the same provider at top in both lists, i.e. acquisition should always start for the ``master database'' of the merge.

Please note that the time until all databases are complete is longer in the cyclic modes than in standard manual mode. In general, the time used for the Now and Next stages just adds to the time to complete the database.

Also note that the cyclic modes depend on the transmission cycles of the providers. Firstly this means that the time ranges covered by the cycle stages may differ between providers. Secondly, the cycle times may vary. In the worst case the Near cycle runs as long as the cycle for the complete database (e.g. the German provider RTL2). In this case you don't win anything by selecting a mode that contains a Near stage.


STATISTICS

There are currently three ways to obtain information about the state of the databases and the acquisition process: the first and most obvious is the status line at the bottom of the main window (only if enabled, see see CONFIGURATION). The second one are the timescale popup windows, which visualize for each TV network the time ranges which are covered with TV programme data. The third one are the database statistics popup windows which offer technical details about the database, e.g. which percentage of entries is already loaded etc., both in textual form and as charts.

The latter two windows are available separately for the browser and acquisition databases. (By default both are the same databases, but you can configure background acquisition on multiple databases, see ACQUISITION MODES). All types of statistics are regularily updated while acquisition is running. While connected to an acquisition daemon, all statistics output refers to the acquisition running in the daemon.

Status line

The status line separately summarizes the state of the browser database (unless it's a merged database) and the acquisition process. Since there's not much room only the most relevant information is included there, i.e. the kind of information presented depends on the current state.

For the browser database you'll normally just see the name of the content provider network and a percentage that describes how many of the blocks (i.e. TV programmes) in the provider database already have been received.

If more than 10% of the blocks in the database lie in the past, you'll additionally see a note about this percentage of expired blocks. Note that a 100% loaded database may appear completely empty when all blocks are expired. As soon as you start acquisition the fill percentage will drop to 0 because a new inventory will have been loaded which no longer contains the expired blocks.

When acquisition for the browser database stopped more than 60 minutes ago, a note is added to the status line. In this case it may be advisable to start acquisition for this database to load descriptions for programmes that are now included in the ``Near'' time range (see DATA ACQUISITION).

If acquisition is currently not active you'll see a note about that, often together with a reason, e.g. ``no reception'' when you've manually tuned a station that doesn't transmit Nextview.

Else you'll see the name of the content provider network and a percentage that describes the progress of acquisition. Note that this percentage may be different from the overall fill percentage given with the browser database, as it also reflects blocks that have to be reloaded due to version changes.

Additionally there may be a note about the current mode of acquisition, like the current phase for cyclic acquisition modes or ``forced passive'' when nxtvepg is not able to change the channel, maybe due to a TV application running in parallel. See ACQUISITION MODES for details.

Timescale popup windows

You can monitor the progress of acquisition with the timescale windows which can be opened from the Control menu. There's one window for the browser database, and one for the acquisition database. The acquisition window is updated whenenever new EPG blocks are received.

The timescale windows have one scale for each network covered by the selected provider. Each scale covers 5 days, beginning with the start time of the first TV programme in the database. Depending on how long ago the database was updated, the dates may be partly or entirely in the past. The exact dates are printed in the date scale at top of the window.

Ranges that are covered by programmes of the respective network in the database are marked in shades of red or blue, uncovered ranges are left black. The different colors reflect the stream in which the data was received, or an error status; the shades age and version. Stream numbers are directly connected with the cycle phases mentioned in ACQUISITION MODES; besides this the difference is not relevant during normal operation.

red:
PI blocks received in stream 1, i.e. cycle phase 'Near'.

blue:
PI blocks received in stream 2, i.e. cycle phase 'All'.

dark red or blue:
PI blocks from an earlier database version.

orange:
expired PI blocks from stream 1.

cyan:
expired PI blocks from stream 2.

yellow:
invalid PI blocks (overlapping or zero run-time, block number not in the range given in inventory, etc.)

gray:
missing PI blocks. Note that the range can only be roughly estimated, as the time range a block covers is not known until the actual block is available.

black:
time range which is not covered by the provider.

In front of the scales there are 5 separate boxes, which refer to the first 5 programmes (PI blocks) in the inventory (AI block). They have two purposes: firstly, during acquisition you can see when the 'Now' cycle phase is complete; secondly you can check if the data from the Now cycle is expired (marked orange). If all 5 are orange, it's time to update the database.

Database statistics popup windows

There are two popup windows available from the Control menu which contain statistical information about the browser database and the acquisition database and progress. The window is horizontally divided in two parts: the upper part lists static information; the lower part lists dynamic info and is available only while acquisition is active.

The acquisition statistics are updated every time a new AI block (inventory which lists all covered networks and block counts per network; usually transmitted every 10 seconds) is received.

Last AI update:
The (local) time when the last inventory block was received. Since this block has to be transmitted on a regular basis it tells you when acquisition was active for this database.

Database version:
The version number is incremented by the provider every day or after content changes. A version change forces a complete reload of the database.

Blocks in AI:
How many blocks are transmitted in total. This number is taken from the provider's AI block, i.e. the inventory. Additionally listed separately for stream 1 and 2 (swo).

Block count db:
How many blocks are in the local database. At maximum this can be the number of blocks given in the AI block.

Current version:
How many blocks are in the local database and have the latest version.

Filled:
Percentage of blocks in the database in respect to the total given in the AI block, i.e. ``Block count db'' divided by ``Blocks in AI''. The second percentage in the line only reflects blocks of the current version and hence the degree of completeness of acquisition.

Expired blocks:
Number of blocks which have a stop time that's in the past, i.e. which no longer show up in the browser. The percentage given here is in respect to the actual number of blocks in the local database (all versions), not the AI.

Defective blocks:
Number of blocks with invalid or overlapping start time. These blocks do not show up in the browser (as it would be impossible to handle if there is more than one ``now'' entry for a network). The percentage given here is in respect to the actual number of blocks in the local database (all versions), not the AI.

The pie chart on the left on the window visualizes these numbers. The circle represents 100% of the blocks listed in AI. It's divided in stream 1 (red) and stream 2 (blue). The shaded segments represent the blocks that are still missing in the local database. The yellow segments the percentage of expired and/or defective blocks.

When you interpret those values, please remember that blocks may be appended to the transmission cycle when programmes have expired (in a slight violation of the Nextview standard this is done even without changing the database version). So you might see from time to time that the fill percentages take a step back down during acquisition. Also note that expired PI are not accessible from the user interface, however they are included in the database dump from the Control menu.

Acq. runtime:
How long the acquisition has been continuously running for this database. This timer is reset upon provider or database version changes or when an external channel change is detected.

Channel VPS/PDC:
The VPS/PDC code that has last been received on the currently tuned channel. Usually this will be the same as the provider CNI given in the database statistics, but you might see different values here when you manually tune in a different channel with an external application.

If a valid VPS/PDC code (Programme Identification Label, PIL) was received together with the CNI it is appended after the CNI in decoded format (i.e. DD.MM HH:MM with day, month, hour and minute). Note: the VPS/PDC codes are used to uniquely identify the current programme on a given network. You can display the codes for all programmes in the database if you enable them in the Column selection dialog (see CONFIGURATION).

TTX data rate:
The rate at which teletext data lines are received on the current channel in baud, i.e. bits per second. Each teletext line counts as 45 bytes.

EPG data rate:
Same as TTX data rate, however only teletext lines that belong to the page which transmits Nextview are counted.

EPG page rate:
The per second average of received teletext pages with carry Nextview data. Many provider transmit one page per second during the day and up to 1.5 or 2 pages per second during the night.

AI recv. count:
The number of AI blocks received since acquisition start. As long as this counter remains at zero, no data is added to the database (because the AI block is mandatory to identify the provider.)

AI min/avg/max:
The minimum, average and maximum distance between reception of AI blocks. The average should usually be 10 seconds. The maximum should not be much higher or else an EPG scan might have a hard time finding this provider; also the acquisition start-up time would be higher because at first an AI block must be awaited.

PI rx repetition:
The average of the number of times each block in the AI was received since start of the acquisition. Divided in Now, stream 1 and stream 2. This value is used by acquisition control in the termination criterium for acquisition phases, if the acquisition mode is cyclic.

Acq mode:
The current acquisition mode as configured by the user, or forced passive if nxtvepg failed to switch the channel.

Network variance:
The variance of block coverage across all networks. This value is used by acquisition control in the termination criterium for acquisition phases, if the acquisition mode is cyclic. It's calculated by separately counting the number of blocks in the database for each network; then for each network calculating the percentage of available blocks in regard to expected blocks; then calculating the average and finally variance of these percentages.

The diagram at the left displays a history of fill percentages for stream 1 and 2; the meaning of the colors is the same as in the timescale windows.


MERGED DATABASES

If you compare databases of different Nextview providers, you will often find that each has one or more nice features, or covers networks, that the others lack. Instead of changing back and forth between several providers all the time, database merging allows to select and combine features or networks from several original databases into one newly created database.

When you select the Merge providers... entry from the Configure menu, you will get a dialog with two listboxes: the left one contains a list of all currently available databases. The right one is the list of databases you want to merge. You can add, delete or reorder the entries is this list. When you're done with your selection, press Ok to start the merge and switch the browser to the new database.

By ordering providers in your selection, you assign priorities which are important for conflict resolution. A conflict occurs when programme start and stop times differ between providers. The likelyhood of such conflicts depends on the quality of your providers; theoretically they should never happen except if there are late program changes. In reality, conflicts are not that unlikely, particularily for programmes early in the morning. You should put the most reliable provider in the first position, because conflicting programmes from providers further down will be rejected, i.e. not added to the merged database.

The Configure button in the dialog gives you fine-control over the priority of providers during the merge of all distinct programme attributes. You can even completely remove a provider for an attribute, e.g. if they transmit false data (e.g. the Sound attribute is handled wrong by the German provider 3Sat: they have swapped Stereo and Surround). An exception is the title, where you must not delete any providers.

Attributes that cannot be merged, e.g. editorial rating, are fetched from the first database in the list that contains the attribute for a given programme. An exception are sorting criteria and series, where only the first provider in the list is queried (i.e. even if the first provider does not have a sorting criterion for a given programme, the further databases are not searched) because these types of attributes cannot be mixed between providers (see also FILTERING).

Note: If you use a manual or cyclic acquisition mode, you should take care to include all providers of your merged database in the same order. Else, program changes will not appear in your database until the provider with highest priority is loaded. If you stay with the default Follow-UI, acquisition control will automatically cycle across all merged providers in the correct order.


NAVIGATE

The Navigate menu contains a tree of filtering options, that's transmitted by the selected provider together with the programme data. Filtering enables to restrict the listing of programme information to those titles matching the selected menu entry.

The extent and content of this menu depends entirely on the provider. Unfortunately most providers supply only a very limited menu, so you'll probably want to define your own filters, as described in the next two chapters.

Any filter selection can always be undone by the Reset menu entry or the reset button in the main window.


FILTERING

Similar to Navigate, this menu allows to control which of the programmes in the database are presented in the listing. However here, you are not limited to a preselection of filter options. There's a filter for every kind of attributes that can be attached to a program, e.g. it's network, start time, theme descriptors, ... and many more.

Filters can be undone either singularily by selecting the same filter menu entry again, or globally by clicking on the Reset button or menu entries.

You can combine as many filters as you want to build a complex filter. If you combine two filters of different types, only programmes that match both attributes will be listed (logical AND). If you choose more than one filter of the same type, all programmes that match either attribute will be listed (logical OR).

Examples: If you want to see all programmes listed for either network ARD or ZDF, simply select both networks. If you want to see all movies scheduled on PRO7, select network=PRO7 and theme=movies.

Summary of filter options:

Features
Restrict the listing to programmes that match all given attributes (logical AND), i.e. sound format, picture format, analog/digital, encrypted yes/no, live/new/repeat and subtitles yes/no. If you want to allow more than one value of the same attribute (e.g. picture format wide OR Pal+) you have to put them into different feature classes.

Parental Rating
Restrict the listing to programmes that are suitable for children of the given age or elder.

Editorial Rating
Restrict the listing to programmes that are rated (by the content provider) to have at least the given quality. The range of rating values is 1 to 7. Note that some providers do not use all values, e.g. only 1 to 5, or e.g. just 3, 5 and 7.

Themes
Restrict the listing to programmes that have any of the given theme categories attached to them (logical OR). The Nextview standard contains a list of 76 predefined themes, which are structured into 11 main categories and subcategories. A programme can have up to 5 themes attached. If you want to restrict the listing to programmes that have more than one of the given themes (logical AND) you need to specify them in different theme classes.

Series
Restrict the listing to programmes that belong to any of the given series. A series code always implies a network specification (even if the same programme is transmitted on different networks). This filter type is only available for providers that assign series codes; for the other ones you can use text search among programme titles.

Program index
Restrict the listing to programmes who's index is in the given range. The currently running programme of each network is given index zero, the following programme of each network index one etc. The three most important combinations are available as radio buttons: now (range 0-0), next (range 1-1) and now or next (range 0-1).

For merged databases only indices 0 and 1 are supported.

Networks
Restrict the listing to programmes of one or more given networks. The filter is disabled when all checkbuttons are deactivated.

You can also permanently add an equivalent network filter menu to the main window by enabling Show networks at the end of the CONFIGURATION menu. Note that selection, order and names of networks are all configurable.

Text search
Restrict the listing to programmes who's title or description (or either if both options are enabled) contain the given text. If you enable match complete text an exact match will be required, i.e. a search for ``heute'' will not match on ``heute journal'' (this option is intended for title-only searches, as started from the context menu). If you enable match case character case is relevant in comparisons, i.e. a search for ``heute'' will not match on title ``Heute Abend''.

The last used options are remembered in your personal configuration file. A history of the last searches, including options, are also stored and available in the ``Title'' drop-down menu in the main browser window.

Start Time
Restrict the listing to programmes who's start time lies in the given interval. There are two special modes for the interval specification: If you enable Start at current time the interval start is fixed to the actual time when the filter is applied and the value given as stop time is interpreted as duration, i.e. it's added to the interval start. If you enable Stop at end of day the interval end is fixed to 23:59 of the same day.

Note that the main intention of this filter is to support time restrictions in the provider's navigation menus (see NAVIGATE). For manual navigation there are more practical alternatives, e.g. the scrollbar and drop-down menus in the main browser window.

Sorting Criterions
Restrict the listing to programmes that have any of the given sorting criteria attached to them. Sorting criteria work very much like themes, however their meaning is not predefined by the Nextview standard. The content provider can use arbitrary numbers to represent an attribute. Attributes usually are themes that are not in the predefined catalog, e.g. current events like the Olympic Games, but could also be not content related at all. The meaning of these numbers is only defined by the provider's navigation menus (see NAVIGATE).

Note that the interpretation of two filter types depends on the provider: sorting criterion and series. That's because those are just arbitrary numbers which only have a meaning in the context of the provider's navigation menu.

Hint: the filter menu can also be used to examine the filter options that are invoked by the entries in the Navigate menu.


FILTER SHORTCUTS

There's a number of predefined filter options in the main window below the clock. These shortcuts enable you to invoke filters by a single click of the mouse. You can freely add or remove entries from this list.

When you want to add a shortcut, either choose an entry from the Navigate menu or define your own filters via the Filter menu, possibly based on one or more already defined shortcuts. When you have found an interesting selection, call Add filter shortcut... from the Filter menu. You'll find a new shortcut appended to the list of existing shortcuts. First you'll probably want to enter a description in the entry field at the top of the dialog; default is just ``shortcut #xx''. When you're done just press Save, or Abort if you've changed your mind and don't want to add this shortcut after all.

You can also change descriptions or ordering of existing shortcuts in this dialog. If you want to modify the shortcut list without adding a new one, you can also access the dialog from the Configure menu.

If you want to change the filter settings of an existing shortcut, then invoke the shortcut, modify the settings as you need and then use the Update filter shortcut dialog in the Filter menu to save the new settings of any existing shortcut. You can use the Update & Edit Button to jump to the filter configuration dialog, e.g. if you want to fine-tune the description or ordering.

When you deselect a shortcut, either by selecting another shortcut or clicking on it a second time with CTRL held down, all it's filters will automatically be undone. Hence when you have two themes shortcuts, e.g. ``Movies'' and ``Sports'', and select first Movies, then Sports, you'll see only sports programmes afterwards. However if you had selected theme movies manually, e.g. by the context menu explained in the next chapter, the movies filter might remain set, so that you'd get all programmes of theme movies OR sports. Since that is usually not what one expects, a filter mask has been introduced to the shortcut setting.

The filter mask is defined in the shortcuts dialog with a checkbutton for each filter type. By default, the mask is enabled for every filter type you've included in the shortcut filter setting. When you invoke the shortcut from the main window later, all filters of the given types will be cleared (masked out) before the shortcut filters are added. To return to the above example: if the ``Sports'' shortcut is defined with a themes mask, the manually set movies filter would be cleared before the theme filter is set to sports.

The masking can also be enabled when no filter of that type has been chosen. This can be used to define undo shortcuts. E.g. choose the mask 'Themes' if you want a shortcut that allows to clear all theme-related filters at once. Or enabled all masks for a Reset button (the only difference to the pre-defined Reset button would be that the cursor does not jump to the first Now programme.)

You can invoke several shortcuts in parallel by pressing the CTRL or SHIFT keys when selecting in the listbox - just as you know it from other applications. However the behavior of the combined shortcuts is slightly subtle and might not always match your expectations. That's because the shortcuts are not cleanly separated when processed. Instead all filters of all selected shortcuts are thrown together and then processed as if they belonged all to one shortcut in the way described in FILTERING. This might change in the future if someone convices me there's a real need to.


CONTEXT MENU

Another quick way to select and deselect filters is by using the context menu, which is popped up with the right mouse button in the browser window.

This menu consists of three parts: the first entries allow to undo the previously selected filters - either one by one or globally (reset).

The second part offers a number of possible new filter options, which depend on the currently selected title and the already selected filters. The offered filter types include: themes and network of the selected programme title, it's series code, repeat or original transmission suppression (only in cunjunction with series or title text filters) and last but not least the title text.

The title text and series filters allow to check very quickly for repeats of a programme. These filter options are included only if there is a match, i.e. if there's another programme with the same title or series code repectively.

The optional third part is empty by default, but can be used to invoke user-defined external commands on the selected programme. More precisely, you can execute any command with parameters of the selected programme (like title or start time) on its command line. The user commands and can be added via the Configure menu (see CONFIGURATION).


CONTROL

Summary of commands available from the Control menu:

Enable acquisition
Toggles acquisition on or off. When you start the browser, acquisition is automatically enabled (although failure to do so is silently ignored). Switching off acquisition allows other applications (e.g. a teletext decoder) to use the TV card while you browse the database, if you have only one TV card.

UNIX: When acquisition is switched off, the /dev/vbi device is freed. Acquisition can also been switched on and off automatically (i.e. from a shell script) by sending signal HUP (e.g. with the kill(1) command) to any of the nxtvepg processes or threads. If you're using a daemon for acquisition (see the next command) you have to send the signal to one of the daemon processes/threads. To simplify this, the pid of the process which needs to be signalled is stored in /tmp/.vbi.pid while the device is in use.

Windows: When acquisition is switched off, the driver is unloaded so that other programs can access the TV card. Note that most Windows driver implementations do not allow for more than one TV card in the PC.

Connect to acq. daemon
UNIX only: Connect to or disconnect from an acquisition daemon, running in the background on the same host, or somewhere else in the network. The address of the daemon and other parameters are configured in the Client/Server menu (see CONFIGURATION). By default the daemon is started on the local host. The main advantage of using the daemon is that you can keep running acquisition permanently in the background, even if you terminate the browser, or even the X11 server (i.e. the windowing system).

If you attempt to connect, but no daemon is running, you'll be offered the option to automatically start the daemon and retry the connect, provided you have configured server hostname localhost. The daemon will be started with the same database directory and rcfile as the browser.

Note that disconnecting from the daemon or terminating the browser does not stop the acquisition and hence does not free the device. If that's what you want, choose the Enable acquisition command instead, which sends the TERM signal to the daemon, i.e. it terminates the process. Of course this option only is available if your daemon is running on the same host and with the same user id as the browser process.

Dump stream
UNIX only: All incoming Nextview blocks are dumped to stdout in an ASCII format. This is mainly intended for developers, but it may also help to debug reception problems, because in the dump you'll find any block that could be decoded without hamming errors, even before an inventory block (AI) has been received. This may help if you have very bad reception, because it may take a long time until a error-free copy of the usually large AI block is received.

When connected to a acquisition daemon, blocks are only dumped if they are new to the database or their content changed (because only those are forwarded by the daemon to the client.)

Dump raw database
Open a dialog that allows to dump all blocks in the database to stdout (UNIX only) or into the named file in a raw text format, which is actually the same as with the Dump stream command. This feature is mainly intended for developers. To understand all the infos in the text dump, you'll have to look at the source in epgui/epgtxtdump.c in the nxtvepg source package.

The array of checkbuttons allows to control which kind of blocks will be written. The programme information blocks (PI) do contain the actual programme descriptions; Defective PI contains those PI which were not accepted into the database because of inconsistencies like a zero or overlapping running time. For an explanation of the other block types please see the ETSI specification 707.

Dump in HTML
Open a dialog that allows to export the complete database or selected programmes into a file in HTML format (Hypertext Markup Language) which can then be loaded into a WWW browser, e.g. Netscape. This is particularily useful if you want to print out TV descriptions.

At the top of the dialog window you have to enter the output file name. Click on the little folder button for a file selection dialog.

By default the checkbutton Selected programme only is enabled. In this mode only info on the programme which is currently selected with the cursor will be written. In combination with the Append to file mode this allows to build a document with the programmes that interest you step by step. If you deselect Selected programme only, info on all programmes that match your current filter will be written. Note that this can generate very large files which may take a long time to load into your Web browser. In this mode you may want to set an additional start time filter (see FILTERING) to restrict the number of programmes written.

In the bottommost box you see three radio buttons with which you select the format in which the information will be written. If you select titles you'll get a table in the same configuration as in the titles list in the upper part of the main window. If you select descriptions you'll get roughly the same as in the lower part of the main window. Obviously, if you select titles and descriptions you'll get both, in form of one table with all the titles on top and all descriptions separately below. If you select Add hyperlinks the titles in the table will be linked to the descriptions.

The look of the generated document is almost entirely determined by use of an internal CSS stylesheet. If you don't like the look you can override it with your own stylesheet. Save it to a file named nxtvhtml.css and put it in the same directory as the generated HTML file. For more information on HTML and style sheets see http://www.w3.org/

View timescales
Toggles the timescale window for the browser database. The window reflects for each network included in the selected database, which time ranges are covered by programme information. If acquisition is working on the database, you can watch how more and more of the scales get covered. See STATISTICS for details.

View statistics
Toggles the browser database statistics window, which informs you about number of program entries in the database, fill percentage, expiration percentage, date of last update etc. If the acquisition is working on the same database, it also contains information about state and progress of acquisition. See STATISTICS for details.

View acq timescales
Toggles the timescale window for the acquisition database. This entry is only available if the acquisition uses a different database than the browser.

View acq statistics
Toggles the acquisition statistics window, which informs you about state and progress of acquisition. If the acquisition control mechanism switches to a different database, the acq statistics window will automatically follow. See DATA ACQUISITION for details.

Quit
Close all windows and terminate the application.


CONFIGURATION

Summary of commands available from the Configure menu:

Select provider...
Open the provider selection dialog. This dialog lists all TV channels from which Nextview data can be received. When you select a channel name on the list, you'll see the name of the Nextview service that's transmitted there and a list of all networks covered by it on the right. If you leave the dialog with Ok, the selected provider's database will be loaded into the browser. The according TV channel will also be tuned to update the database, if you have selected ``Follow-UI'' acquisition mode.

Merge providers...
Open a dialog that allows to merge several databases into one. See MERGED DATABASES for details.

Acquisition mode...
Open a dialog that allows to control the background acquisition process. See ACQUISITION MODES for more details.

Provider scan...
Open a dialog that allows to start a scan across all TV channels for Nextview transmissions. You should perform this search at least once, firstly to find out which providers are available in your area, and secondly to determine the frequencies of all provider's TV channels. They are required for most acquisition modes, and due to driver limitations often not available without a scan (e.g. on Windows or Linux with bttv driver <= 0.7.50). See also GETTING STARTED.

Check the Slow button if you have bad reception on some channels. In slow mode the scanner will wait at least for 2 seconds on each channel for a VPS or PDC identification or an EPG package. Else channels without a stable video signal and without any teletext packets will be skipped after 150 ms.

UNIX only: The Use .xawtv button is automatically checked if an xawtv configuration file is found in your home directory. Instead of searching all possible channels in all bands, nxtvepg then just checks the channels assigned there (fine-tuning and absolute frequencies currently are ignored though).

Use the Refresh only mode if you deleted your database files or if you upgrade from an incompatible software version. In this mode only the channels on which Nextview data was received before are checked (the frequencies are kept in the rc/ini file). This enables you to regain your complete provider list very quickly.

TV card input...
Open a dialog where the driver for the TV card can be configured. On Windows systems you must at least specify which type of tuner is on your card, and how the PLL needs to be initialized. You can check your setting by starting an EPG scan: if nothing is found, try a different setting (or check the antenna cable). For more details see GETTING STARTED, or README if you get error messages from the Bt8x8 driver. If you experience data loss due to heavy system load, you can raise the acquisition thread priority.

The remaining three configuration options apply to both Linux and Windows: firstly you may choose which video input source to use. See DATA ACQUISITION about the consequences of not using the TV tuner as input. If you live in France, select the French frequency table to be used for the EPG scan. If you have more than one TV tuner card, you can also choose which one to use, just like with the -card command line option.

Client/Server...
Opens a dialog that allows to configure the connection between acquisition daemon (called ``server'' here) and GUI. The connection allows to forward all newly acquired EPG data from the daemon to the GUI and to monitor the daemon's acquisition progress.

The dialog contains settings of which some refer to the server-side only, some to the client-side only and some to both server and client. To avoid confusion, there are three radio buttons at the top of the dialog which allow to grey out items that do not refer to the client or server respectively.

Enable remote control
By enabling remote-control you can stop acquisition, change acquisition mode, TV card parameters or any parameters configured by this dialog in a running daemon via the network connection.

Enable TCP/IP
By enabling connections via the TCP/IP network protocol, you allow connections from remote hosts. Since there's currently no access control in nxtvepg, these hosts can be anywhere in your network, or anywhere in the world if you're connected to the Internet. If you don't have a firewall which prevents incoming connections of untrusted hosts, this mode is highly depreciated, because nxtvepg is not in any way secured against malicious client connections.

Server hostname
Client-side only: this setting identifies the host on which the daemon is running. You can enter either a hostname in ``dot.com'' format or an IP address in ``127.0.0.1'' format. If you set it to localhost the connection is automatically established via UNIX domain sockets (i.e. pipes), which is more efficient than TCP/IP. You can still use TCP/IP locally if you set it to the name of your local host, as returned by hostname(1).

Server TCP port
If TCP/IP is enabled, this setting tells server and client which port to use. You can enter an arbitrary number between 1024 and 65535 here, but you have to make sure no other server is using the same port. Make sure you configure the same port number for client and server. The default is 7658.

Bind IP address
If TCP/IP is enabled and your server host has more than one IP address, you can select here on which one to listen for incoming connections. Make sure you use the same IP address as server hostname on client-side, or a hostname that resolves to that IP address. This setting is optional; if you leave the field blank (default) the server will bind to all IP addresses.

Note: on systems that support it, TCP/IP sockets are created in the IPv6 domain (PF_INET6) by default. On some systems (e.g. NetBSD) you cannot connect via IPv4 to an IPv6 server and vice versa, i.e. you need to use the same domain on both ends. If your client only supports IPv4, you can force your server to create an IPv4 socket by binding to an IPv4 address. If you fail to connect to a local IPv6 server via the IPv4 loopback address 127.0.0.1, use the IPv6 equivalent ``::1''.

Max. connections
This setting limits the number of client connections the server will allow. Once the limit is reached the server will stop listening for new connections.

Log filename
If you enable log generation by the following option, you can choose here where the log will go. Make sure the file is writable to the uid under which the daemon process is running. The file opened and closed for each appended log line (usually there's very low traffic into that file) so you can operate on it (e.g. truncate it) without restarting the daemon.

File min. log level
Here you can choose if log information should be written to a file. If you run nxtvepg with TCP/IP disabled, you don't need to use logging; but if you allow remote connections you should keep log files at ``info'' level to be able to check which hosts connect to your server.

The following settings are available: ``no logging'' disables logging; ``error'' enables logging of internal errors that lead to an immediate exit of the daemon; ``warning'' additionally enables logging of unexpected events, i.e. internal errors which do not lead to exit; ``notice'' additionally enables logging of server status changes, i.e. startup and shutdown; ``info'' additionally enables logging of connection establishment or shutdown.

Syslog min. level
Here you can enable or disable logging to syslog. See syslogd(8) and syslog.conf(5) for details about the syslog facility. The log levels you can choose here are the same as described in the previous paragraph for logging to files.

Note that while network mode is enabled configuration of acquisition mode and TV card input has no effect and no EPG scan is possible. If you use the same rc/ini file for daemon and GUI the changed settings will however be used by the daemon upon the next start.

Xawtv connection...
Opens a dialog that allows to configure the interaction between the xawtv TV application and nxtvepg. This menu entry is available only on UNIX when a .xawtv configuration file is found in your home. The first three buttons allow to switch the interaction features separately on or off. If you want to improve startup time, turn them all off; in this case nxtvepg does not need to search for the xawtv window (which can take up to several seconds if you have many applications running or a slow connection to your X server.) By default all three interaction features are enabled.

The first button relates to the Tune TV button and it's little popup menu (accessed with right mouse button) below the clock. If you're not interested in remote-controlling xawtv, switch it off.

If you leave the Cursor follows channel changes option enabled, nxtvepg will monitor xawtv channel changes. Whenever such a change is detected, the cursor in the programme listbox will be set onto the title currently running on that network. During EPG acquisition VPS/PDC is used to exactly determine the current programme (only on networks which support VPS/PDC); however if the nominal running time is in the past it's currently not possible to display the programme in the listbox. This info may however be sent to xawtv (see next option). If you have just a network filter enabled, it will be switched to the new network so that you'll get a complete listing of that network's programmes, starting with the currently running one. This works even when you have excluded this network in the network selection configuration. If there are more or other filters than network enabled, then they will remain unchanged. If the current programme on the new network does not match this filter setting, then neither cursor nor listbox content will be changed.

If you leave the Display EPG info in xawtv option enabled, nxtvepg will monitor xawtv channel changes. During EPG acquisition VPS/PDC are also monitored to determine newly starting programmes. VPS/PDC also allows to detect channel changes on an external input source, e.g. a satellite receiver connected via the Composite socket. After a change of channel or current programme title, the info about the currently running title will be displayed in xawtv. The display format is selected by the following radio buttons:

With Separate popup nxtvepg will generate a small popup window and put it right beneath the xawtv window. The blue area in the small bar on top represents how much of the (nominal) running time lies in the past. With Video overlay the info will be handed to xawtv and displayed as subtitles (please note that this option only works properly with XFree86 version 4 and the XVideo extension). If you prefer a proportional font add the following line to ~/.Xdefaults:

  xawtv.vtx.label.font: -*-helvetica-bold-r-*--14-*-*-*-*-*-iso8859-*

and execute xrdb -load ~/.Xdefaults afterwards. Note that this will affect subtitles too. Future versions of xawtv will hopefully allow for dynamic font selection. Video overlay, 2 lines is the same except that it writes running time and title in separate lines and additionally contains the percentage of expired running time. (Not recommended with xawtv versions older than 3.48 as there was a bug in displaying lines of different width.) With Xawtv window title the info will be sent to xawtv and displayed in the window title. Except for this last option, you can configure the desired display duration with the slider at the bottom of the dialog. A duration of zero means the display will never be removed.

Select columns...
Open the browser listbox column configuration dialog. It allows to select which attributes are displayed for the listed programmes. In the listbox on the left you find a list of all available categories, e.g. title, running time & date, TV network, rating, sound and picture format, i.e. mostly the same attributes that are available for filtering. The listbox on the right contains the types currently selected for display. The topmost entry appears on the left side of the listbox. Press Apply to refresh the browser listbox with the new column selection and save the new configuration to the config file.

Select networks...
Open the network selection dialog. It allows to permanently suppress TV networks in a provider's listing, e.g. if you can not receive the channel. You can also change the order of the networks, e.g. to put your favorite networks at the top of the filter menus.

This window has two lists: on the left you'll find all networks that are covered by the provider in their original order, on the right those that are selected for the programme listing in your preferred order. By default, both lists will have exactly the same content. If you want to exclude networks, select them in the right list and press Delete. You can always include them again by selecting them in the left list and pressing Add. You can change the order in the right list by selecting one or more networks and pressing the up or down arrows. If you want the same selection and order for all providers, you can simply copy your selection with the copy menu.

Network names...
Open the network names configuration dialog. It's main purpose is to synchronize the network names with xawtv (UNIX TV application), i.e. the ~/.xawtv configuration file. This is required because the network name is used in communication with xawtv for the ``Tune TV'' remote control, and as well for channel change notifications. For many networks there will be no need to change anything, but for some there exist different variants, e.g. in Germany ``Super RTL'' vs. ``S-RTL'' or ``KiKa'' vs. ``Kinderkanal''.

Another use of this dialog is to make network naming consistent across all providers. The names you specify here will be used in the programme listbox and all filter menus, independently of the provider.

On the left side of the window you'll find a list of all networks of all known Nextview providers. The names used here are the ones you configured before, or if you haven't done so, the names that match the station names in .xawtv best; unmatched names are marked red. If that file does not exist, the name is taken from the first database which covers this network, in order of your provider selection history.

On the right side, you're offered four ways to change the name: topmost is a simple entry field where you can type in an arbitrary name. Below is a popup menu which contains all network names defined in .xawtv. Below is a button which contains the one name in .xawtv which resembles the current string in the entry field most, or none. It's marked red until it's identical to the entry field. You can copy the name to the entry field by clicking the button. Below is a listbox with the original names used in the various provider databases. When you select a name from the menu or the listbox, it will be copied into the entry field and the network name list on the left. If you want to save the changed list, leave the dialog with Save, else use Abort.

Note: if you receive channels that carry multiple networks, e.g. in Germany ``Arte / Kinderkanal'', it's recommended to include all networks' names in the xawtv network name, separated by a slash. The slash is recognized as separator by nxtvepg (and hopefully future versions of xawtv) and all resulting segments can be used as network names.

Context menu...
Open the context menu configuration dialog which allows to add references to external commands to the context popup menu. (See also CONTEXT MENU.) At the top of the dialog window there is a list of all currently defined command titles. When you open the dialog for the first time, it'll be empty.

Below the list there are two text input fields which allow to modify or create new commands. The field labeled Title defines the text which will be included to the popup menu. The field labeled Command defines the command line to be executed when the entry is selected in the popup menu, with possible placeholders enclosed in ${} which are replaced by parameters of the currently selected programme in the browser listbox. After the substitution and after appending an ampersand '&' sign to allow asynchronous execution (UNIX only), the command line is passed to a shell via the system(3) function.

When you press the menu button Copy Example a list pops up which contains a few example commands which can be copied into the title and command entry fields. To save a new or modified title and command, you have to press either the New or Update button and leave the popup with Ok. Use Delete to remove an entry from the listbox; the buttons with up/down arrows to change the ordering. Use Clear to clear the entry fields, e.g. before you create a new entry.

The following is a list of formal variables (i.e. placeholders) which are substituted in the command line with parameters of the selected title upon invocation of the external command. The meaning of the variables should be self-explanatory, except possibly for CNI, which is a hexadecimal network code; and e/p_rating which are editorial and parental rating respectively.

  ${title}
  ${network}
  ${start}
  ${stop}
  ${relstart}
  ${duration}
  ${CNI}
  ${description}
  ${themes}
  ${VPS}  or  ${PDC}
  ${e_rating}
  ${p_rating}
  ${sound}
  ${format}
  ${digital}
  ${encrypted}
  ${live}
  ${repeat}
  ${subtitle}

The keywords can be followed by a colon and an output format specification. In case of the start, stop and VPS/PDC times, all options defined in the strftime(3) manpage are available; default is %H:%M-%d.%m.%Y (hour, minute, day, month, year). In case of relative start time and duration, you can choose between minutes (default) and seconds by appending ``m'' or ``s''. For all other variables the modifiers are currently ignored.

The substrings which replace the formal variables are enclosed in single quotes to protect them from interpretation by the shell. Single quotes inside the substituted string are correctly escaped.

Example: The command line

  plan ${start:%d.%m.%Y %H:%M} ${title}

could for example result in

  plan '22.08.2001 13:05' 'Käpt'\''n Blaubärs Seemannsgarn'

to be passed to the Bourne Shell.

Filter shortcuts...
Open the filter shortcut dialog to rename, reorder or delete shortcuts. You have to press the Update button to save any changes for a shortcut and then close the dialog with Save. See FILTER SHORTCUTS for more details.

Show shortcuts
Toggle visibility of the shortcut listbox.

Show networks
Toggle visibility of the network filter listbox.

Show status line
Toggle visibility of the status line at the bottom of the browser window.

Show column headers
Toggle visibility of the browser listbox column header menu bar.


FILES

Files used on UNIX systems

$HOME/.nxtvepgrc
Configuration file where all personal settings are stored. Per default this is created in your home directory, but a different path and file name can be specified with the -rcfile option.

/usr/tmp/nxtvdb/nxtvdb-####
Directory containing one file for each provider's database. Can be changed with the -dbdir command line option. The last 4 digits of the file names are the hexadecimal CNI (Country and Network Identifier) of the provider.

/dev/vbi0, /dev/vbi1, etc.
Device files from which Nextview data is being read during acquisition. The index postfix can be specified with the -card command line option.

/dev/video0, /dev/video1, etc.
Device files which are needed to set input source (e.g. TV tuner or one of the composite or S-Video sockets) and tuner frequency for VBI reception, unless you choose the passive acquisition mode. The index postfix can be specified with the -card command line option.

The device is only kept open during a provider search. Else, it's just opened shortly to set the input source and tuner frequency. If the device is busy (e.g. while you watch TV), acquisition starts on the currently selected channel and automatically follows any externally controlled changes (this will be reported, e.g. in the status line at the bottom of the browser window, as forced passive acquisition mode).

/tmp/.vbi0.pid, /tmp/.vbi1.pid, etc.
This file contains the process id of the Nextview decoder (or the acquisition slave process unless threading is used) whenever a vbi device is kept open. The process can be forced to free the device by sending it signal SIGHUP, e.g. from a wrapper script around a teletext decoder. An example which works with sh, bash or tcsh:
   kill -HUP `cat /tmp/.vbi0.pid`

Note that the daemon is not kept alive when acquisition is disabled, so that sending HUP equals sending TERM. You can restart acquisition by starting a new daemon. The browser attempts to reconnect every 10 seconds when the connection was broken, but you can also trigger an immediate reconnect be signalling it a HUP.

To restart acquisition in non-daemon mode, signal again with HUP, either to the acquisition slave process or the browser process.

/tmp/nxtvepg.0
This non-regular file (socket) is created by the daemon to allow local client connections via UNIX domain sockets. The same socket can be used for more than one client connection. It's deleted when the daemon terminates (unless the daemon crashes or receives an uncatchable signal like KILL).

$HOME/.xawtv, etc.
This file belongs to the TV viewer xawtv. It's not required or created by nxtvepg. But if it exists, it will be used in the EPG scan (for a fast scan mode where only the channels defined in this file will be checked) and in the network name configuration dialog.

Files used on Windows systems

nxtvepg.ini
Configuration file where all personal settings are stored. Per default this is created in the working directory, but a different path and file name can be specified with the -rcfile option.

nxtv####.epg
One file for each provider's database is created in the working directory or the one given with the -dbdir command line option. The last 4 digits of the file base names are the hexadecimal CNI (Country and Network Identifier) of the provider.


SEE ALSO

For in-depth information about Nextview please refer to the specifications ETS 300 707 (data structures and basic principles), ETS 300 708 (transmission protocol) and ETR 288 (code of practice). These specs are available from http://www.etsi.org/

You can also have Nextview directly inside your television set - check out the catalogues of Grundig, Loewe, Metz, Sony, Philips, Thompson or Telefunken. However be aware that not all models do support the same set of Nextview features.


KNOWN BUGS

Under Windows there's a risk of system crash (``blue screen'') when the application is terminated by force, e.g. with TerminateProcess(). This cannot be changed because in this case there's no chance to stop the driver and disable the interrupt. In normal operation this should be very unlikely though, since all software exceptions (e.g. page faults) and shutdown messages are caught and the driver then stopped before the exit.


REPORTING BUGS

Feel free to mail any bug reports to me, but please make sure that (a) you have the latest version of this software, (b) it's not already in the TODO file and (c) it's not just an error in your provider's EPG transmission. And please note that I've got no telepathic capabilities, so be comprehensive in describing your problem. See the README file for instructions on which information must be included in a bug report.


AUTHOR

Thorsten ``Tom'' Zoerner, Erlangen, Germany.

Email: tomzo (at) nefkom (dot) net

Many thanks to Jan Schuster for beta testing starting with 0.7.0; to Mario Kemper for the NetBSD port and early beta testing; to ``Mario's brother'' for beta testing the Windows port; to Gerd Knorr for xawtv; to Ralph Metzler for his teletext decoder; to Edgar Toernig for the Latin-1 conversion tables in alevt; and last but not least to the authors of bttv and v4l for their excellent work.


COPYRIGHT

Copyright (C) 1999, 2000, 2001 by Thorsten Zoerner.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License Version 2 as published by the Free Software Foundation, e.g. at http://www.fsf.org/

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of merchantability or fitness for a particular purpose. See the file COPYRIGHT for more details.