DSM-G600, DNS-3xx and NSA-220 Hack Forum

Unfortunately no one can be told what fun_plug is - you have to see it for yourself.

You are not logged in.

Announcement

#26 2010-05-17 11:34:57

haim
Member
Registered: 2010-01-13
Posts: 83

Re: Mpd music daemon with Iphone remote control and airtunes playback

Just noticed that the forked-daapd has introduced itunes remote linkup and AirTunes playing.  So its now in theory an ideal setup (active developers).

However still left with it running on the NAS. 

I presume when running Debian (squeeze) in a chroot environment it uses its own linux kernel which would have access to the missing components you mentioned Kai? 

Seems there's a fair bit of work on a new firmware, will be interesting to see if that reaches a level where it is a no-brainer to change to that instead.

Offline

 

#27 2010-05-26 03:20:27

luxmatic
New member
Registered: 2010-05-26
Posts: 2

Re: Mpd music daemon with Iphone remote control and airtunes playback

My challenge today was to find a way to stream music from my DNS-321 at home to my work machine.  After a bit of research I came up with using mpd + icecast.  At this point I have:

* mpd installed and running using the config provided earlier in this thread.  My mpd client shows the indexed music is behaving well - shows music, and "plays" the music to /tmp/mpdfifo.

* icecast is installed and running.

* installed http://rs755tl2.rapidshare.com/files/25 … -0.15b.tgz

* installed http://rs213tl3.rapidshare.com/files/25 … -0.1.7.tgz

Here's the problem.  Changed audio_output to output to icecast:

Code:

audio_output {
type "shout"
name "Stream short description"
host "localhost"
port "8000"
mount "/mpd.ogg"
password "hackme"
quality "5.0"
format "44100:16:2"
}

Restarted mpd.  Noted through icecast log files that it gets called through mpd:

Code:

127.0.0.1 - - [25/May/2010:16:45:44 -0700] "SOURCE /mpd.ogg HTTP/1.0" 200 19 "-"                                                                      
"MPD" 1

However, as soon as mpd shows the "decoder" line below - I get a nice juicy segmentation fault:

Code:

root@BlackRoom:/opt/etc# ../bin/mpd --stdout --no-daemon mpd.conf
listen: binding to any address
listen: binding to socket address [::]:6600
listen: binding to socket address 0.0.0.0:6600
path: path_set_fs_charset: fs charset is: UTF-8
database: reading DB
daemon: opening pid file
daemon: writing pid file
avahi: Initializing interface
avahi: Failed to create client: Daemon not running
avahi: Shutting down interface
state_file: Saving state file
database: get song: test.mp3
playlist: play 0:"test.mp3"
decoder: audio_format=44100:24:2, seekable=true
Segmentation fault

This looks to be very close to working, but I've reached the end of debugging abilities.  Kai/Anyone - can you help with this?  I'll write this up for others if we can get it working...

Here are my config files:

mpd.conf

Code:

# An example configuration file for MPD
# See the mpd.conf man page for a more detailed description of each parameter.


# Files and directories #######################################################
#
# This setting controls the top directory which MPD will search to discover the
# available audio files and add them to the daemon's online database. This 
# setting defaults to the XDG directory, otherwise the music directory will be
# be disabled and audio files will only be accepted over ipc socket (using
# file:// protocol) or streaming files over an accepted protocol.
#
music_directory        "/mnt/HD_a2/Audio/Other\ Music/"
#
# This setting sets the MPD internal playlist directory. The purpose of this
# directory is storage for playlists created by MPD. The server will use 
# playlist files not created by the server but only if they are in the MPD
# format. This setting defaults to playlist saving being disabled.
#
playlist_directory        "~/.mpd/playlists"
#
# This setting sets the location of the MPD database. This file is used to
# load the database at server start up and store the database while the 
# server is not up. This setting defaults to disabled which will allow
# MPD to accept files over ipc socket (using file:// protocol) or streaming
# files over an accepted protocol.
#
db_file            "~/.mpd/database"
# 
# These settings are the locations for the daemon log files for the daemon.
# These logs are great for troubleshooting, depending on your log_level
# settings.
#
# The special value "syslog" makes MPD use the local syslog daemon. This
# setting defaults to logging to syslog, otherwise logging is disabled.
#
log_file            "~/.mpd/log"
#
# This setting sets the location of the file which stores the process ID
# for use of mpd --kill and some init scripts. This setting is disabled by
# default and the pid file will not be stored.
#
pid_file            "~/.mpd/pid"
#
# This setting sets the location of the file which contains information about
# most variables to get MPD back into the same general shape it was in before
# it was brought down. This setting is disabled by default and the server 
# state will be reset on server start up.
#
state_file            "~/.mpd/state"
#
###############################################################################


