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



    There is a miniUSB port on the BBB but this is a client port. You can attach the BBB to your computer and see what is on the internal flash drive like a USB key. This can not be used like a HOST port to attach a USB device.

     

    Use HomePlug or a wifi access point if you want the BBB in a remote location.

     

    Thanks for the additional explanation. I appreciate it.

    Share this comment


    Link to comment
    Share on other sites

    Chris,

     

    Thanks for this great article.

     

    Reading through the first Geek Speak article, it is set up (first and foremost) to interface with a USB DAC, as expected.

     

    I see there is a microHDMI port on the BB- is there some reconfiguration that could be possible to enable audio routing through the HDMI port for those of us interested in connecting to an A/V receiver? It looks like you would need to reconfigure the ALSA output, but I would not be sure what the changes would be or if the HDMI port is even an option.

     

    Thanks again!

    It should be easy to change the output device in the mpd.conf file but I haven't tested streaming audio through this port.

    Share this comment


    Link to comment
    Share on other sites

    One question - around naming of the device. Where/how can I customize the name if I want to call it something other than NetAudio?

     

    I use Voyage-Mubox with my BeagleBones, and that OS uses the MPD zeroconf option to broadcast the settings to MPD clients. I haven't had time to look at Chris's image yet to see if it has been setup with zeroconf. I have added the names of my systems in /etc/mpd.conf like this:

     

    zeroconf_enabled "yes"

    zeroconf_name "Voyage JBL LSR305"

    Share this comment


    Link to comment
    Share on other sites

    I use Voyage-Mubox with my BeagleBones, and that OS uses the MPD zeroconf option to broadcast the settings to MPD clients. I haven't had time to look at Chris's image yet to see if it has been setup with zeroconf. I have added the names of my systems in /etc/mpd.conf like this:

     

    zeroconf_enabled "yes"

    zeroconf_name "Voyage JBL LSR305"

    Changing the name of this device requires a change to the upmpdcli config file.

    Share this comment


    Link to comment
    Share on other sites

    Any idea how to get Spotify streamed to multiple rooms simultaneously via a Mac setup? Thanks.

     

    I would suggest to look into Airfoil

    Share this comment


    Link to comment
    Share on other sites

    Congratulations! I believe this is significant, and it also looks like a lot of fun! Thanks!

    -Paul

     

    P.S. Rocket surgery?! Ouch!!

    Share this comment


    Link to comment
    Share on other sites

    I don't think it can be done with the current configuration. I would look into Sonos.

     

    Bummer.

    Share this comment


    Link to comment
    Share on other sites

    Any thoughts on how to stream Spotify to multiple rooms simultaneously using a Mac setup? Thanks.

    If you want open source solution for Multi-room (meaning synchronised playback) the Squeezebox system might be a better option.

     

    That would be LMS running on a NAS or computer and then Squeezelite on Beaglebone or similar.

    Share this comment


    Link to comment
    Share on other sites

    If you want open source solution for Multi-room (meaning synchronised playback) the Squeezebox system might be a better option.

     

    That would be LMS running on a NAS or computer and then Squeezelite on Beaglebone or similar.

     

    Now here's a helpful post! How refreshing! Cheers!

    Share this comment


    Link to comment
    Share on other sites

    It should be easy to change the output device in the mpd.conf file but I haven't tested streaming audio through this port.

    I'd really like to try this option. Can someone provide basic instructions? I have very limited Linux experience, but was adept with DOS commands on early IBM PC's back in the day, so I know how to work with a command line interface.

    Share this comment


    Link to comment
    Share on other sites

    This is an interesting article and gives me a great path to try. This may be obvious to most, but I don't understand how it will play audio files from a NAS. I take it JRiver would need to be loaded onto this device. How is that done?

    I currently use JRiver from my MacBook connected via USB to my DAC and control with JRemote from my IPad. This is awkward as I am always needing to reconnect, etc when I want to listen to audio, with the beagle one I expect I could leave it connected and powered on.

    Share this comment


    Link to comment
    Share on other sites

    Sorry if I missed this, but is there any indication that this could support DSD128?

    Share this comment


    Link to comment
    Share on other sites

    The article is written describing the Beaglebone and a device to stream to a USB DAC. If the application does not involve a USB DAC can the HDMI output be used to connect to the RCA input on a preamp? Has anyone tried this and how is the sound quality?

     

    Thanks,

     

    T

    Share this comment


    Link to comment
    Share on other sites

    Any thoughts on how to stream Spotify to multiple rooms simultaneously using a Mac setup? Thanks.

     

    From a Mac? Use Soundflower and direct the output to Airplay. Then have Airplay play to as many devices as you wish. This is kind of clumsy compared to something like Sonos, but it works just great, with perfect synchronization.

     

    -Paul

    Share this comment


    Link to comment
    Share on other sites

    The article is written describing the Beaglebone and a device to stream to a USB DAC. If the application does not involve a USB DAC can the HDMI output be used to connect to the RCA input on a preamp? Has anyone tried this and how is the sound quality?

     

    Thanks,

     

    T

    hdmi is digital and rca is typically analog. Thus it wouldn't work without a dac.

    Share this comment


    Link to comment
    Share on other sites

    Not currently because none of the UPnP servers support sending TIDAL audio to a renderer. If JRiver could integrate TIDAL then it would be game on!

     

    Hi Chris,

     

    Check out the Tidal thread as Bubble UPnP server had an update yesterday that allows Tidal streaming using the Linn Kazoo controller.

     

    Listening to Tidal right now using MinimServer and Bubble UPnP Server running on a Synology NAS with Kazoo as a controller.

     

    Cheers

    Share this comment


    Link to comment
    Share on other sites

    Hi Chris,

     

    Check out the Tidal thread as Bubble UPnP server had an update yesterday that allows Tidal streaming using the Linn Kazoo controller.

     

    Listening to Tidal right now using MinimServer and Bubble UPnP Server running on a Synology NAS with Kazoo as a controller.

     

    Cheers

    Thanks tranz!

    Share this comment


    Link to comment
    Share on other sites

    Chris, As I posted over there (Tidal thread) the Kazoo Tidal interface is for playback of Tidal only, no saving favorites, no access to favorites saved elsewhere. BubbleUPnP (Android) will, however (as posted several weeks ago in the same thread).

    Share this comment


    Link to comment
    Share on other sites

    Chris, As I posted over there (Tidal thread) the Kazoo Tidal interface is for playback of Tidal only, no saving favorites, no access to favorites saved elsewhere. BubbleUPnP (Android) will, however (as posted several weeks ago in the same thread).

    Thanks Ted.

    Share this comment


    Link to comment
    Share on other sites

    Hi Chris,

     

    Check out the Tidal thread as Bubble UPnP server had an update yesterday that allows Tidal streaming using the Linn Kazoo controller.

     

    Listening to Tidal right now using MinimServer and Bubble UPnP Server running on a Synology NAS with Kazoo as a controller.

     

    Cheers

     

    I bought a Beagleboard starter kit (including case and power adaptor) for $60 from Amazon and put this together last night. Today I added a HomePlug and am listening to Ella on my PS Audio Sprout from my Synology NAS using minimserver and Songbook as a CP on my iPhone.

     

    The sound is an improvement over my 2009 Mac Mini using JRiver.

     

    The UPnP control point on iPhone is the weakest link in this system. Kazoo and others are iPad only. Synology's DS Audio also works, but I can't verify the resolution being streamed as this seems to bypass minimserver and even Synology's own Media Server by logging directly into Audio Station and I don't know its inner workings enough to verify it isn't downsampling. Documentation I've seen says 24-96 over USB, but not sure about over wifi/ethernet.

     

    At any rate, a fun project.

    Share this comment


    Link to comment
    Share on other sites

    Are you using JRiver for the media server?

     

    Yes. Is there a way to change it via JRiver?

    Share this comment


    Link to comment
    Share on other sites

    All worked like a charm doing the windows instructions for install...bought parts at Microcenter (caution here, parts are in their hobby section and in the Fairfax Va store weren't all in one place). Sounds good, gets rid of "the nasties" I always hear with asynch USB DAC to PC.

     

    Not sure it exists, but this would be even more awesome if you didn't have to be physically Ethernet tethered, allowed you to create a headphone "brick" of 5v Ankar battery/Beaglestreamer/wifi dongle/ifi USB Dac. Right now i'm getting wired Ethernet off a wall plugged TPlink range extender which will keep me tethered

    Share this comment


    Link to comment
    Share on other sites

    The orange case to which Chris links is metal. Others offer plastic cases. Does the metal case offer any advantages (e.g., EMI shielding?) or does it not matter?

    Share this comment


    Link to comment
    Share on other sites

    ...

     

    The UPnP control point on iPhone is the weakest link in this system. Kazoo and others are iPad only. Synology's DS Audio also works, but I can't verify the resolution being streamed as this seems to bypass minimserver and even Synology's own Media Server by logging directly into Audio Station and I don't know its inner workings enough to verify it isn't downsampling.

     

    DS transposes but is easy to stream to mobile devices using Synology. Instead try Audionett IMM or Kinsky on the phone. Sadly no Tidal with those yet.

    Share this comment


    Link to comment
    Share on other sites




    Guest
    This is now closed for further comments




×
×
  • Create New...