Jun 3, 2007

UPnP AV streaming in Ubuntu with a D-Link DNS-323

I'm writing this little tutorial because I couldn't find the info nicely laid out anywhere else on the web.

So, about month ago I bought myself a D-Link DNS-323 NAS device. So far, it's been pretty awesome (after I upgraded the firmware, at least), allowing for networked RAID-1, a built-in iTunes server, print server and streaming UPnP AV support, all for a pretty decent price. The first three on those list are a snap to set up, the fourth is a little more cryptic. UPnP, as far as I can tell, is usually meant to be used with a media server (something like a MythTV setup), rather than just for desktop users. I found very little info about how to connect to and play content from a UPnP AV server using a desktop software client. I did find, however, mention of djmount, a utility that allows you to mount a UPnP AV server's content as a filesystem. Sounds great! However, getting it set up and functioning on my Ubuntu box was still anything but straight-forward. Here's how I did it in Feisty.

First off, djmount's docs mention it needs FUSE, so I installed libfuse2, and to build djmount from source, I needed libfuse-dev (just installing this package with aptitude automatically installs libfuse2): sudo aptitudue install libfuse-dev

Next, download djmount, untar and cd to the resulting directory. then build and install: wget http://downloads.sourceforge.net/djmount/djmount-0.71.tar.gz?modtime=1156717401&big_mirror=0 tar -zxvf djmount-0.71.tar.gz cd djmount-0.71 ./configure make sudo make install

Next, make a mount point in /media. I used "upnp", but you could name it anything. cd /media sudo mkdir upnp sudo chmod 777 upnp The chmod 777 was recommended in a forum post I found somewhere about djmount, I don't know if it makes a huge difference or not, but it's what's I did.

Now, load the fuse FUSE kernel module and then mount the filesystem: sudo modprobe fuse sudo djmount -o allow_other /media/upnp The allow_other option is what tripped me up at first. I was trying it without that and all I was getting was a /media/upnp directory that was appearing as a unknown filetype in Nautilus. I did a djmount --help and guessed that the -o allow_others option was what I needed. Lucky me, it worked.

Now, assuming the UPnP AV server on your DNS-323 is set up and working properly, you should now be able to access the files on it just like they were on your local disk. I myself seem to have no trouble watching videos over the network in VLC. If you want to unmount it, just do the following: fusermount -u /media/upnp

Hopefully I didn't leave anything out.


Comments

  1. Thanks for the useful info! I even added it to my /etc/fstab. To do that append the following line: djmount /media/UPnP fuse ro,allow_other 0 0

    Bartbes on
  2. fantastic, I've spent the week playing with my media server (twonky on nslu2) and this has now sorted it out on my ubuntu system

    david on
  3. Awesome! I must I got stuck on the first step, couldn't find the right fuse-related package to install (libfuse-dev). Working with my Twonky server on unslung NSLU2.

    Marcus on
  4. HELP!!!! this isnt working for me :( I am new to ubuntu so please bear with me....

    I am getting stuck when i type "make" into the terminal

    it says "make: *** No targets specified and no makefile found. Stop."

    what does that mean?! PLEASE HELP

    Anthony on
  5. Are you in the right directory? Did the ./configure command run successfully? If it did run, make sure you read the output to see if it encountered any errors.

    Tom on
  6. I get this error:

    "checking for C compiler default output file name... configure: error: C compiler cannot create executables See `config.log' for more details. anthony@ubuntu-laptop:~/djmount-0.71$ config.log"

    what should I do?

    Anthony on
  7. Try installing build-essential (sudo aptitude install build-essential) and try again.

    Tom on
  8. Can't seem to quite get it to work. Tried in a clean install env of Ubuntu Hardy (8.04)

    tried the above, installed the fuse stuff and re-booted fuse module loaded ok

    root@burgundy:~/Downloads/djmount/djmount-0.71# sudo lsmod | egrep fuse fuse 56112 1

    downloaded djmount 0.7.1 configure make all sudo make install

    completed and installed no errors

    exec djmount -o allow_other /media/upnp [I] Mount options = allow_other [I] Charset : successfully initialised charset='UTF-8'

    cd /media/upnp

    I have 2 media servers, an Azureus bittorent and a Mediatomb

    ls -al total 7 dr-xr-xr-x 5 root root 512 2000-01-01 03:00 . drwxr-xr-x 5 root root 4096 2008-05-25 21:55 .. dr-xr-xr-x 2 root root 512 2000-01-01 03:00 Azureus dr-xr-xr-x 5 root root 512 2000-01-01 03:00 .debug -r--r--r-- 1 root root 18 2000-01-01 03:00 devices dr-xr-xr-x 2 root root 512 2000-01-01 03:00 MediaTomb

    cd Mediatomb ls -al root@burgundy:/media/upnp/MediaTomb# ls -al total 2 dr-xr-xr-x 2 root root 512 2000-01-01 03:00 . dr-xr-xr-x 5 root root 512 2000-01-01 03:00 .. lr--r--r-- 1 root root 26 2000-01-01 03:00 .status -> ../.debug/MediaTomb/status

    if I try the above on a suse 10.1 box with kernel

    Linux version 2.6.16.13-4-default (geeko@buildhost) (gcc version 4.1.0 (SUSE Linux)) #1 Wed May 3 04:53:23 UTC 2006

    djmount 0.71, compile same way fuse compiled from source and installed

    cd /mnt/av/Mediatomb ls .metadata .status Audio PC Directory Playlists Video marseille:/mnt/av/MediaTomb # ls -al total 4 dr-xr-xr-x 7 root root 512 Jan 1 2000 . dr-xr-xr-x 5 root root 512 Jan 1 2000 .. dr-xr-xr-x 2 root root 512 Jan 1 2000 .metadata lr--r--r-- 1 root root 26 Jan 1 2000 .status -> ../.debug/MediaTomb/status dr-xr-xr-x 9 root root 512 Jan 1 2000 Audio dr-xr-xr-x 4 root root 512 Jan 1 2000 PC Directory dr-xr-xr-x 4 root root 512 Jan 1 2000 Playlists dr-xr-xr-x 3 root root 512 Jan 1 2000 Video

    Any ideas what I am doing wrong ?

    Simon

    Simon on
  9. Hmm, not sure, Simon. I sort of started using my Macbook more than my Ubuntu box these days, so I haven't tried to do this on Hardy yet. I'm sure somethings have changed between versions. The trackback link above has some info that might be more useful for you, tho.

    Tom on
  10. Next silly question from a Linux n00b: how do I access the music from programs like VLC? Presumably its via the File > Open Network Stream menu option but where I do go from there?

    Kevin Turner on
  11. Well, VLC only supports UPNP-AV if you compile it with the right flags. there are other programs that can see the itunes server on the dns-323 just fine, though, like banshee or exaile. that is what i use for music.

    Tom on
  12. Great instructions! All installations seemed to work fine. However, Kongueror in KDE takes 5-10 minutes to show a directory (Music, Photo, Video) and then takes even longer to drill down. I figure it took me about 30 minutes to drive down to a .avi file. Then when I clicked on the .avi file the kaffeine media player took a long time to load and play. If I do the same thing via the samba share (smb) the response times are almost instantaneous. What gives? Any ideas? I'm using kubuntu (unbuntu 7.10 and DSM-G600 Rev.b 1.02).

    Thanks

    Gibroni (Rich) on
  13. [...] Posts Downloads: 3 Uploads: 0 I found this tutorial on a google search. Straight, No Chaser

    Can't connect to NAS on
  14. Why linux doesn't have a simple UPNP player, like WMP?

    leao on