# General music daemon options ################################################
#
# This setting specifies the user that MPD will run as. MPD should never run as
# root and you may use this setting to make MPD change its user ID after
# initialization. This setting is disabled by default and MPD is run as the
# current user.
#
user                "nobody"
#
# This setting sets the address for the daemon to listen on. Careful attention
# should be paid if this is assigned to anything other then the default, any.
# This setting can deny access to control of the daemon.
#
# For network
bind_to_address        "any"
#
# And for Unix Socket
#bind_to_address        "~/.mpd/socket"
#
# This setting is the TCP port that is desired for the daemon to get assigned
# to.
#
port                "6600"
#
# This setting controls the type of information which is logged. Available 
# setting arguments are "default", "secure" or "verbose". The "verbose" setting
# argument is recommended for troubleshooting, though can quickly stretch
# available resources on limited hardware storage.
#
log_level            "verbose"
#
# If you have a problem with your MP3s ending abruptly it is recommended that 
# you set this argument to "no" to attempt to fix the problem. If this solves
# the problem, it is highly recommended to fix the MP3 files with vbrfix
# (available from <http://www.willwap.co.uk/Programs/vbrfix.php>), at which
# point gapless MP3 playback can be enabled.
#
gapless_mp3_playback            "yes"
#
# This setting enables MPD to create playlists in a format usable by other
# music players.
#
save_absolute_paths_in_playlists    "no"
#
# This setting defines a list of tag types that will be extracted during the 
# audio file discovery process. Optionally, 'comment' can be added to this
# list.
#
metadata_to_use    "artist,album,title,track,name,genre,date,disc"
#
###############################################################################


# Symbolic link behavior ######################################################
#
# If this setting is set to "yes", MPD will discover audio files by following 
# symbolic links outside of the configured music_directory.
#
follow_outside_symlinks    "yes"
#
# If this setting is set to "yes", MPD will discover audio files by following
# symbolic links inside of the configured music_directory.
#
follow_inside_symlinks        "yes"
#
###############################################################################


# Zeroconf / Avahi Service Discovery ##########################################
#
# If this setting is set to "yes", service information will be published with
# Zeroconf / Avahi.
#
zeroconf_enabled        "yes"
#
# The argument to this setting will be the Zeroconf / Avahi unique name for
# this MPD server on the network.
#
zeroconf_name            "Music Player"
#
###############################################################################


# Permissions #################################################################
#
# If this setting is set, MPD will require password authorization. The password
# can setting can be specified multiple times for different password profiles.
#
#password                        "password@read,add,control,admin"
#
# This setting specifies the permissions a user has who has not yet logged in. 
#
#default_permissions             "read,add,control,admin"
#
###############################################################################


# Input #######################################################################
#

input {
        plugin "curl"
#       proxy "proxy.isp.com:8080"
#       proxy_user "user"
#       proxy_password "password"
}


#
###############################################################################



audio_output {
    type        "shout"
    encoding    "ogg"
    name        "my cool stream"
    host        "localhost"
    port        "8000"
    mount       "/mpd.ogg"

# This is the source password in icecast.xml
    password    "hackme"

# Set either quality or bitrate
#   quality     "5.0"
    bitrate     "64"

    format      "44100:16:1"

# Optional Paramters
    user        "source"
#   description "here's my long description"
#   genre       "jazz"
} # end of audio_output


# Volume control mixer ########################################################
#
# These are the global volume control settings. By default, this setting will
# be detected to the available audio output device, with preference going to 
# hardware mixing. Hardware and software mixers for individual audio_output
# sections cannot yet be mixed.
#
# An example for controlling an ALSA, OSS or Pulseaudio mixer; If this
# setting is used other sound applications will be affected by the volume
# being controlled by MPD.
#
#mixer_type            "hardware"
#
# An example for controlling all mixers through software. This will control
# all controls, even if the mixer is not supported by the device and will not
# affect any other sound producing applications.
#
#mixer_type            "software"
#
# This example will not allow MPD to touch the mixer at all and will disable
# all volume controls.
#
#mixer_type            "disabled"
#
###############################################################################


# Normalization automatic volume adjustments ##################################
#
# This setting specifies the type of ReplayGain to use. This setting can have
# the argument "album" or "track". See <http://www.replaygain.org> for more
# details. This setting is disabled by default.
#
#replaygain            "album"
#
# This setting sets the pre-amp used for files that have ReplayGain tags. By
# default this setting is disabled.
#
#replaygain_preamp        "0"
#
# This setting enables on-the-fly normalization volume adjustment. This will
# result in the volume of all playing audio to be adjusted so the output has 
# equal "loudness". This setting is disabled by default.
#
#volume_normalization        "no"
#
###############################################################################


# MPD Internal Buffering ######################################################
#
# This setting adjusts the size of internal decoded audio buffering. Changing
# this may have undesired effects. Don't change this if you don't know what you
# are doing.
#
#audio_buffer_size        "2048"
#
# This setting controls the percentage of the buffer which is filled before 
# beginning to play. Increasing this reduces the chance of audio file skipping, 
# at the cost of increased time prior to audio playback.
#
#buffer_before_play        "10%"
#
###############################################################################


# Resource Limitations ########################################################
#
# These settings are various limitations to prevent MPD from using too many
# resources. Generally, these settings should be minimized to prevent security
# risks, depending on the operating resources.
#
#connection_timeout        "60"
#max_connections        "10"
#max_playlist_length        "16384"
#max_command_list_size        "2048"
#max_output_buffer_size        "8192"
#
###############################################################################


