This page consists of various explanations, hints, etc. for SSODS. The order of the information on this page is more or less random. Take it as a FAQ without questions. Note that several methods presented here require advanced «Linux hacking skills» and are provided «as is». There is no guarantee that any of the following will work and/or is correct.. Furthermore, the information here is probably always outdated since things (i.e. SqueezeCenter, SSODS etc.) evolve constantly. Be sure to consider the relevant Internet resources available. See Support for a list of some of those.
$SSODSDIR/volume1/SSODS.$SSDIR/volume1/SqueezeCenter or /volume1/SlimServer.$???$SSODSDIR/etc/ssods/ssods.conf et al.)xxxxxGenerally, SSODS behaves exactly like SS/SC on any other Linux. Consider this when looking for answers in the forums, the wiki or documentations (e.g. for plugins).
Login as admin and get a decent shell setup to work with SSODS:
/volume1/SSODS/bin/bash --login
Note: You do not want to use this shell for the root user in /etc/passwd.
All shell commands on this page assume that you work in an «SSODS shell». If not, use absolute paths for perl etc or add $SSODSDIR/bin to $PATH.
See also Linux Hacking below.
SSOTS is SSODS for the TS. Minor modifications allow SSODS to run on a TS. See the installer script (sods-ts) for details.
On the TS, sudo(1) does not work due to limitations of the operating system. Login as admin (which is root!) and leave out the sudo in the commands.
TS users note: admin is an underprivileged user on the DS. Yours would be ssods. And your admin is actually root.
See also the notes on TurboStations below!
SC or SS will be installed in $SSDIR. The log files, the preferences and the cache directories and files can be found in the corresponding sub-directories.
You should be able to to access the files using the UNC path \\xxxxx\SqueezeCenter as user admin (!). Access via FTP should be possible as well if the FTP access is setup correctly. Another alternative would be the web based File Manager.
SS/SC runs as user admin. All SS/SC files are owned by admin. This can be overridden by setting $SSUSER, $SSGROUP and $SSOWNER in $SSODSDIR/etc/ssods/ssods.conf.local according to the default settings in ssods.conf.
Use the script ssctrl. If you login as admin you can do sudo ssctrl start or sudo ssctrl stop to start and stop the server. In this case, sudo(1) is configured to not ask for a password. ssctrl status does not require root privileges and, therefore, needs not to be preceded by sudo.
Additional flags to slimserver.pl can be set via $SSEXTRAARGS (see examples in $SSODSDIR/etc/ssods/ssods.conf, see also $SSODSDIR/bin/ssctrl).
To run slimserver.pl or scanner.pl manually, use (compare $SSODSDIR/bin/ssctrl):
perl slimserver.pl arguments...
Note: svn(1) does not work on all models (probably all Linux 2.4 based machines are affected). You could probably use svn from the Optware project instead.
Stop SC:
sudo ssctrl stop
Empty the SqueezeCenter (or the SlimServer one, depending on what you want/have) folder:
cd /volume1/SqueezeCenter rm -rf *
Download a copy of the trunk (this will take some time, note the dot at the end of the command line). The URL may vary, see here, here and this thread for some info on the SVN server directory structure.
svn checkout http://svn.slimdevices.com/repos/slim/7.1/trunk/server .
Start SqueezeCenter:
sudo ssctrl start
VoilĂ .
To update the local copy of the trunk, login as admin and do:
/volume1/SSODS/bin/bash --login cd /volume1/SqueezeCenter svn update sudo ssctrl restart
The following error message can be ignored safely. It is unclear (to me) what it means and it has been around quite a while. It does not seem to have any effect on SS/SC. There are some forum discussions about this.
[08-03-03 00:05:19.3022] Slim::Networking::mDNS::startAdvertising (110) Error: Couldn't find mDNSResponderPosix binary! Aborting!
Error messages without timestamps are emitted by Perl on the console. They are not normally part of the logfile. However, SSODS redirects the console to the logfile. These messages can usually be ignored (especially if they are labelled with a warning).
There are two (minor) issues with running SC on SSODS. They are both unresolvable SC bugs. They can, however, be solved (worked around) in the system (i.e. SSODS). That is done in the $SSODSDIR/bin/ssctrl script. It is safe to manually untar a SC tar ball or update an SVN trunk copy and then start SC using the mentioned script. It will apply the work-arounds on every start if necessary and report accordingly in the server log file. The two bugs are:
$SSDIR/CPAN/Compress/Zlib.pm.errmsg.sys and errmsg.txt in $SSDIR/MySQL.Apparently, there is also a MySQL sort bug with certain versions of MySQL. It leads to wrong (random?) sort order of the Browse Genre list. Synology promised to fix it in an upcoming firmware release. It looks like the MySQL server that comes with SSODS is not affected. So you can fix it using this instead of the built-in server. However, please note that this may or may not work and may or may not have other side-effects. Officially, SSODS uses the built-in server. So, if it works, you are lucky, if not, your problem. Here is how to setup SSODS to use the included MySQL server:
cd /volume1/SSODS/bin mv mysqld _mysqld ln -s /volume1/SSODS/libexec/mysqld . /volume1/SSODS/bin/ssctrl restart
There is more information in this (German) thread. Is there a bug filed at Bugzilla (couldn’t find one..)?
SS/SC starts its own MySQL server process. It uses the binary included in the DS firmware (see symlink $SSODSDIR/bin/mysqld).
It is possible to use the server instance started through the DS firmware instead. Create a database as follows:
/usr/syno/mysql/bin/mysql -u root create database slimserver; grant all on slimserver.* to slimserver@localhost identified by 'slimserver'; quit
Then modify the SS/SC preferences file as follows:
dbpassword: slimserver dbsource: dbi:mysql:database=slimserver:host=localhost busername: slimserver
See ExistingMySQLInstance on how to configure this.
SSODS also comes with a MySQL server programme which could be used. See $SSODSDIR/{libexec,share}/mysql.
{[sS]lim[sS]erver,[sS]queeze[cC]enter}*.{tar.gz,tar.bz2,tgz,tbz} (Bash pattern matching).slimserver.pl must be some_dir/slimserver.pl in the tar ball. This is the case for the official tar balls.$SSDIR may be a symlink. If you move the target, check the review the preferences file since some paths may point to the real path.$SSODSDIR/var/.$SSDIR directory (or the directory it is symlinked to) after asking exactly once for a confirmation.$SSODSDIR/etc/init.d/. See These changes should (!) be persistent with future upgrades.$SSODSDIR/share/doc and are available through the SSODS web interfacemplayer-stdout because the PCM output module is patched to run as a filter. The magic filename - makes the module dump the decoded data stdout rather than to a file or a pipe. That allows multiple mplayer instances to be run in parallel (e.g. to feed different streams to different clients at the same time). mplayer links to mplayer-stdoutmplayer-stdout links to one of these:mplayer-stdout-generic – generic version compiled with ELDK (cannot do RTSP)mplayer-stdout-ds and mplayer-stdout-ts – specifically compiled versions for DS and TS, respectively.mplayer-stdout-ds-fp and mplayer-stdout-ts-fp – specifically compiled versions for DS and TS, respectively with the fixed point arithmetic patch applied. This is the default.To play RTSP and WMA/mms (?) streams through mplayer, use these custom-type.conf definitions:
rtsppl rm,ram,rpm ? playlist rtsp rtsp: ? audio smilpl smil application/smil playlist
And these custom-convert.conf definitions.
rtsp wav * *
[mplayer-stdout] -really-quiet -vc null -vo null -bandwidth 10000000 -cache 128 -af volume=0,resample=44100:0:1,channels=2 -ao pcm:nowaveheader:file=- $FILE$
rtsp mp3 * *
[mplayer-stdout] -really-quiet -vc null -vo null -bandwidth 10000000 -cache 128 -af volume=0,resample=44100:0:1,channels=2 -ao pcm:nowaveheader:file=- $FILE$ | [lame] --silent -r -x -q $QUALITY$ -b $BITRATE$ - -
rtsp flc * *
[mplayer-stdout] -really-quiet -vc null -vo null -bandwidth 10000000 -cache 128 -af volume=0,resample=44100:0:1,channels=2 -ao pcm:nowaveheader:file=- $FILE$ | [flac] -cs --totally-silent --endian=little --channels=2 --sign=signed --bps=16 --sample-rate=44100 --compression-level-0 -
wma wav * *
[mplayer-stdout] -really-quiet -vc null -vo null -cache 128 -af volume=0,resample=44100:0:1,channels=2 -ao pcm:nowaveheader:file=- $FILE$
wma mp3 * *
[mplayer-stdout] -really-quiet -vc null -vo null -cache 128 -af volume=0,resample=44100:0:1,channels=2 -ao pcm:nowaveheader:file=- $FILE$ | [lame] --silent -r -x -q $QUALITY$ -b $BITRATE$ - -
wma flc * *
[mplayer-stdout] -really-quiet -vc null -vo null -cache 128 -af volume=0,resample=44100:0:1,channels=2 -ao pcm:nowaveheader:file=- $FILE$ | [flac] -cs --totally-silent --endian=little --channels=2 --sign=signed --bps=16 --sample-rate=44100 --compression-level-0 -
You may need the AlienBBC plugins for these to work. And you probably don’t need the rules once AlienBBC is setup correctly. See below and the forums etc.
You can also play m4a files using these rules:
mov wav * *
[mplayer-stdout] -really-quiet -vc null -vo null -cache 128 -af volume=0,resample=44100:0:1,channels=2 -ao pcm:nowaveheader:file=- $FILE$ 2>/dev/null
mov mp3 * *
[mplayer-stdout] -really-quiet -vc null -vo null -cache 128 -af volume=0,resample=44100:0:1,channels=2 -ao pcm:nowaveheader:file=- $FILE$ 2>/dev/null | [lame] --silent -r -x -q $QUALITY$ -b $BITRATE$ - - 2>/dev/null
mov flc * *
[mplayer-stdout] -really-quiet -vc null -vo null -cache 128 -af volume=0,resample=44100:0:1,channels=2 -ao pcm:nowaveheader:file=- $FILE$ 2>/dev/null | [flac] -cs --endian=little --channels=2 --sign=signed --bps=16 --sample-rate=44100 --compression-level-0 - - 2>/dev/null
You can play AAC+ files using this custom-types.conf types
aap - audio/aacp,audio/aac audio
and this custom-convert.conf rules
aap wav * *
[mplayer-stdout] -ac faad -demuxer aac -really-quiet -vc null -vo null -cache 64 -af volume=0,resample=44100:0:1,channels=2 -ao pcm:nowaveheader:file=- $FILE$ 2>/dev/null
aap mp3 * *
[mplayer-stdout] -ac faad -demuxer aac -really-quiet -vc null -vo null -cache 64 -af volume=0,resample=44100:0:1,channels=2 -ao pcm:nowaveheader:file=- $FILE$ 2>/dev/null | [lame] --silent -r -x -q $QUALITY$ -b $BITRATE$ - - 2>/dev/null
aap flc * *
[mplayer-stdout] -ac faad -demuxer aac -really-quiet -vc null -vo null -cache 64 -af volume=0,resample=44100:0:1,channels=2 -ao pcm:nowaveheader:file=- $FILE$ 2>/dev/null | [flac] -cs --totally-silent --endian=little --channels=2 --sign=signed --bps=16 --sample-rate=44100 --compression-level-0 - - 2>/dev/null
and this addition to stings.txt (isn’t there a custom-strings.txt?)
AAP
EN AACplus
See also this post (and ff.) and this thread.
There are further programmes to do on-the-fly conversion for SS/SC. These include oggenc, flac, lame, shorten, sox and others. They can all be used on the command line as well. Note that SoX comes without support to decode flac encoded files. Use flac --decode to do the job.
There are several programmes (mplayer, lame, vorbis-tools, flac, sox, alac, shorten, mac-port, mppdec) included with SSODS that enable on-the-fly transcoding of exotic file formats. See sources for a complete list of included programmes.
Note: This section is outdated and the information might be completely wrong. There is no official support for any plugin (well, there is no official support at all anyway..).
Several plugins seem to work: AlienBBC, MusicInfoSCR, Scanner, LazySearch, TrackStat and probably more.
Third party plugins (plugin files and folders) for SS/SC have to be installed manually in $SSDIR/Plugins. See above on how to access the SS/SC files.
It is possible to add missing Perl modules to the $SSDIR/CPAN directory hierarchy (as in site_perl on usual installations). One could also patch a SS/SC tar ball accordingly.
Install the plugin:
cd /volume1/SqueezeCenter tar -xzvf /path/to/alienbbc-linux_v2.00.tar.gz
Change the conversion rules with this command:
sed -i '/^[^#]/s/mplayer.sh/mplayer-stdout/;/^[^#]/s@/dev/fd/3@-@' /volume1/SqueezeCenter/Plugins/Alien/custom-convert.conf
Setup appropriate File Type settings, which probably are:
Restart SC:
sudo ssctrl restart
Note: Not applicable to TurboStations due to limitations in the operating system.
Add to $SSODSDIR/etc/sudoers-template (see sudoers(5) for details):
admin ALL=(ALL) SETENV: ALL
Update the $SSODSDIR/etc/sudoers file:
/volume1/SSODS/etc/init.d/sudoers start
If you want a nice «vim» (as far as this is possible with a «vi» anyway), do this:
cd /volume1/SSODS/share/vim sudo tar -xjvf vim71-files.tar.bz2 ln -s /volume1/SSODS/share/vim/vim71/vimrc_sample.vim ~/.vimrc
Once you setup a locale via SSODS->Settings it will be available in the «SSODS bash» (see $SSODSDIR/etc/profile. locale will show the currently active locale, locale -a will show the available (compiled) ones. Use the Generate locale routine in SSODS to generate additional locales. The commands to generate (compile) a specific locale could look like this (compare $SSODSDIR/libexec/ssods/ssods_cgi-locales.sh):
ln -s /volume1/SSODS/share/locale /usr ln -s /volume1/SSODS/share/i18n /usr mkdir /usr/lib/locale localedef -i de_CH -c -f UTF-8 -A /usr/share/locale/locale.alias de_CH.UTF-8
Since change 21067 (see also bug #8410) there is a new command line option (--charset) to slimserver.pl to force it to interpret filenames using the specified charset. SSODS users wishing to use this can add the option to $SSDIR/ssods.conf (e.g. SSEXTRAARGS="$SSEXTRAARGS --charset=utf8). This makes the UTF-8 Patch in SSODS obsolete for SC >= 7.1.
See also Filename encoding below.
This section probably also applies to Turbostations.
The DS firmware does not support locales. Therefore the date and time screensaver on the SB will allways show English day and month names. SSODS comes with the necessary locales since 3.0beta10. If setup correctly (via the Settings page in SSODS), the screensaver should use localised names.
The DS firmware uses a case insensitive file system, which is a pain in the as.
Beta versions of Synology firmwares might (!) work but are not (!) supported.
It seems, that the DS sets the volume to read-only while a disk check and/or a re-sync of the software RAID device(s) is going on. This prevents SS from starting up correctly. The result may be errors (in the logs, on the console) such as segmentation fault, core dumped or other generic errors.
It is always a good idea to reboot if things do not work as expected. :-)
The DS uses UTF-8 encoding for file names. It is recommended to use an UTF-8 locale for SSODS/SC. See also Locales above. If you access your files via NFS or FTP (?) ensure that the client system uses an UTF-8 locale, too.
Harddisk standby (or «hibernation» as it is often misleadingly called) seems to be an issue on Diskstations (and other NAS), particularly with SSODS and SqueezeCenter installed and running. There is about a zillion of forum threads on this subject.
There is also an undocumented programme in the firmware (see Spindown issues) which can help to identify the culprits. A part of SSODS (thttpd) apparently caused problems (see this thread). This has been fixed in beta13.
Another culprit seems to be Perl’s INET.pm module which accesses /etc/protocols to lookup protocol numbers. There’s a more recent version of this module in the development version of Perl. This one, however, still doesn’t help due to a typo. SSODS includes a corrected version of the module since 3.14. See this thread for more information.
Apparently, the Multimedia Station (or whatever this is called) creates numerous directories named @eaDir, which contain meta data, which can disturb SC’s scanner. There used to be (and still is, for SS/SC < 7.1) a patch in SSODS to ignore these directories during scanning. Since change 20838 they are ignored by default. Hence, the patch is no longer available and necessary for SC >= 7.1.
Go to Network Share Management and Create a new share with the following settings:
SqueezeCenter/SqueezeCenter. Click OK.In the Access Control panel add the user ssods with Full access to the left pane. Remove all other users and groups.
Go to the User Management and Change Password for the ssods user.
ssh to the TS and call /usr/local/samba/bin/smbpasswd -a ssods and enter the same password again.
You should now be able to connect the share as user ssods (and only as this user) and modify the files (e.g. to add a plugin or to backup the preferences).
If there are issues with incorrect time and/or timezone display, try adding the following to /share/HDA_DATA/SqueezeCenter/ssods.conf (create the file if it doesn’t exits) and restart SC.
[ -f /etc/TZ ] && export TZ=`cat /etc/TZ`