Llink:user guide

From Lundman Wiki
Revision as of 18:22, 7 October 2009 by Dc11ab (talk | contribs) (Command line)

Jump to: navigation, search

llink user guide

This is a wiki, if you think there is room for improvement and additions, please make your contribution!


It all starts with a configuration before you can start the llink media server. There are two files, llink.conf and jukebox.conf, located in the llink directory.
Open them with a text editor and follow the instructions to make llink work to your specifications.

If you run llink from a another directory than where the llink binary is located, you must specify this when starting:
llink -f /path/to/llink.conf -w /path/to/skin/

Read the .conf files carefully and update them correctly.

When using a normal browser on a PC to use llink it is recommended to use the Moon skin. Other skins may be difficult to navigate and click on links.

A simple guide for Windows is located here: llink windows installation
It may be useful for people using other OS too.

In *nix systems you can use symlinks to help organize your media. On Windows you can use a tool called "Junctions" for NTFS drives. There is a binary with the lundftpd binary for Windows. But with multiple ROOT command support in the config files, there should be no need for symlinks.

Starting llink

Normally you launch llink by double clicking the llink.exe (Windows) or typing ./llink in shell (*nix). This would start llink with the configurations as specified in the llink.conf.

Turning to your TV/Projector screen, llink should be auto-discovered by the NMT and display as "llink-daemon" or similar in the media source list. Then you navigate to it and click Enter on the remote to launch.

If the "llink-daemon" doesn't show up, you may be able to launch llink via one of the available Web Services on the NMT.
Add <IP of your source>:<port, default 8001>, ex:, and then you should be able to start via the Web Service menu.

On *nix machines with multiple ethernet interfaces (gateway/router) running llink, add a route for SSDP for the internal interface to get the "llink-daemon" to show up in the media sources.
route add -net netmask eth1

Replace eth1 with the interface serving the NMT, you may like to add the line to "local.start" or similiar depending on distribution.

Command line