# Character Encoding ##########################################################
#
# If file or directory names do not display correctly for your locale then you 
# may need to modify this setting. After modification of this setting mpd 
# --create-db must be run to change the database.
#
#filesystem_charset        "UTF-8"
#
# This setting controls the encoding that ID3v1 tags should be converted from.
#
#id3v1_encoding            "ISO-8859-1"
#
###############################################################################

icecast.xml

Code:

<icecast>
    <limits>
        <clients>100</clients>
        <sources>2</sources>
        <threadpool>5</threadpool>
        <queue-size>524288</queue-size>
        <client-timeout>30</client-timeout>
        <header-timeout>15</header-timeout>
        <source-timeout>10</source-timeout>
        <!-- If enabled, this will provide a burst of data when a client 
             first connects, thereby significantly reducing the startup 
             time for listeners that do substantial buffering. However,
             it also significantly increases latency between the source
             client and listening client.  For low-latency setups, you
             might want to disable this. -->
        <burst-on-connect>1</burst-on-connect>
        <!-- same as burst-on-connect, but this allows for being more
             specific on how much to burst. Most people won't need to
             change from the default 64k. Applies to all mountpoints  -->
        <burst-size>65535</burst-size>
    </limits>

    <authentication>
        <!-- Sources log in with username 'source' -->
        <source-password>hackme</source-password>
        <!-- Relays log in username 'relay' -->
        <relay-password>hackme</relay-password>

        <!-- Admin logs in with the username given below -->
        <admin-user>admin</admin-user>
        <admin-password>hackme</admin-password>
    </authentication>

    <!-- set the mountpoint for a shoutcast source to use, the default if not
         specified is /stream but you can change it here if an alternative is
         wanted or an extension is required
    <shoutcast-mount>/live.nsv</shoutcast-mount>
    -->

    <!-- Uncomment this if you want directory listings -->
    <!--
    <directory>
        <yp-url-timeout>15</yp-url-timeout>
        <yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
    </directory>
     -->

    <!-- This is the hostname other people will use to connect to your server.
    It affects mainly the urls generated by Icecast for playlists and yp
    listings. -->
    <hostname>media.ferriel.com</hostname>

    <!-- You may have multiple <listener> elements -->
    <listen-socket>
        <port>8000</port>
        <!-- <bind-address>127.0.0.1</bind-address> -->
        <!-- <shoutcast-mount>/stream</shoutcast-mount> -->
    </listen-socket>
    <!--
    <listen-socket>
        <port>8001</port>
    </listen-socket>
    -->

    <!--<master-server>127.0.0.1</master-server>-->
    <!--<master-server-port>8001</master-server-port>-->
    <!--<master-update-interval>120</master-update-interval>-->
    <!--<master-password>hackme</master-password>-->

    <!-- setting this makes all relays on-demand unless overridden, this is
         useful for master relays which do not have <relay> definitions here.
         The default is 0 -->
    <!--<relays-on-demand>1</relays-on-demand>-->

    <!--
    <relay>
        <server>127.0.0.1</server>
        <port>8001</port>
        <mount>/example.ogg</mount>
        <local-mount>/different.ogg</local-mount>
        <on-demand>0</on-demand>

        <relay-shoutcast-metadata>0</relay-shoutcast-metadata>
    </relay>
    -->

    <!-- Only define a <mount> section if you want to use advanced options,
         like alternative usernames or passwords
    <mount>
        <mount-name>/example-complex.ogg</mount-name>

        <username>othersource</username>
        <password>hackmemore</password>

        <max-listeners>1</max-listeners>
        <dump-file>/tmp/dump-example1.ogg</dump-file>
        <burst-size>65536</burst-size>
        <fallback-mount>/example2.ogg</fallback-mount>
        <fallback-override>1</fallback-override>
        <fallback-when-full>1</fallback-when-full>
        <intro>/example_intro.ogg</intro>
        <hidden>1</hidden>
        <no-yp>1</no-yp>
        <authentication type="htpasswd">
                <option name="filename" value="myauth"/>
                <option name="allow_duplicate_users" value="0"/>
        </authentication>
        <on-connect>/home/icecast/bin/stream-start</on-connect>
        <on-disconnect>/home/icecast/bin/stream-stop</on-disconnect>
    </mount>

    <mount>
        <mount-name>/auth_example.ogg</mount-name>
        <authentication type="url">
            <option name="mount_add"       value="http://myauthserver.net/notify_mount.php"/>
            <option name="mount_remove"    value="http://myauthserver.net/notify_mount.php"/>
            <option name="listener_add"    value="http://myauthserver.net/notify_listener.php"/>
            <option name="listener_remove" value="http://myauthserver.net/notify_listener.php"/>
        </authentication>
    </mount>

    -->

    <fileserve>1</fileserve>

    <paths>
        <!-- basedir is only used if chroot is enabled -->
        <basedir>/opt/share/icecast</basedir>

        <!-- Note that if <chroot> is turned on below, these paths must both
             be relative to the new root, not the original root -->
        <logdir>/opt/var/log/icecast</logdir>
        <webroot>/opt/share/icecast/web</webroot>
        <adminroot>/opt/share/icecast/admin</adminroot>
        <!-- <pidfile>/opt/share/icecast/icecast.pid</pidfile> -->

        <!-- Aliases: treat requests for 'source' path as being for 'dest' path
             May be made specific to a port or bound address using the "port"
             and "bind-address" attributes.
          -->
        <!--
        <alias source="/foo" dest="/bar"/>
          -->
        <!-- Aliases: can also be used for simple redirections as well,
             this example will redirect all requests for http://server:port/ to
             the status page
          -->
        <alias source="/" dest="/status.xsl"/>
    </paths>

    <logging>
        <accesslog>access.log</accesslog>
        <errorlog>error.log</errorlog>
        <!-- <playlistlog>playlist.log</playlistlog> -->
          <loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
          <logsize>10000</logsize> <!-- Max size of a logfile -->
        <!-- If logarchive is enabled (1), then when logsize is reached
             the logfile will be moved to [error|access|playlist].log.DATESTAMP,
             otherwise it will be moved to [error|access|playlist].log.old.
             Default is non-archive mode (i.e. overwrite)
        -->
        <!-- <logarchive>1</logarchive> -->
    </logging>

    <security>
        <chroot>0</chroot>
        <changeowner>
            <user>nobody</user>
            <group>nogroup</group>
        </changeowner>
    </security>
