Jump to content
  • The Computer Audiophile
    The Computer Audiophile

    Geek Speak: How To Build A UPnP / DLNA / OpenHome Renderer For Less Than $100

    thumb.jpg

    1-Pixel.png

    Warning: This article is technical in nature, but is far from rocket surgery. The step-by-step how-to instructions below make the process extremely easy. That said, this article isn't for everybody.

     

    This is the second article in the CA Geek Speak series (Link to first article ex.png). If you have a USB DAC and want to turn it into a network capable device or if you want to setup multiple zones for playback and control via iPad for less than $100 per zone, then this article is for you. The instructions below provide a step-by-step guide for creating a UPnP / DLNA / OpenHome renderer with Ethernet input and USB output for connection to a USB DAC. In a way, this device can be considered the poor man's Auralic Aries (Review Link ex.png) or SOtM sMS-100 Mini Server (Review Link ex.png). In the previous Geek Speak article readers were forced to log in to the device and make configuration changes via command line. This time I've taken care of all the configuration myself. Readers simply need to download the preconfigured image file and flash it to a Beaglebone Black (Rev. C) following the instructions. That's it.[PRBREAK][/PRBREAK]

     

    This device is a tiny 2.4" x 0.82" x 3.54" Beaglebone Black fanless computer running Linux and a couple pieces of preconfigured software. It connects to a home network via wired Ethernet and connects to an audio system via USB. With this device in an audio system the user can stream music from a NAS or any computer running JRiver Media Center and have full control over music selection and volume for a single or multiple zones with an iPad or similar device. I highly recommend using JRiver and JRemote. Whether using a single device connected to a USB DAC in a main audio system or using several of these devices connected to audio systems throughout a home, JRemote makes control of everything extremely simple. Currently this renderer supports both PCM and DSD via DoP playback. I've tested PCM up through 24 bit / 192 kHz and DSD 64 without any issues. Gapless playback at all sample rates is also supported. I am unsure exactly what USB DACs are supported, but I know that USB DACs capable of functioning without drivers on Mac OS X should work just fine with this renderer.

     

     

     

     

     

     

    1-Pixel.png

     

     

    [ATTACH=CONFIG]17349[/ATTACH][ATTACH=CONFIG]17350[/ATTACH][ATTACH=CONFIG]17348[/ATTACH]

     

     

     

    1-Pixel.png

     

     

     

     

     

     

    Details for Geeks

     

    MP version - Music Player Daemon 0.19.9

    upmpdcli version - upmpdcli-0.9.0

    Linux version - BeagleBoard.org Debian Wheezy Image 2015-03-01 (3.8.13-bone70)

    Username = root

    Password = (no password / blank)

     

     

     

    Requirements

     

    BeagleBone Black (Rev. C required) ex.png ($60)

    BeagleBone Black case ex.png ($10)

    Power Adapter (5 volts, 2 Amps, 10 Watts) ex.png ($9)

    MicroSD Card with Adapter ex.png (~$10)

    SD Card Reader ex.png (~$13) (Optional)

    Win32 Disk Image ex.png ($0) (Windows users)

    Ethernet cable

    NAS Drive or computer for music storage

    Tablet for control such as iOS or Android device

    UPnP Server software such as JRiver Media Center ex.png or MinimServer ex.png

    UPnP Control Point software such as JRemote ex.png (when used with JRMC) or BubbleUPnP ex.png

     

     

     

     

    Step-By-Step Mac OS X

     

     

    - Connect the MicroSD card to the computer

    - Open Disk Utility (Applications > Utilities > Disk Utility), select select all volumes under the MicroSD card, then select Unmount. In my example the volume is named 8GB. (Image Link ex.png)

    - Download the preconfigured image file (USB Output Version ex.png). (HDMI Output Version ex.png)

    - Double-click the downloaded preconfigured image file named CA-NetAudio-1.0.img.zip. This will automatically extract the image file named CA-NetAudio-1.0.img

    - Open the Terminal app (Applications > Utilities > Terminal)

    - Type -> sudo su (without the arrow ->)

    - Enter your password if asked.

    - Type -> diskutil list

    - Take note of the disk number of the MicroSD card connected to your computer. My MicroSD card is listed as /dev/disk1. The MicroSD card should be easily identifiable by its small size. My MicroSD card is listed as 7.9 GB (Image Link ex.png)

    - Type -> sudo dd if=

    - Drag the preconfigured image file named CA-NetAudio-1.0.img on to the Terminal window to automatically fill in the path to the file (Image Link ex.png) You can also type this in manually if desired.

    - After dropping the image file on to the Terminal window the command line should read something like this >> sudo dd if=/Users/chris/Desktop/CA-NetAudio-1.0.img (Image Link ex.png).

    - Make sure there is a single space after the path to the preconfigured image file named CA-NetAudio-1.0.img entered in the previous steps.

    - Type -> of=

    - Then enter the disk number of your MicroSD card. In my case this is /dev/disk1

    - The text should look something like this of=/dev/disk1 (Image Link ex.png).

    - Make sure there is a single space after the path to your MicroSD card entered in the previous steps.

    - Type -> bs=1m

    - The entire line should now look something like this >> dd if=/Users/chris/Desktop/CA-NetAudio-1.0.img of=/dev/disk1 bs=1m

    - Here is an image of my Terminal (Image Link ex.png)

    - Hit Enter on your keyboard and wait for the image to be written to the MicroSD card. This will take several minutes and appear like your computer is stuck. Please wait for the command to finish.

    - Once the image has been written to the MicroSD card the Terminal window will list something like this.

    3781+1 records in

    3781+1 records out

    3965190144 bytes transferred in 2489.137016 secs (1592998 bytes/sec) (Image Link ex.png)

    - If you receive an error message stating "Resource busy" (Image Link ex.png) you likely skipped step 2. Please unmount the volume and try again.

    - Open Disk Utility (Applications > Utilities > Disk Utility), select the MicroSd card, click Eject or Eject Disk via the right-click menu.

    - Place the MicroSD card into the BeagleBone Black's MicroSD card slot.

    - Hold down the small Boot Switch / Button ex.png while connecting the power supply to the board.

    - As soon as one of the User LEDs illuminates, release the Boot Switch / Button.

    - The User LEDs should continue flashing while the MicroSD card image is copied to the on-board eMMC flash memory. The process should take about five minutes.

    - When all four User LEDs are illuminated steady, pull the power supply from the board and remove the MicroSD card. Or, the board will power down automatically if you wait long enough after the copy is complete.

    - Connect an Ethernet cable to the board and your USB DAC to the USB port and re-connect the power supply.

    - The BeagleBone Black will boot up and automatically appear as a UPnP / DLNA / OpenHome renderer in your application of choice such as JRiver Media Center. If using JRiver Media Center the device will appear as a new zone named NetAudio. To send music to the device simply select NetAudio, then select the music you want to play.

    - That's it.

     

     

     

     

     

     

     

     

    Step-By-Step Windows

     

    - Connect the MicroSD card to the computer

    - Install Win32 Disk Image Link ex.png

    - Download the preconfigured image file (USB Output Version ex.png). (HDMI Output Version ex.png)

    - Right-click the downloaded preconfigured image file named CA-NetAudio-1.0.img.zip. Select Extract All (you may have to click Next after this). This will extract the image file named CA-NetAudio-1.0.img into a folder with the same name CA-NetAudio-1.0.img.

    - Open Win32 Disk Imager

    - Make sure the MicroSD card drive letter is selected under Device (Image Link ex.png)

    - Select the small folder to the left of the Device drive letter and browse to the file previously extracted named CA-NetAudio-1.0.img. Don't select the .zip compressed file.

    - Click the Write button and Yes to any popup questions.

    - Eject the MicroSd card when Win32 Disk Imager finishes writing the image.

    - Place the MicroSD card into the BeagleBone Black's MicroSD card slot.

    - Hold down the small Boot Switch / Button ex.png while connecting the power supply to the board.

    - As soon as one of the User LEDs illuminates, release the Boot Switch / Button.

    - The User LEDs should continue flashing while the MicroSD card image is copied to the on-board eMMC flash memory. The process should take about five minutes.

    - When all four User LEDs are illuminated steady, pull the power supply from the board and remove the MicroSD card. Or, the board will power down automatically if you wait long enough after the copy is complete.

    - Connect an Ethernet cable to the board and your USB DAC to the USB port and re-connect the power supply.

    - The BeagleBone Black will boot up and automatically appear as a UPnP / DLNA / OpenHome renderer in your application of choice such as JRiver Media Center. If using JRiver Media Center the device will appear as a new zone named NetAudio (Image Link ex.png). To send music to the device simply select NetAudio, then select the music you want to play. The device will also appear automatically in JRemote as a zone called NetAudio (Image Link ex.png).

    - That's it.

     

     

     

     

     

    Please let me know if you find errors in this guide. I will keep it updated as appropriate and update the preconfigured downloadable image. Tips, tricks, and tweaks are also encouraged!

     

     

     

     

    1-Pixel.png

     

     

     

    1-Pixel.png




    User Feedback

    Recommended Comments



    Thanks Chuck B, I will check it out.

    Share this comment


    Link to comment
    Share on other sites

    Having a bad time trying to this to work. No matter my jriver setting tracks don't play. Are there any special port settings?

     

    Is the computer with JRiver connected to internet ? Try set DNS to 8.8.8.8 and 8.8.4.4.

    Is BBB visible in Windows as multimedia device ?

    Share this comment


    Link to comment
    Share on other sites

    This is 100% but perfect as long as the volume is set to 100.

     

    Hmm.

     

    I tried BubbleUPnP ... the volume was set to 100 but BBB was quieter than USB of PC.

    I still think that the soft is not bit-perfect ...

    Share this comment


    Link to comment
    Share on other sites

    Hmm.

     

    I tried BubbleUPnP ... the volume was set to 100 but BBB was quieter than USB of PC.

    I still think that the soft is not bit-perfect ...

    I tested the output and it is bit perfect. I'm trying to think about what's going on in your case.

    Share this comment


    Link to comment
    Share on other sites

    Hmm.

     

    I tried BubbleUPnP ... the volume was set to 100 but BBB was quieter than USB of PC.

    I still think that the soft is not bit-perfect ...

     

    Check that volume leveling in your DLNA server settings is not checked.

     

    see http://www.computeraudiophile.com/attachments/f3-article-comments/17563-article-geek-speak-how-build-universal-plug-dplay-digital-living-network-alliance-openhome-renderer-less-%24100-image.jpg

    Share this comment


    Link to comment
    Share on other sites

    I'm confused. The title says: "UPnP / DLNA / OpenHome Renderer" but the comments lead me to think that MPD in this instance is not configured as a DLNA Renderer.

     

    I'm definitely going to order the parts and do this; I am dying for a OpenHome renderer for my Head-Fi stack, and this seems to fit the bill.

     

    Thanks for posting the complete set of instructions!

    Share this comment


    Link to comment
    Share on other sites

    I'm confused. The title says: "UPnP / DLNA / OpenHome Renderer" but the comments lead me to think that MPD in this instance is not configured as a DLNA Renderer.

     

    I'm definitely going to order the parts and do this; I am dying for a OpenHome renderer for my Head-Fi stack, and this seems to fit the bill.

     

    Thanks for posting the complete set of instructions!

    Hi krutsch - The renderer uses a combination of MPD and upmpdcli.

    Share this comment


    Link to comment
    Share on other sites

    Is there a way to run Spotify on this ?

    Share this comment


    Link to comment
    Share on other sites

    Hi krutsch - The renderer uses a combination of MPD and upmpdcli.

     

    Ah. I see now. I guess I could've Googled that one. Thanks!

    Share this comment


    Link to comment
    Share on other sites

    I'll add my compliments. Seems like this hardware might be able to be used as an NAA for HQPlayer without a lot of trouble.

     

    Anyone taken a stab at getting this going? I finished my build just a couple of days ago and am enjoying it so far ;) but would love to have the device available as an NAA, as well.

     

    PS - Anyone else having issues with each new stream being garbled? I'm using JRiver MC to play to "Net Audio" but each new song / album starts out garbled (i.e., wrong sample rate, static, etc.) when I hit play. I have to stop that stream, then restart, after which it plays flawlessly until the next stop. Any ideas about this?

    Share this comment


    Link to comment
    Share on other sites

    Anyone taken a stab at getting this going? I finished my build just a couple of days ago and am enjoying it so far ;) but would love to have the device available as an NAA, as well.

     

    PS - Anyone else having issues with each new stream being garbled? I'm using JRiver MC to play to "Net Audio" but each new song / album starts out garbled (i.e., wrong sample rate, static, etc.) when I hit play. I have to stop that stream, then restart, after which it plays flawlessly until the next stop. Any ideas about this?

    I haven't seen that problem yet. Do you have any other UPnP software to try to see if you can duplication the issue? Just trying to figure out if it's an issue with JRiver or the renderer.

     

    What DAC are you using? USB or HDMI?

    Share this comment


    Link to comment
    Share on other sites

    I haven't seen that problem yet. Do you have any other UPnP software to try to see if you can duplication the issue? Just trying to figure out if it's an issue with JRiver or the renderer.

     

    What DAC are you using? USB or HDMI?

     

    I'm using an iFi Micro iDSD attached via USB. As I noted, once the stream is started properly, it plays without issue, including all PCM rates I've tried and DSD.

     

    I'll give it a try with Minimserver + some other iOS based UPnP solution to see if I have the same problem and let you know - appreciate your help!

    Share this comment


    Link to comment
    Share on other sites

    I'm using an iFi Micro iDSD attached via USB. As I noted, once the stream is started properly, it plays without issue, including all PCM rates I've tried and DSD.

     

    I'll give it a try with Minimserver + some other iOS based UPnP solution to see if I have the same problem and let you know - appreciate your help!

     

    UPDATE: I've now tried with several combinations of server / controller (+ different USB cables, etc.) and still having the glitches.

     

    Pattern is not 100% reproducible, but at least once every 2 or 3 plays, the track starts very garbled - the music is recognizable, but mostly static, usually the wrong tempo, etc. It's as if the streamer and the DAC are not fully in agreement :P as to what sample rate / bit depth the incoming signal is. If you stop playback, wait a second, then try again, it usually (90% of the time) works on the second try.

     

    Tomorrow I may try some other DACs (Geek Out 720, iFi Nano iDSD, etc.) to see if the same problem exists aside from my iFi Micro iDSD. Will let you know what I find out - given we're all using the identical image, it's surprising (to me, at least) that no on else is seeing the issue unless it's simply a glitch in my (very simple) playback chain.

    Share this comment


    Link to comment
    Share on other sites

    I see it too, mostly the first time I play something in a new listening session, but rarely at other times too. It usually "heals" itself if I stop and start or skip to the next track. Both with foobar2000 and with JRiver MC 19 and 20. If it matters I'm going to a PS Audio DirectStream DAC.

    Share this comment


    Link to comment
    Share on other sites

    I tested the output and it is bit perfect. I'm trying to think about what's going on in your case.

     

    Volume control sholud be disable to achieve bit-perfect output.

     

    I tried volumio.org. I disabled volume control and now BBB plays as loud as USB of PC.

     

    I am sorry to say but BBB with soft from volumio sounds much better than with soft from CA.

     

    Thanks for idea of cheap streamer but the soft must be improved.

    Share this comment


    Link to comment
    Share on other sites

    Volume control sholud be disable to achieve bit-perfect output.

     

    I tried volumio.org. I disabled volume control and now BBB plays as loud as USB of PC.

     

    I am sorry to say but BBB with soft from volumio sounds much better than with soft from CA.

     

    Thanks for idea of cheap streamer but the soft must be improved.

    Hi Piopio - Volume control does not have to be disabled to achieve bit perfect output. In all cases of all computer audio the volume just needs to be at maximum level.

     

    What DAC are you using?

    Share this comment


    Link to comment
    Share on other sites

    UPDATE: I've now tried with several combinations of server / controller (+ different USB cables, etc.) and still having the glitches.

     

    Pattern is not 100% reproducible, but at least once every 2 or 3 plays, the track starts very garbled - the music is recognizable, but mostly static, usually the wrong tempo, etc. It's as if the streamer and the DAC are not fully in agreement :P as to what sample rate / bit depth the incoming signal is. If you stop playback, wait a second, then try again, it usually (90% of the time) works on the second try.

     

    Tomorrow I may try some other DACs (Geek Out 720, iFi Nano iDSD, etc.) to see if the same problem exists aside from my iFi Micro iDSD. Will let you know what I find out - given we're all using the identical image, it's surprising (to me, at least) that no on else is seeing the issue unless it's simply a glitch in my (very simple) playback chain.

    Thanks for the update.

    Share this comment


    Link to comment
    Share on other sites

    I see it too, mostly the first time I play something in a new listening session, but rarely at other times too. It usually "heals" itself if I stop and start or skip to the next track. Both with foobar2000 and with JRiver MC 19 and 20. If it matters I'm going to a PS Audio DirectStream DAC.

    Thanks for the info.

    Share this comment


    Link to comment
    Share on other sites

    What DAC are you using?

     

    Oppo BD-105D.

     

    CA - try volumio.org ;-) Compare to your soft and try to resolve problem with volume.

    BB should play as loud as USB port without any action.

    Share this comment


    Link to comment
    Share on other sites

    Oppo BD-105D.

     

    CA - try volumio.org ;-) Compare to your soft and try to resolve problem with volume.

    BB should play as loud as USB port without any action.

    Just retested the image and it's still bit perfect. I have no clue what's happening in your system.

    Share this comment


    Link to comment
    Share on other sites

    Mine also passes the PS Audio bit perfect test with my Direct Stream DAC, using JRiver MC 20 Mac and JRemote.

    Share this comment


    Link to comment
    Share on other sites

    Thanks for the detailed and accurate guide.

     

    I managed to build the BBB with no trouble.

     

    My first forays into getting it up and running consisted of trying to use an old Grace m902 headphone amp as the D/A and that did not fly. It didn't seem that the "NetAudio" was picked up when plugged into my switch, but it was when plugged directly into my router.

     

    Now that I have a new Schiit Bitfrost, I have successfully completed the audio chain.

     

    I have two questions:

     

    [1] In what ways should JRiver be configured to ensure highest quality?

     

    (2) Does anyone have an example of a better power supply for the BBB? I saw one mentioned from the UK, and the battery pack for the top of the BBB. Any others?

    Share this comment


    Link to comment
    Share on other sites

    Has anyone compared this setup to an auralic aries. I have an aries on loan at present feeding a Hugo DAC, but am very intrigued by this. Any comments would be helpful. Cheers

    Share this comment


    Link to comment
    Share on other sites

    Hi Chris, great article!

     

    A friend of mine who has played with small Linux boxes as renderers (Cubox, PogoPlug E02, etc.) said Archlinux has better SQ than Debian. He has tried Debian Squeeze and Archlinux and believes the latter can render much better tonal balance and better vocal mid-range.

     

    Would you have time to crank out an Archlinux edition of this BBB renderer, to compare with Debian Wheezy?

     

    Cheers.

    Share this comment


    Link to comment
    Share on other sites

    I'm using an iFi Micro iDSD attached via USB. As I noted, once the stream is started properly, it plays without issue, including all PCM rates I've tried and DSD.

     

    I'll give it a try with Minimserver + some other iOS based UPnP solution to see if I have the same problem and let you know - appreciate your help!

     

    Jhawlker - I just wanted to let you know I have an iFi Micro iDSD as well and I ran into the same issues. With my X-Sabre I don't have these issues at all, so I definitely think it's related to the iFi Micro.

     

    Chris - thanks so much for posting this tutorial. I was really looking for a bedside solution for streaming that didn't require my TV or Laptop to be on. I was using my Fiio X5 but that didn't give me access to my full library and the Coaxial connection on the X-Sabre doesn't seem as good as the USB connection. This guide was great and worked right from my first try. This post sent me on to get a Raspberry PI 2 and another BBB to play with some other options such as Volumio and Rune. I tried burning those images over and over and couldn't get them to boot using a Sandisk 32 GB Class 10 card. After about a week of frustration, I finally ordered a couple of Kingston 8GB cards and now I am trying out Volumio. In case it's helpful to others those 32GB cards seem to be an issue but the 8GB cards are taking the image on my first try. Looking forward to experimenting with these others options. Your solution is awesome and I'm really pleased with the sound quality. Thanks for the education! This tutorial is really fantastic!

     

    My new chain - Synology NAS to BBB as outlined in the article - USB to Matrix XSabre DAC - Violectric HPA V281 - HD800 (with Norne Balanced Cable) or PM2 (with Oppo balanced cable) (others headphones on occasion).

    Share this comment


    Link to comment
    Share on other sites




    Guest
    This is now closed for further comments




×
×
  • Create New...