Network related problems can be difficult to track, here are some most frequently encountered cases:
secretkeyword your tunnel would not be encrypted which is not needed on most LANs.
# Special case to allow 0.0.0.0 source for UPnP to use IGMP to # register clients with media servers and routers. iptables -A INPUT -i eth1 -s 0.0.0.0/32 -d 18.104.22.168/32 -p igmp -j ACCEPT # Any firewall code to limit eth1 input traffic to the appropriate IP subnets # must come AFTER the above special case. # UPnP uses IGMP multicast to find media servers. Accept IGMP broadcast packets iptables -A INPUT -i eth1 -d 22.214.171.124/8 -p igmp -j ACCEPT
This is a permissions problem - the user/group under which MediaTomb is running has no access to that particular directory. Here is some information on Unix/Linux file permissions.
If mediatomb is serving a directory mounted with a remote filesystem, like NFS or samba, then inotify events will only be generated for file changes made on the actual machine running mediatomb. Mediatomb will not receive inotify events for changes made by other NFS clients – a limitation of most remote filesystems and not a shortcoming of mediatomb. You can switch to using timed scans or run a program on the file server that sends remote inotify events to the mediatomb daemon.
If the port was not specified on command line or in the configuration, MediaTomb will choose the first available port, starting from 49152. When you shutdown the server the port may still be claimed by the system for a short amount of time, thus if you restart MediaTomb we will request port 49152, get back the information that it is not yet available, so the UPnP SDK will automatically try the next port until it finds a free one.
You can however specify a fixed port for the server, in this case we will
apply a special reuse option to the socket and we will always listen on the
specified port. This can be done by setting
<port>number</port> the config.xml
When you are still trying to connect to the old port, it may happen that you will get the login page, requesting a password. In reality, this page comes from the browser cache, so all attempted logins will fail. Make sure to connect to the port where the server is actually running, easiest way to do that on a local machine is to use the bookmark feature.
Your ffmpeg library is probably buggy, update it to the latest version. Alternatively, recompile MediaTomb without ffmpeg support.
Note, that running ffmpeg -i filename on a file that causes the issue will reproduce the problem in the terminal. If you can reproduce the crash on the command line using ffmpeg, please consider reporting it to the ffmpeg developers.
sudo invoke-rc.d mediatomb start
Mediatomb should now be running, and will be started automatically at boot.
This SHOULD have worked on ubuntu too, but it doesn't. Since mediatomb gets started before Network Manager is done setting up all the network connections, mediatomb will fail to find a working networking device and exit.
Easiest way to fix it is to just launch mediatomb when you login.
Now mediatomb will start when you log in. Your config file will be in your home dir, ~/.mediatomb/config.xml
This should work on any other distro using gnome too. There are similar methods of starting programs on login in kde/xfce/whatever too.
Another way, which worked for me on ubuntu 9.04 is to change the run level of mediatomb by running these commands:
I'm no linux guru, but I think that makes mediatomb start after the network is configured and mediatomb can bind to an interface. Hope that helps :)
For a “headless” server where you can't log in, try this workaround: edit file
/etc/network/interfaces adding these 2 lines:
iface eth0 inet dhcp
Please note the following if using this method:
/etc/network/interfaces,your ethernet port will become disabled. So make sure you are logged in via the physical console (not ssh or telnet) when editing!
etc/init.d/networking restartto re-enable your ethernet.
Probably the same issue as ubuntu: creating a StartupItem for OS X makes mediatomb start before the network interface is ready for it and then fails with “ERROR: main: upnp error -117”. A workaround for this issue is to add a line “sleep 60” to the StartService routine so the service gets up after a minute when the network interface is probably ready for it.
On some platforms threads will appear as processes, so when you do:
you will see several processes, which may let you think that mediatomb has been started several times, which however is not the case.
If you do not want to generate the virtual containers you can turn the layout feature off, then only the PC-Directory container will be shown. Doing so will also significantly speed up the import of media.
Edit your config.xml and set this:
The PS3 doesn't like the video/x-msvideo mimetype for .avi files anymore after that update.
Add this to the section with the other <map…./> lines in your config:
<map from=“avi” to=“video/divx”/>
save the config, restart mediatomb, and reimport all your avi files.
You can check the mimetype of the files in the webui by navigating to the file in the database tab,and clicking the edit button (the piece of paper).
Add a custom extension to mimetype mapping in config.xml.
For example, if you want that all .avi files get the video/x-divx mimetype, use the following mapping:
<map from=“avi” to=“video/divx”/>
The mapping is only triggered when the data is being imported, the setting will not affect content that is already in the database. If you want to update previously imported files you will have to reimport them: remove from the database and add them again.
A good example is the PS3: It supports many variations of the divx codec, but not the DIV3 version. (maybe others too).
The PS3 will say “the data is damaged” when trying to play such a movie.
I assume here the movie is in avi container.
The solution is transcode this specific codec version based on the fourcc string. In the mimetype-profile-mappings section, put:
<transcode mimetype=“video/divx” using=“video-common”/>
You can take the video-common transcoding profile/script from various places, I won't repeat that here. Then, you must add this to your video-common transcoding profile:
This makes sure you will not transcode any avi, except DIV3 (you can add more if you player doesn't support more)
You can still use this profile for non-avi movies also, the avi-fourcc-list block only accepts avi movies.
If this is the case:
Then you have hit the taglib problem where taglib opens the mp3 in read-write mode instead of read only.
There are two possible fixes:
This problem has been reported to taglib but it's unlikely we will see a fix any time soon.
With PS3 firmware 2.50+ pressing the PS button causes a pause of video playback.
Adding this to the config file helps in getting content to be played on some TVs.
<protocolInfo extend="yes"/><!-- For PS3 support change to "yes" --> <custom-http-headers> <!-- Samsung needs it --> <add header="transferMode.dlna.org: Streaming"/> <add header="contentFeatures.dlna.org: DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000"/> </custom-http-headers>
You probably forgot to change the virtual layout type from builtin to js in config.xml:
Also, make sure the line:
Points to the correct location where your import.js resides.
Get the Cidero control point from http://www.cidero.com (free download), run the MediaController application. Open the debug window: Options→Debug Window…
In the main window click on the MediaTomb icon, you will be presented with the content (i.e. with the content layout which you can also see on your UPnP device). Each time you click on a container in the tree you will see a “MediaTomb: Browse Status: OK” entry in the debug window. Click on this line in the Debug Window and you will see the XML of the browse response below.
First of all, make sure that you make the capture on the machine where your MediaTomb server is running. Download and install wireshark on that machine, start wireshark. Make sure to select the correct network interface for the capture - it must be the interface on which MediaTomb is running. Start the capture, start MediaTomb, then start your UPnP player. Reproduce the problem which you are debugging, then stop the capture and save it in pcap format.