</icecast>

Offline

 

#28 2010-05-26 19:37:48

Elgrande
Member
Registered: 2010-05-02
Posts: 9

Re: Mpd music daemon with Iphone remote control and airtunes playback

Hi There,

Wil the Mpd server work on a CH3MNAS ?
and is optware save to install on this box ?

with kind regards

Sander


NAS: CH3MNAS with 2 TB storage.

Offline

 

#29 2010-05-26 23:59:48

haim
Member
Registered: 2010-01-13
Posts: 83

Re: Mpd music daemon with Iphone remote control and airtunes playback

@Elgrande

My understanding is that the CH#MNAS is identical to the DNS-323.  I belive Kai is running the same.  So yes.

Also optware is safe.  Follow the howto in the wiki.

Offline

 

#30 2010-06-05 18:22:22

luxmatic
New member
Registered: 2010-05-26
Posts: 2

Re: Mpd music daemon with Iphone remote control and airtunes playback

luxmatic wrote:

My challenge today was to find a way to stream music from my DNS-321 at home to my work machine.  After a bit of research I came up with using mpd + icecast.  At this point I have:

* mpd installed and running using the config provided earlier in this thread.  My mpd client shows the indexed music is behaving well - shows music, and "plays" the music to /tmp/mpdfifo.

* icecast is installed and running.

* installed http://rs755tl2.rapidshare.com/files/25 … -0.15b.tgz

* installed http://rs213tl3.rapidshare.com/files/25 … -0.1.7.tgz

Here's the problem.  Changed audio_output to output to icecast:

And here's the bigger problem.  This box is clearly not powerful enough to do what I wanted.  Switching mpd's output to httpd/mp3 pegs the cpu at 100%, and it can't keep up at all with this straight-forward streaming.

The other issue I was having a problem with seems to be caused by using Ogg to transcode.  Since I've given up on this approach, I'm not going to look into it further.

Offline

 

#31 2010-09-21 16:52:59

bigwebb83
Member
Registered: 2010-09-21
Posts: 49

Re: Mpd music daemon with Iphone remote control and airtunes playback

this is a very simple question so please forgive me but how do I point the mpd to my music directory? is this done through the telnet session or do I need to open a file and edit the text through a windows text editor?

Same question for creating a startup file....  Do I do this through a telnet session or through notepad and just save it to the proper directory on the nas?  I'm a beginner with all this stuff so again please forgive me.

Offline

 

#32 2010-09-21 17:31:10

FunFiler
Member
Registered: 2010-05-23
Posts: 577

Re: Mpd music daemon with Iphone remote control and airtunes playback

I've never done it (I don't need or want it) but it seems pretty clear from the information in the first post in this thread

- create mpd.conf in /opt/etc/mpd.conf (use skeleton or copy from another distribution)
  -- change music_directory to point to your music directory

Personally, I'd use vi to create/edit the file but you should be able to use notepad then save/copy to the correct location.


3 * (DNS-323 with 2 * 2TB) = 12TB Running FW v1.08 & FFP v0.5
Useful Links: Transmission, Transmission Remote, Automatic

Offline

 

#33 2010-09-21 17:38:42

haim
Member
Registered: 2010-01-13
Posts: 83

Re: Mpd music daemon with Iphone remote control and airtunes playback

Yeah, I never really trust doing stuff outside a telnet/ssh session but I think it has at least worked using Gedit on linux and placing the file over the network.  I'm always unsure on the whole rights thing so find it less stress to do it via telnet.  Although I would tend to get Nano on there so I don't have to use 'vi' cos I've forgotten the commands smile

Pretty sure there was some samba issue for a while using my mac, saving wasn't working or something.  Anyway, now I'm rambling.

Offline

 

#34 2010-09-21 18:32:06

bigwebb83
Member
Registered: 2010-09-21
Posts: 49

Re: Mpd music daemon with Iphone remote control and airtunes playback

I've done a little reading and am trying to get to the ipkg directory to edit the mpd.conf through telnet.  However it appears that somehow the root directory has been set as volume_1/ffp rather than just volume_1.  The ipkg directory is located in volume_1 so i can't get there via telnet.  Any ideas?

