LlamaKISS

A replacement for the media streaming software known as PC-Link

LlamaKISS is a replacement for the media streaming software known as PC-Link, by Linksys, former KISS Technology. It’s used to send videos, music and pictures from a Windows computer to KISS digital video recorders:

  • KISS DP-500
  • KISS DP-508
  • KISS DP-558 (I owned this one myself, R.I.P)
  • KISS DP-600
  • KISS DP-1500
  • KISS DP-1504
  • KISS DP-1600

So why this replacement? Because the original PC-Link software didn’t work properly after I installed Windows Vista x64. When I tried to play videos, the pre-buffering paused resulting in out-of-sync sound. Very annoying, and rendering my DP-558 somewhat useless.

So why not use any of the other replacements? The only ones I’ve found are either made in Java (JLink, Kiss Now, Open DP-500), Perl (kissntell) or isn’t made for Windows and uses Cygwin (pd500serv, kissdx). LlamaKISS is a native Windows console application written in C++ using the WinSock API.

Does it work? With Windows Vista x64 and my DP-558 it works as intended. If you have Windows XP, 2000, or another player model and it don’t, please contact me. You can help me debug by un-commenting the two [debug] settings in the LlamaKISS.ini, do some test and e-mail me the files created.

So what does it cost? Nothing, it’s free software.

Changelog

  • 2009-03-10 v1.1.0: It’s now possible to install and run in the background as a service!
  • 2009-01-01 v1.0.11: Fixed a GET command parse issue where DP-508 players sometimes don’t send PlayerID nor enclosing characters.
  • 2008-07-29 v1.0.10: Fixed a ACTION command issue, might fix issues with DP-1500.
  • 2008-05-31 v1.0.9: Fixed a LIST command issue where some players models make the directory path locally and don’t use the absolute path sent.
  • 2008-05-30 v1.0.8: Fixed a GET command parse issue where some player models (DP-600) don’t send PlayerID. This might fix a few issues where LlamaKISS refused to play media files.
  • 2008-04-03 v1.0.7: Multiple locations for each media type. Please replace your existing LlamaKISS.ini.
  • 2008-03-01 v1.0.6: Additional settings to help with debugging. The release build is now compiled with Debugging Information so MiniDump’s can be used.
  • 2008-03-01 v1.0.5: Minor fix.
  • 2008-02-28 v1.0.4: New security setting to filter media by file extension. Re-write of the command parser, hopefully fixing issue where some only saw directories.
  • 2007-12-31 v1.0.3: To get out of DLL-hell I’ve statically linked the CRT, not as easy as it sounds due to Visual Studio weirdness. File size increased due to that. I now know it should work on Windows XP. I’ve tested.
  • 2007-12-20 v1.0.2: Changed to using GetCurrentThreadId instead of GetThreadId, which hopefully fixes Windows 2000 and XP issue.
  • 2007-12-07 v1.0.1: Changed from SOCKADDR to SOCKADDR_STORAGE structures, hopefully fixing the bug where getpeername could fail.
  • 2007-11-20 v1.0.0: Initial public release.

Known Issues

  • If your DP-508 player don’t accept .srt subtitle files, try renaming them to .utf and add utf=VIDEO to the [extensions] section of your LlamaKISS.ini.
  • Some players (DP-1600?) can only see the directory structure not the media files. This might be that some players send different command than my DP-558 thus LlamaKISS interpret them wrong.
  • Some players (DP-558?) hang, requiring a reboot, after playing some movie files. I’ve noticed this a few times myself, cause yet unknown.
  • Distorted picture the first second when playing a VOB or TS. Not much can be done about this I think, it’s a player issue.
  • File not found: VIDEO\DIVX VIDEO\(movie name).avi. This might be caused by symbolic links (shortcuts), LlamaKISS does not follow ’em.

Most of there can probably be fixed quite easily with a little help from you. Enable CommandDumpFile=LlamaKISS.log in the [debug] section of the LlamaKISS.ini, try playing a movie then e-mail me the log-file created. The file contains all the commands sent from your player to the server. With it I can see if the commands differ from what my DP-558 sends and then change the interpretation in LlamaKISS accordingly. If any of you have C/C++ experience and would like to help out, I’ll happily publish/open source the code. I’ve open-sourced it, hosted at Google code.

To do

  1. Testing with more models of KISS hardware. I would appreciate your feedback.
  2. Play list support.
  3. Maybe make it a Windows Service to run in the background. Done!
  4. Make a true Windows application with a nice GUI. For the configuration anyway, if the rest becomes a Windows Service.
  5. Support disc image iso playback. This really isn’t that important any longer since you can just map one of your VIDEO location to a virtual drive (DaemonTools) and play the VOB or TS files directly.
  6. Support FLAC playback. I’ve tried to implement this and concluded that it can’t be done without transcoding to MP3 or OGG. My DP-558 can’t play PCM samples, neither in WAV nor ASF container.
  7. Maybe integrate a KML server, if someone find it usefull.
  8. Any requests?

Features

  • Streaming:
    • Real-time browsing of available media files. No need to add every file/directory like PC-Link.
    • Map multiple paths for each type of media. Virtual drives (DaemonTools), network shares, USB-sticks, floppy drives :).
  • Security:
    • Allow/deny connections by IP address.
    • Allow/deny media streaming by PlayerID.
    • Filter media files by file-extension.
  • Implementation:
    • Very low memory and CPU usage, using overlapped IO (IoCompletionPort) with worker threads and system cache manager calls (TransmitFile).

Download

Installation

Download and un-zip the archive to wherever you want, preferably your Program Files directory. Edit the LlamaKISS.ini with Notepad, or alike, and add variables in the VIDEO, AUDIO and PICTURE sections to where your media is located. Run LlamaKISS.exe, use Ctrl-C to exit.

If you’re using a firewall make sure LlamaKISS.exe can accept incomming TCP connections and send/receive UPD packets on port 8000.

License

GNU Lesser General Public License <http://www.gnu.org/licenses/lgpl-3.0.txt>

Author

Henrik Lindqvist <henrik.lindqvist@llamalab.com>