Latest readme

From KiSS DP 558 STAGE2 WiKi
Jump to: navigation, search

README for kissdx

kissdx is a PC-Link clone for KiSS media players, based for the most part on kissd (which it now replaces), with added features for media playback, management, flexibility and more.

Graphics code taken from gd, as per this notice in gd documentation:

"Permission has been granted to copy, distribute and modify gd in any context without fee, including a commercial application, provided that this notice is present in user-accessible supporting documentation."


kissdx Home Page: kissdx Manuals: kissdx Forum: kissdx Support:


kissd: armlink: wizd: gd:

Please refer to kissdx Manuals (link above) for documentation, e.g. on how to set up the very important kissdx.conf file.

Notable kissdx enhancements over KiSS PC-Link server:

1. Support for playing the VOB/IFO/BUP files in a VIDEO_TS folder as if it was a DVD This functionality is based on code from wizd, which again depends on libdvdread.

2. Support for playing DVD ISO images This functionality is based on code from wizd, which again depends on libdvdread.

3. Supports wildcard pattern for subtitle files, thus relaxing the strict naming convention for subtitle files normally required by KiSS players.

4. Support for scaling of pictures to better fit the TV screen, and to avoid problems with some files.

5. Support for caching of scaled pictures to speed up the display of pictures that have already been displayed once. This includes pre-caching of the next picture to be displayed, to speed up sequential browsing / slideshow.

6. Arbitrary character set translation between server and player for filenames, playlist contents and the config file itself.

7. Location for persistent data can be specified in configuration file to allow read-only media paths with full functionality

8. Configuration changes are recognised without the need for a restart. Just scan for available servers on your player, and all listening kissdx servers will re-read their configuration files.

9. The viewing of hidden content can optionally be controlled from the KiSS player's remote.

10. Support for playing all mp3 or ogg files in a directory back-to-back, i.e. without a pause between each track. Great for live albums!

11. Remote management of a running server from any computer on the network

12. Trigger scripts on playlists and directories, allowing on-the-fly playlist creation and symlink creation.

13. Automatic renaming of .TS and other files to allow playback on older players.

14. Configurable kissdx server signature displayed on KiSS players (to distinguish between multiple servers).

15. Allows multiple media paths to be configured for each media type (collect scattered media directories)

16. Sequence numbers in filenames control display order on newer KiSS players

Notes on DVD image/folder playback

The current implementation is a bit crude, but given the limitations of KiSS PC-link server protocol and KiSS player GUI it is about as good as it can get:

- There is no real DVD player functionality
- No DVD menus
- No subtitles
- No language support
- No chapter navigation
- No angles, etc.
- In-stream instructions are not processed - the entire VOB stream 
  is served to the player, start to end.

Basically, what it does is this:

- A DVD (an ISO file or a folder with a VIDEO_TS subfolder) is presented
  on the player as a folder, with a special prefix to identify it:
  {kissdx-ISO} for ISO images
  {kissdx-DIR} for folders with a VIDEO_TS subfolder
- The user selects the folder on the player, and all titles of the DVD
  are listed.
- A title can be selected for playback, which will start playing back the
  entire VOB file set that the title belongs to, from start to end.
  Selecting title 1 will play the entire main movie on most DVDs tested.

Notes on playback of audio playlists

The m3u and pls formats are supported.

A playlist is presented on the player as a folder, with a special prefix to identify it: {kissdx-M3U} for m3u playlists {kissdx-PLS} for pls playlists

Select the folder on the player to display the contents of the playlist.

Notes on the scaled picture cache

When caching of scaled pictures is enabled, a picture will be placed in the cache the first time it is displayed. Subsequent viewing of the same picture will be quicker, especially on slow servers like the NSLU2.

If the picture scaling settings are changed, all the pictures in the cache are invalidated and will be re-scaled and re-cached the next time they are requested. Conversely, changing picture scaling settings back to their previous values will make valid again all cached pictures that have been scaled with those values.

When a limit on cache size has been set, the GNU Linux sort command must exist in PATH for cache trimming to operate at all.

Even if you don't want to use the cache, a cache size of 1 is recommended if you use the picture scaling feature. With the cache completely disabled, picture scaling will be performed twice per request and performance will suffer accordingly.

See DevDocs/piccache-specification.txt for details of the implementation.

Notes on back-to-back audio playback

When listing an audio directory that contains mp3 and / or ogg files, kissdx will present an additional entry for mp3 and / or ogg files, looking like this:

{kissdx-B2B}folder name.mp3 {kissdx-B2B}folder name.ogg