Offline

 

#35 2010-09-21 18:34:32

bigwebb83
Member
Registered: 2010-09-21
Posts: 49

Re: Mpd music daemon with Iphone remote control and airtunes playback

and just to RE-clarify...  I am not well versed in linux so I don't know the commands and I don't know how to edit files.  I DO know that you aren't supposed to use a windows text editor like notepad to edit a linux text file though.

Offline

 

#36 2010-09-21 19:54:19

bigwebb83
Member
Registered: 2010-09-21
Posts: 49

Re: Mpd music daemon with Iphone remote control and airtunes playback

ok so I'm able to edit the file via telnet now using the vi filename command but I'm not sure if the standard mpd.conf file is a usable file or just instructions.  It basically has a bunch of text in there explaining things.  I would have assumed it would be more code oriented.  Is there somewhere I can just download a "skeleton" as mentioned in the first post?

Offline

 

#37 2010-09-22 00:17:46

bigwebb83
Member
Registered: 2010-09-21
Posts: 49

Re: Mpd music daemon with Iphone remote control and airtunes playback

now i see that i have to take off some of the # signs to initiate the code.  When I take them off for the music directory, playlist directory and log directory and then run the command to create the database it says can not find all of those files.  How would I go about creating them?


It is also referencing the folders as /home/root/FOLDERNAME.  By deault it looks like this "~/music" which makes it think it's /home/root/music.  My music folder is called Music and is in the root (volume_1) directory.  Any ideas?

Last edited by bigwebb83 (2010-09-22 00:21:00)

Offline

 

#38 2010-09-22 00:41:57

bigwebb83
Member
Registered: 2010-09-21
Posts: 49

Re: Mpd music daemon with Iphone remote control and airtunes playback

when i do an ls command it doesn't show any of the folders in my root directory.  In fact the folders that it shows don't appear to be part of any directory in particular.

Offline

 

#39 2010-09-22 15:37:06

haim
Member
Registered: 2010-01-13
Posts: 83

Re: Mpd music daemon with Iphone remote control and airtunes playback

You need to set the correct music folder. 

I always get confused about root folders so have put the full path in I think.

Likely to be :

/mnt/HD_a2/Volume_1/SOME_FOLDER_NAME

This is as the hard disk is always mounted as HD_a2 for the first disk and errrr a4? or something for the second.

I can send you a copy of my mpd.conf later tonight (copenhagen time) to help.

Looks like you are working it out though, good stuff smile  Took me a fair while and trial and error.  Also with mp3's which mpd couldnt cope with.

Haim

Offline

 

#40 2010-09-22 16:40:32

bigwebb83
Member
Registered: 2010-09-21
Posts: 49

Re: Mpd music daemon with Iphone remote control and airtunes playback

^ That was correct.  Now the problem I am having is that when I run the create db command (#7 on the list) I get an error that says "could not open FIFO "/tmp/mpdfifo" for writing: Permision Denied. 

Any ideas?

Offline

 

#41 2010-09-22 18:54:13

karlrado
Member
Registered: 2009-12-07
Posts: 229

Re: Mpd music daemon with Iphone remote control and airtunes playback

In a telnet session, do:

ls -l /

(the -l is a dash followed by a lower case L)

Mine has:

drwxrwxrwt  3 root root    1024 Sep 22 09:40 tmp

The 10 chars at the start are probably different for you.

In my fun_plug, I have the command:

# fix /tmp permissions
chmod 1777 /tmp

Apparently, when the DNS boots up and makes the /tmp directory it doesn't set the permissions on the directory so that foreign programs like mpd can work.  (Remember, we're hacking the DNS and making it do things that were not originally intended.)

The above command in the fun_plug fixes up the permissions.  You should probably add it to yours.

However, I would strongly advise that you set up the mpd configuration so that it puts its temporary files on your harddisk and not in the ramdisk filesystem.  This is because everything in places like /, /etc, /tmp and so on are actually stored in a small amount of memory and not a large disk.  This memory is not large and can easily fill up.  So, if your mpd config file has an option to specify a TMP_DIR or some other "work" directory, it would be wise to create a folder like "/mnt/HD_a2/mpd_files" and set its permissions to 777.  Then modify the config file to point to this folder.

If you don't do this and mpd writes files that take up too much space in /tmp, the ramdisk filesystem will fill up and you'll be left with quite a puzzle.

I don't know much about mpd, so you'll have to read the wiki and dig into it a bit.


DNS-323 FW 1.07 : 2 1TB WD Caviar Green SATA : fun_plug: utelnet + optware (no ffp)

Offline

 

#42 2010-09-22 23:37:45

haim
Member
Registered: 2010-01-13
Posts: 83

Re: Mpd music daemon with Iphone remote control and airtunes playback

Hmmmm, mine is writing to the /tmp, I wonder if that is a benefit some how as its constantly writing the music stream there to be picked up by raop_play, so perhaps better to be using memory (if you have enough) for a continuous writing like this rather than disk.

Anyone got a view on that?  I can only speculate.

Regarding the tmp permissions, I can't see that I'm doing any chmod on it, but perhaps running as root?

Offline

 