/llink - Media server engine.
./llink [-hd] [-f file] [...]

  -h          : display usage help (this output)
  -d          : stay in foreground, do not detach
  -v <int>    : enable verbose debug information
  -f <file>   : set configuration file to read (default: llink.conf
  -w <path>   : Change to directory after starting
  -x          : Scan ROOTs for media to generate XML files for jukebox skin
  -X          : Same as -x, but XML files are saved in redirect path
  -s          : Syabas subtitle bug that sends filename.sub$garbage
  -L          : disable LinkTheater fix, don't close keep-alive for errors

llink verbose output options

This is good for debug, troubleshooting or just getting to know how llink works.

Start with ./llink -v <Level>

	Level    Debug description
	0        this message
	1        general debug messages
	2        ssdp debug
	4        http requests and header replies
	8        unrar messages
	16       skin messages
	32       root messages
	60       medium verbose messages
	64       extnfo messages
	128      xmlscan messages
	255      very verbose
	256      query messages (replies to SSDP)
	512      libdvdread messages
	1024     visited db messages
	2048	 external script messages
	4096	 UPnP messages


undvd makes it possible to play BD and DVD file structures ISO/IMG/video_ts etc. even straight from RAR archive files without unpacking.

Start with ./undvd <command parameter> [options] <path to archive> [filename]

./undvd - an 'unrar' clone for DVD/ISO/IMG/VIDEO_TS images. DVD and Bluray
./undvd cmd [options] archive [filename]

  v/l: list contents of archive
    p: send contents of filename in archive to stdout
    x: extract contents of filename in archive
     -sk <n>  : seek to offset byte-count. Eg -sk100 to start from byte 100
     -R <file>: filename inside RAR-archive. -R filename.iso
     -X <cmd> : Set direct path to unrar
     -A <0,1> : Audio stream solution
All other options are currently silently ignored

./undvd p -sk 1234 filename.iso video.avi
./undvd p -R filename.iso -sk 1234 filename.rar video.avi

  Audio stream solution:
   0 - no nothing, send full stream (VLC etc can handle multiple audio)
   1 - patch first block only (PCH/NMT plays first stream encountered)
If you want RAR streaming to have a chance of working, you need to get the
special unrar with seek patched (option -sk)


llink uses a special unrar version with additional seek function, with kind permission from the original unrar author. Unrar can be used for it's normal operation aswell.

$ ./unrar -h

UNRAR 3.71 beta 1 freeware      Copyright (c) 1993-2007 Alexander Roshal

Usage:     unrar <command> -<switch 1> -<switch N> <archive> <files...>
               <@listfiles...> <path_to_extract\>

  e             Extract files to current directory
  l[t,b]        List archive [technical, bare]
  p             Print file to stdout
  t             Test archive files
  v[t,b]        Verbosely list archive [technical,bare]
  x             Extract files with full path

  -             Stop switches scanning
  ad            Append archive name to destination path
  ap<path>      Set path inside archive
  av-           Disable authenticity verification check
  c-            Disable comments show
  cfg-          Disable read configuration
  cl            Convert names to lower case
  cu            Convert names to upper case
  dh            Open shared files
  ep            Exclude paths from names
  ep3           Expand paths to full including the drive letter
  f             Freshen files
  id[c,d,p,q]   Disable messages
  ierr          Send all messages to stderr
  inul          Disable all messages
  kb            Keep broken extracted files
  n<file>       Include only specified file
  n@            Read file names to include from stdin
  n@<list>      Include files in specified list file
  o+            Overwrite existing files
  o-            Do not overwrite existing files
  or            Rename files automatically
  ow            Save or restore file owner and group
  p[password]   Set password
  p-            Do not query password
  r             Recurse subdirectories
  sl<size>      Process files with size less than specified
  sm<size>      Process files with size more than specified
  sk<size>      Seek to byte offset size (-m0 archives only)
  ta<date>      Process files modified after <date> in YYYYMMDDHHMMSS format
  tb<date>      Process files modified before <date> in YYYYMMDDHHMMSS format
  tn<time>      Process files newer than <time>
  to<time>      Process files older than <time>
  ts<m,c,a>[N]  Save or restore file time (modification, creation, access)
  u             Update files
  v             List all volumes
  ver[n]        File version control
  vp            Pause before each volume
  x<file>       Exclude specified file
  x@            Read file names to exclude from stdin
  x@<list>      Exclude files in specified list file
  y             Assume Yes on all queries

Browsing your media

Use the color buttons on the Popcorn Hour A-100 remote control to browse through the media directories.

  • Red = Parent directory. Pressing it many times will eventually take you to the media root
  • Green = Refresh
  • Yellow = Previous page
  • Blue = Next page
  • Navigation buttons 'Up / Down' = Go up and down in media list (A-100)
  • Enter button = Enter directory/Play media (central round button on the A-100)
  • Play button = Play all media in the current directory
  • Setup button = Sort all presented media

Sorting media

Define as many sorting styles as wanted, and llink will cycle them when requested to change. The first one is the default way llink will use when started. Press the 'Setup' button on the remote control to sort, and toggle with additional key press.

llink default sort cycle is: SORT| by name | newest first | by reverse name | oldest first

# The list flags are:
#  -t  Sort list in date order
#  -N  Sort list in name order
#  -r  Reverse sorting order
#  -D  Sort directories before files. (Like Windows)
#  -s  Sort list in size order
#  -C  Case insensitive sorting. (Like Windows)
#  -a  Show dot-files
#  -W  Show directory content size instead of block count (expensive)
#  -G  If found ".genre" file, display this instead of group field.


As specified in the configuration, you can place supported subtitle files either in the same directory as the movie, or in a separate directory just for subs, e.g. a re-direct folder which is specified in the llink configuration file. In either case, the sub file must have the exact same name as the movie file, apart from the extension.
Example: myMovie.avi gives myMovie.srt

When using external subtitles with ISO, IMG or TS_folder, you must rename the subtitle file to the same as the movie file played, for instance an ISO called Some.Movie.iso will not play a subtitle file called Some.Movie.srt, instead you need to see what the actually played file is called inside the ISO.
Example: TS_VTS_01.vob gives TS_VTS_01.srt.

The subtitle format support follows what Syabas NMT supplies in their firmware. For the A-100 model look here: PopcornHour.com

At the time of writing this documentation, there is a bug in the NMT firmware that incorrectly replaces the extension with .SUB without string termination. (Garbage follows the filename.) You can use llink -s to enable a work around until Syabas can fix said bug.

Skins with cover art and media info

The file jukebox.conf holds the configuration needed to run the cover art & media info skin "Jukebox". Another jukebox style skin is "Kamishi_skies". Normally we only want to see movies from a Jukebox skin, which the jukebox.conf is optimized for.

The movie information is stored in xml files, one for each movie. You will need to download cover art and populate an xml file with movie meta information - llink can display the supported tags listed here: Llink:macros.

Creating xml's manually can be tedious work on large volume media libraries, so luckily we can use various utilities to scrape information from the imdb site.

Note: just like the default configuration file llink.conf you have to edit the jukebox.conf file before you start llink!

  • Set the path(s) to your media ROOT's
  • Set the path to the xml re-direct folder, e.g. create a directory with both read/write permissions where llink can store the additional files needed.


  • llink should be compatible with the MyMovies application (Windows only, free for personal use), which can auto-generate xml files for your collection.
  • Another tool is the open source java based imdbit, originally created by Wesley Elder.
  • Yet another option is to use PiXL. Popeys's Imdb to Xml for Llink, which is a web service for manual or scripted media scraping. More detailed information and scripts can be found here.
  • llink features it's own basic command line imdb scraper too. To run that type: ./llink -d -X -f jukebox.conf or ./llink -d -x -f jukebox.conf depending upon if you use a re-direct folder or not. (Skip the ./ if you work in Windows environment). This will start a process where you can choose an imdb code listed that correspond to your media files and trigger download of album art and media information. If none is suggested just search www.imdb.com in a browser and enter the imdb code manually.

If you have movies that are not properly indexed in imdb you can always edit the xml files manually. Under normal circumstances this should hopefully be a matter of a few exceptions.

Once you are done, or if you already have your xml's and album art files in place, just start llink normally with the corresponding conf file, for instance: ./llink -f jukebox.conf


Pressing the Menu button on the remote control invokes a special llink menu (from v2.0.8).

Default contents:

  • Play All: Play all media in a directory.
  • Delete: Deletes file or directory. Note: recursive delete may be enabled, check your conf file!
  • Unrar: Unrar's a RAR archive. May take some time if used on a small resource device such as a NAS. Note: [info]
  • Mount: Mounts an iso file. This is a WISH item to be added to, ntfs-3g etc.
  • Enter PIN: Sets a pin code PIN that enables the display of hidden .directories until you clear the PIN, or a 15 minute timeout. Default pin is: 1234
  • Clear PIN: Remove pin access on a file or directory
  • Quit llink: Tries to quit llink gracefully. Useful when running llink from a mounted share, for instance a USB stick.

You can add or remove items in the menu by editing the skin html files, for example adding custom user scripts.

Parental control with pincode

Put the movies you want to protect in .directories, eg directories where the name begins with a '.' (dot) such as .Horror. Define the PIN number in the conf file. Windows users can use Windows style $Horror$ names as well.

Multiple instances

EXPERIMENTAL: If you want to run more than one instance of llink, for example one with jukebox skin and another with the Aquarius, make jukebox.conf and llink.conf (or whatever you name the conf files) to use distinct port numbers. The default for llink is 8001, and Jukebox 8002. Also make sure the NAME=llink-daemon is unique in each conf file, ie call one llink-daemon, the other llink-jukebox.

With this you can start two instances, or as many as you want.

Playing from a DVD disc drive

You can access a USB DVD drive or a shared drive from a PC/Mac. You should be able to play all non-encrypted discs and some retail discs. The latter depends upon libdvdcss capacity. Please note that playback is basic; Time seek, fast forward and rewind do not work but you can use numeric keys on the remote to skip (1 for 10%, 2 for 20% etc.).

Remove the # comment in the following line in the llink.conf file:


Then update the path to your DVD drive. On a Mac the path could be found like this in Terminal:

# diskutil list
0: DRHORRIBLE *3.8 Gi disk4

Which will resulting line in the llink.conf file:


On llink for Windows it could look like:

(This section needs to be verified, but it's probably path=D:\ or d:/)

If the DVD drive is connected via USB to your NMT the line could look like this:

(This section needs to be verified, but it's probably path=/dev/disk1)

And if the drive is shared from a PC/Mac, played from the llink-nmt; map the shared disc in the NMT settings over NFS or SMB and use:

(This section needs to be verified, but it's probably path=/opt/sybhttpd/localhost.drives/NETWORK_SHARE/<the drive share name>)

Other functionalities

Watching live TV
With some minor changes, you can watch live TV streams via llink on your NMT device. Read more here: Llink:Live_TV

Using external jukeboxes
You can run other more or less "static" jukeboxes such as YAMJ through llink and still benefit from the many possibilities llink offers:

In order for llink and YAMJ (or other external Jukebox) to work, two conditions need to be met:

  1. the index file must be named index.html
  2. the index file must be in a llink ROOT folder (defined in the llink.conf file)

Playing mts files directly from Camcorder
According to a user on the NMT forum, by using llink-nmt on a PopcornHour A-110 it was possible to play all AVCHD files with mts extension directly from the camcorder (a SONY TG1, aka TG3 in Europe).