The user selects this file for playback of all mp3 or ogg files in that directory back-to-back.

The current implementation simply concatenates all individual media files into a bigger combined pseudo-file that is presented to the KiSS player. ID3 tags in MP3 files are removed from the concatenated file, except for an ID3v2 tag at the start of the first file and an ID3v1 tag at the end of the last file, which are kept in if present. No other processing of metadata is performed by kissdx. Thus, for MP3 playback the combined file will look like the last media file in the set if there's an ID3v1 tag at the end of the last file, and for ID3v2 and OGG files it will look like the first one. The total playback time is calculated by the player and may be wrong, but relative seeking inside the combined file still works. Tested on a DP-600 only.

Known issues

DVD playback is a bit crude, as noted above. Some DVDs can be played with good results, others without sound, etc. YMMV.

Running under Cygwin with caching of scaled pictures enabled, the cache may grow beyond the cache size limit and never be trimmed, and the message "Input file specified two times" will appear in kissdx output. This is caused by kissdx running Windows' sort program instead of the GNU Linux sort program included with Cygwin. Solution: Either edit your PATH so that C:\cygwin\bin (or equivalent) appears before C:\WINDOWS\system32 (or equivalent), or run kissdx in a Cygwin window. To start a Cygwin window and run kissdx automatically, create a batch file modelled on Cygwin's cygwin.bat, but with a bash startup line like this instead of the default one: bash --login -i -c "'/cygdrive/c/Program Files/kissdx/kissdx.exe' %*"

Back-to-back audio playback will present the player with metadata that does not correctly describe the combined file. Playback still works, tested only on a DP-600.

Back-to-back audio playback can be very slow to start, especially if there are many media files in the combined file, especially on Windows, and especially with OGG files. This is due to files being opened and closed all the time as the player requests data from very many locations in the combined file, as it is analysing the file.

Installation instructions

On Optware platforms or other big-endian Linux ARM platforms you can install kissdx using the ipkg packaging tool.

On Optware (see just issue the following commands:

   ipkg update
   ipkg install kissdx

On other big-endian Linux ARM platforms you may be able to install from the current stable package file over the net with this command:

   ipkg install

Current beta:

   ipkg install

NSLU2 Unslung has iconv included, but you may want to install additional code pages / character sets:

   ipkg install gconv-modules

kissdx is now installed! Go to step 4 below.

For other platforms, you must download the archive containing the source code and selected binaries, and unpack the downloaded archive into a new directory. Then:

   If you want to run kissdx on Windows (under Cygwin), install Cygwin
   from if you don't have it already.
   Make sure that you have the necessary libraries installed:
   kissdx depends on the following packages:
   libdvdread  for playing DVD ISOs and VOBs
   libjpeg     for rescaling jpeg images
   libiconv    for character set translation between player and server

If you will be compiling kissdx, you need the *development* packages for the above libraries. Some Linux distros may have libiconv included, and you won't find a package for it. If that is the case, you may need to remove -liconv from the $(CC) line in the Makefile before compiling.

   Make sure you have a proper sort command on your system:
   NSLU2 Unslung is (and maybe other Optware targets are) based on Busybox,
   which has a crippled sort command.  You must get the coreutils package
   to have the proper sort command:

   ipkg install coreutils
   Also make sure that /opt/bin is in the PATH variable for the new sort
   command to be used by kissdx.
   Produce the kissdx binary and install it on your system.  There are
   two alternatives:
   If you want to run kissdx on Windows (under Cygwin), do this:
   - grab the Windows executable from subdirectory bin-Windows-Cygwin in the
     downloaded archive, and install it where you please on your machine, e.g.
     in C:\Program Files\kissdx.
   - Place kissdx.conf in /etc/
     (that is normally C:\Cygwin\etc)
   kissdx is now installed!  Go to step 4 below.
   If you are installing kissdx on a regular Linux platform, compile and
   install with these commands:
   cd <new-directory>/kissdx
   sudo make install
   kissdx is now installed!  Go to step 4 below.
   Edit kissdx.conf to set up the paths to your media files.
   Also check that the other settings fit your needs.
   On Optware platforms, edit /opt/etc/kissdx.conf.
   On other platforms, edit /etc/kissdx.conf.
   Report and check up on any problems / bugs / feature requests at


  If you are replacing kissd on your system with kissdx:
   - Stop kissd if it's running
   - Place kissdx in the directory that kissd is currently in
   - Delete kissd from that directory (or rename it for backup)
   - Rename kissdx to kissd, effectively replacing kissd in place
   - Start kissd (which is now actually kissdx)

Best of luck!