#43 2010-09-22 23:43:37

haim
Member
Registered: 2010-01-13
Posts: 83

Re: Mpd music daemon with Iphone remote control and airtunes playback

Just in case it's useful, here is my mpd.conf

# An example configuration file for MPD
# See the mpd.conf man page for a more detailed description of each parameter.


# Files and directories #######################################################
#
# This setting controls the top directory which MPD will search to discover the
# available audio files and add them to the daemon's online database. This
# setting defaults to the XDG directory, otherwise the music directory will be
# be disabled and audio files will only be accepted over ipc socket (using
# file:// protocol) or streaming files over an accepted protocol.
#
music_directory        "/mnt/HD_a2/iTunes/iTunes Music/"
#
# This setting sets the MPD internal playlist directory. The purpose of this
# directory is storage for playlists created by MPD. The server will use
# playlist files not created by the server but only if they are in the MPD
# format. This setting defaults to playlist saving being disabled.
#
playlist_directory        "/opt/var/lib/mpd/mpd_playlists"
#
# This setting sets the location of the MPD database. This file is used to
# load the database at server start up and store the database while the
# server is not up. This setting defaults to disabled which will allow
# MPD to accept files over ipc socket (using file:// protocol) or streaming
# files over an accepted protocol.
#
db_file            "/opt/var/lib/mpd/mpd_database"
#
# These settings are the locations for the daemon log files for the daemon.
# These logs are great for troubleshooting, depending on your log_level
# settings.
#
# The special value "syslog" makes MPD use the local syslog daemon. This
# setting defaults to logging to syslog, otherwise logging is disabled.
#
log_file            "/opt/var/lib/mpd/mpd.log"
#
# This setting sets the location of the file which stores the process ID
# for use of mpd --kill and some init scripts. This setting is disabled by
# default and the pid file will not be stored.
#
pid_file            "/opt/var/lib/mpd/mpd_pid"
#
# This setting sets the location of the file which contains information about
# most variables to get MPD back into the same general shape it was in before
# it was brought down. This setting is disabled by default and the server
# state will be reset on server start up.
#
#state_file            "~/.mpd/state"
#
###############################################################################


# General music daemon options ################################################
#
# This setting specifies the user that MPD will run as. MPD should never run as
# root and you may use this setting to make MPD change its user ID after
# initialization. This setting is disabled by default and MPD is run as the
# current user.
#
#user                "nobody"
#
# This setting sets the address for the daemon to listen on. Careful attention
# should be paid if this is assigned to anything other then the default, any.
# This setting can deny access to control of the daemon.
#
# For network
bind_to_address        "192.168.0.102"
#
# And for Unix Socket
#bind_to_address        "~/.mpd/socket"
#
# This setting is the TCP port that is desired for the daemon to get assigned
# to.
#
port                "6600"
#
# This setting controls the type of information which is logged. Available
# setting arguments are "default", "secure" or "verbose". The "verbose" setting
# argument is recommended for troubleshooting, though can quickly stretch
# available resources on limited hardware storage.
#
#log_level            "default"
#
# If you have a problem with your MP3s ending abruptly it is recommended that
# you set this argument to "no" to attempt to fix the problem. If this solves
# the problem, it is highly recommended to fix the MP3 files with vbrfix
# (available from <http://www.willwap.co.uk/Programs/vbrfix.php>), at which
# point gapless MP3 playback can be enabled.
#
#gapless_mp3_playback            "yes"
#
# This setting enables MPD to create playlists in a format usable by other
# music players.
#
#save_absolute_paths_in_playlists    "no"
#
# This setting defines a list of tag types that will be extracted during the
# audio file discovery process. Optionally, 'comment' can be added to this
# list.
#
#metadata_to_use    "artist,album,title,track,name,genre,date,composer,performer,disc"
#
###############################################################################


# Symbolic link behavior ######################################################
#
# If this setting is set to "yes", MPD will discover audio files by following
# symbolic links outside of the configured music_directory.
#
#follow_outside_symlinks    "yes"
#
# If this setting is set to "yes", MPD will discover audio files by following
# symbolic links inside of the configured music_directory.
#
#follow_inside_symlinks        "yes"
#
###############################################################################


# Zeroconf / Avahi Service Discovery ##########################################
#
# If this setting is set to "yes", service information will be published with
# Zeroconf / Avahi.
#
#zeroconf_enabled        "yes"
#
# The argument to this setting will be the Zeroconf / Avahi unique name for
# this MPD server on the network.
#
#zeroconf_name            "Music Player"
#
###############################################################################


# Permissions #################################################################
#
# If this setting is set, MPD will require password authorization. The password
# can setting can be specified multiple times for different password profiles.
#
#password                        "password@read,add,control,admin"
#
# This setting specifies the permissions a user has who has not yet logged in.
#
#default_permissions             "read,add,control,admin"
#
###############################################################################


# Input #######################################################################
#

input {
        plugin "curl"
#       proxy "proxy.isp.com:8080"
#       proxy_user "user"
#       proxy_password "password"
}

#
###############################################################################

# Audio Output ################################################################
#
# MPD supports various audio output types, as well as playing through multiple
# audio outputs at the same time, through multiple audio_output settings
# blocks. Setting this block is optional, though the server will only attempt
# autodetection for one sound card.
#
# See <http://mpd.wikia.com/wiki/Configuration#Audio_Outputs> for examples of
# other audio outputs.
#
# An example of an ALSA output:
#
#audio_output {
#    type        "alsa"
#    name        "My ALSA Device"
##    device        "hw:0,0"    # optional
##    format        "44100:16:2"    # optional
##    mixer_device    "default"    # optional
##    mixer_control    "PCM"        # optional
##    mixer_index    "0"        # optional
#}
#
# An example of an OSS output:
#
#audio_output {
#    type        "oss"
#    name        "My OSS Device"
##    device        "/dev/dsp"    # optional
##    format        "44100:16:2"    # optional
##    mixer_device    "/dev/mixer"    # optional
##    mixer_control    "PCM"        # optional
#}
#
# An example of a shout output (for streaming to Icecast):
#
#audio_output {
#    type        "shout"
#    encoding    "ogg"            # optional
#    name        "My Shout Stream"
#    host        "localhost"
#    port        "8000"
#    mount        "/mpd.ogg"
#    password    "hackme"
#    quality        "5.0"
#    bitrate        "128"
#    format        "44100:16:1"
##    protocol    "icecast2"        # optional
##    user        "source"        # optional
##    description    "My Stream Description"    # optional
##    genre        "jazz"            # optional
##    public        "no"            # optional
##    timeout        "2"            # optional
#}
#
# An example of a httpd output (built-in HTTP streaming server):
#
#audio_output {
#    type        "httpd"
#    name        "My HTTP Stream"
#    encoder        "vorbis"        # optional, vorbis or lame
#    port        "8000"
##    quality        "5.0"            # do not define if bitrate is defined
#    bitrate        "128"            # do not define if quality is defined
#    format        "44100:16:1"
#}
#
# An example of a pulseaudio output (streaming to a remote pulseaudio server)
#
#audio_output {
#    type        "pulse"
#    name        "My Pulse Output"
##    server        "remote_server"        # optional
##    sink        "remote_server_sink"    # optional
#}
#
## Example "pipe" output:
#
audio_output {
    type        "fifo"
    name        "AppleExpress"
#    command        "aplay -f cd 2>/dev/null"
## Or if you're want to use AudioCompress
#    command        "AudioCompress -m | aplay -f cd 2>/dev/null"
## Or to send raw PCM stream through PCM:
#    command        "nc example.org 8765"
        path            "/tmp/mpdfifo"
    format        "44100:16:2"
}
#
## An example of a null output (for no audio output):
#
#audio_output {
#    type        "null"
#    name        "My Null Output"
#}
#
# This setting will change all decoded audio to be converted to the specified
# format before being passed to the audio outputs. By default, this setting is
# disabled.
#
#audio_output_format        "44100:16:2"
#
# If MPD has been compiled with libsamplerate support, this setting specifies
# the sample rate converter to use.  Possible values can be found in the
# mpd.conf man page or the libsamplerate documentation. By default, this is
# setting is disabled.
#
#samplerate_converter        "Fastest Sinc Interpolator"
#
###############################################################################


# Volume control mixer ########################################################
#
# These are the global volume control settings. By default, this setting will
# be detected to the available audio output device, with preference going to
# hardware mixing. Hardware and software mixers for individual audio_output
# sections cannot yet be mixed.
#
# An example for controlling an ALSA, OSS or Pulseaudio mixer; If this
# setting is used other sound applications will be affected by the volume
# being controlled by MPD.
#
#mixer_type            "hardware"
#
# An example for controlling all mixers through software. This will control
# all controls, even if the mixer is not supported by the device and will not
# affect any other sound producing applications.
#
#mixer_type            "software"
#
# This example will not allow MPD to touch the mixer at all and will disable
# all volume controls.
#
#mixer_type            "disabled"
#
###############################################################################


# Normalization automatic volume adjustments ##################################
#
# This setting specifies the type of ReplayGain to use. This setting can have
# the argument "album" or "track". See <http://www.replaygain.org> for more
# details. This setting is disabled by default.
#
#replaygain            "album"
#
# This setting sets the pre-amp used for files that have ReplayGain tags. By
# default this setting is disabled.
#
#replaygain_preamp        "0"
#
# This setting enables on-the-fly normalization volume adjustment. This will
# result in the volume of all playing audio to be adjusted so the output has
# equal "loudness". This setting is disabled by default.
#
#volume_normalization        "no"
#
###############################################################################


# MPD Internal Buffering ######################################################
#
# This setting adjusts the size of internal decoded audio buffering. Changing
# this may have undesired effects. Don't change this if you don't know what you
# are doing.
#
#audio_buffer_size        "2048"
#
# This setting controls the percentage of the buffer which is filled before
# beginning to play. Increasing this reduces the chance of audio file skipping,
# at the cost of increased time prior to audio playback.
#
#buffer_before_play        "10%"
#
###############################################################################


# Resource Limitations ########################################################
#
# These settings are various limitations to prevent MPD from using too many
# resources. Generally, these settings should be minimized to prevent security
# risks, depending on the operating resources.
#
#connection_timeout        "60"
#max_connections        "10"
#max_playlist_length        "16384"
#max_command_list_size        "2048"
#max_output_buffer_size        "8192"
#
###############################################################################


# Character Encoding ##########################################################
#
# If file or directory names do not display correctly for your locale then you
# may need to modify this setting. After modification of this setting mpd
# --create-db must be run to change the database.
#
#filesystem_charset        "UTF-8"
#
# This setting controls the encoding that ID3v1 tags should be converted from.
#
#id3v1_encoding            "ISO-8859-1"
#
###############################################################################

Offline

 

#44 2010-09-23 01:42:59

karlrado
Member
Registered: 2009-12-07
Posts: 229

Re: Mpd music daemon with Iphone remote control and airtunes playback

haim wrote:

Hmmmm, mine is writing to the /tmp, I wonder if that is a benefit some how as its constantly writing the music stream there to be picked up by raop_play, so perhaps better to be using memory (if you have enough) for a continuous writing like this rather than disk.

Anyone got a view on that?  I can only speculate.

Yeah, for that particular file (a FIFO file of some sort), /tmp might be OK as long as it does not get too large.  Can you look at it while it is running and see how big it is?  Might also try running "df -h" and see if the rootfs is not getting too full.

haim wrote:

Regarding the tmp permissions, I can't see that I'm doing any chmod on it, but perhaps running as root?

Perhaps. Some daemon processes run as non-root.  But suggesting looking at the /tmp permissions was all I could think of, given the complaint.   Another possibility is that /tmp/mpdfifo got created with the wrong owner/permissions somehow and deleting it may be needed before starting mpd again.


DNS-323 FW 1.07 : 2 1TB WD Caviar Green SATA : fun_plug: utelnet + optware (no ffp)

Offline

 

#45 2010-09-28 19:07:58

bigwebb83
Member
Registered: 2010-09-21
Posts: 49

Re: Mpd music daemon with Iphone remote control and airtunes playback

now i get an error that says failed to load database: database corupted.  I created a file called database in /mnt/HD_a2/ using the vi commnad.  Is there anything that i need to copy into the file contents to get it to work correctly?

Offline

 

#46 2010-09-28 21:45:02

bigwebb83
Member
Registered: 2010-09-21
Posts: 49

Re: Mpd music daemon with Iphone remote control and airtunes playback

when i try to start mpd it says address "any" is already in use.  When I try to point it to the LAN ip address of the nas it says the same thing "192.168.xx.xxx" is laready in use.

Offline

 

#47 2010-09-28 22:34:44

karlrado
Member
Registered: 2009-12-07
Posts: 229

Re: Mpd music daemon with Iphone remote control and airtunes playback

bigwebb83 wrote:

now i get an error that says failed to load database: database corupted.  I created a file called database in /mnt/HD_a2/ using the vi commnad.  Is there anything that i need to copy into the file contents to get it to work correctly?

I don't think that you need to create that file.  I don't think that you even could create that file.  The daemon usually creates it.  Try deleting the file and trying the "create db" command that you mentioned in this thread.  Make sure you delete the file referred to by the db_file setting in the config file.


DNS-323 FW 1.07 : 2 1TB WD Caviar Green SATA : fun_plug: utelnet + optware (no ffp)

Offline

 

#48 2010-09-28 22:39:25

karlrado
Member
Registered: 2009-12-07
Posts: 229

Re: Mpd music daemon with Iphone remote control and airtunes playback

bigwebb83 wrote:

when i try to start mpd it says address "any" is already in use.  When I try to point it to the LAN ip address of the nas it says the same thing "192.168.xx.xxx" is laready in use.

You may have an instance of the daemon running already. 

Check this by

ps -eal | grep mpd

If you get a line of output the daemon is running.  You can kill it with

kill -9 <pid>

where <pid> is the first number in that line of output, the process id.

Then try starting the daemon again.  Consider rebooting if that does not work.


DNS-323 FW 1.07 : 2 1TB WD Caviar Green SATA : fun_plug: utelnet + optware (no ffp)

Offline

 

#49 2010-09-29 23:07:48

bigwebb83
Member
Registered: 2010-09-21
Posts: 49

Re: Mpd music daemon with Iphone remote control and airtunes playback

karlrado wrote:

bigwebb83 wrote:

now i get an error that says failed to load database: database corupted.  I created a file called database in /mnt/HD_a2/ using the vi commnad.  Is there anything that i need to copy into the file contents to get it to work correctly?

I don't think that you need to create that file.  I don't think that you even could create that file.  The daemon usually creates it.  Try deleting the file and trying the "create db" command that you mentioned in this thread.  Make sure you delete the file referred to by the db_file setting in the config file.

I did that and when i try to creat the db using the command it says opt/var/lib/mpd/mpd.pid is not an absolute path
config: error parsing "pid_file" at line 43 aborted

Offline

 

#50 2010-09-29 23:11:40

bigwebb83
Member
Registered: 2010-09-21
Posts: 49

Re: Mpd music daemon with Iphone remote control and airtunes playback

tried the second suggestion too and when i tried to restart the service it gave me the same error saying that the pid file is not an absolute path.

Offline

 

Board footer

Powered by PunBB
© Copyright 2002–2010 PunBB