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



    Reading this through, I realized that this may be the quickest (and least expensive) way for me to improve the quality of USB streaming to my DAC. Today I've got a small Win7 computer with my music and other media library on a couple of internal HDs, running JRiver. Because I use it for ripping, and for downloading, its got anti-virus, firewall, and the usual Windoze utilities that run here and there. I've got a USB line out of that goes to a USB-coax SPDIF converter, because the DAC is about 15 feet away from the computer; with the best USB cable that didn't make me feel like a patsy for buying it, the sound was OK, but much improved when I went to a short high quality USB cable, to the USB-Coax, then the long run to the DAC with coax. With my current DAC, that's OK, since its capability on the SPDIF coax input is somewhat better than the USB input, and I don't currently have any DSD.

     

    I was going to build out one of the CAPS devices, put it really close to the DAC so I could USB connect; DAC upgrade in my future, and the ones on my short list all seem to perform great with USB, and for DSD they all require USB input. That meant I'd have to fiddle more with how to control the new server, how to get music from a download and ripping station to the CAPS server, come up with a new automated multiple backup scheme, and maintain two Windows systems while trying to keep the functionality on the CAPS device limited only to playback.

     

    Seems to me that this might be an equal improvement to signal quality, with lower cost and simpler control. Really good quality CAT6 from my main library (more general purpose) computer to the BB. Use JRiver to stream to the BB over the Ethernet connection. Nice short high quality USB from BB to DAC. That would preserve my ability to control playback with JPlay; keep my media library where it is today.

     

    I'm assuming that the Ethernet connection plus BB would act like a "buffer" in concept for streaming that would avoid the problems of computer activity noise over USB, and I know Ethernet wouldn't break a sweat with a 15 foot run. Am I assuming correctly (I'm a software guy, don't know much about electronics hardware) that this would be significantly close in quality to a Main Server/CAPS implementation in terms of quality of USB signal provided to the DAC?

    Share this comment


    Link to comment
    Share on other sites

    Regarding drivers; Any USB Audio Class 2.0 DAC will work with Linux. DACs that require proprietary drivers will probably won't. Also, +1 for using MPD. One of the most optimized high quality music players out there.

     

    Hi, I've been trying to get a Lynx Hilo converter working with a BBB (as well as a RaspPi) but nothing seems to work. I tried RuneAudio for both BBB/RPi, and now i tried this approach.

     

    On Lynx's forum they said this: "We don't directly support Linux with any of our products. The LT-USB (Used in the Hilo and Aurora) use USB Audio 2.0 (not the same as USB 2.0), so a class driver that supports USB Audio 2.0 should work with the product."

    Lynx Hilo / LT-USB - Linux Drivers - Lynx Support Forum

     

    So either I'm doing something wrong (likely) or one of the above statements are wrong.. Have anyone had any experience with this converter on Linux?

    Share this comment


    Link to comment
    Share on other sites

    Hi, I've been trying to get a Lynx Hilo converter working with a BBB (as well as a RaspPi) but nothing seems to work. I tried RuneAudio for both BBB/RPi, and now i tried this approach.

     

    On Lynx's forum they said this: "We don't directly support Linux with any of our products. The LT-USB (Used in the Hilo and Aurora) use USB Audio 2.0 (not the same as USB 2.0), so a class driver that supports USB Audio 2.0 should work with the product."

    Lynx Hilo / LT-USB - Linux Drivers - Lynx Support Forum

     

    So either I'm doing something wrong (likely) or one of the above statements are wrong.. Have anyone had any experience with this converter on Linux?

    The statements are correct ... but not every device actually works with Linux due to bugs/incompatibilities (either in the driver in Linux or the firmware of the device).

    Share this comment


    Link to comment
    Share on other sites

    Chris, I must say it again. You did a great job. A computer lamer (myself) was able to make this work.

    Share this comment


    Link to comment
    Share on other sites

    Chris, I must say it again. You did a great job. A computer lamer (myself) was able to make this work.

    Great to hear / read!

    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?

     

    I use a black metal case from Tigal: https://www.tigal.com/product/3458 for my BeagleBones - I think it looks very attractive and less obtrusive than the bright yellow colour of the case Chris is using.

     

    I don't think a metal case like this is going to help with EMI by itself. I line my cases with Stillpoints ERS cloth, and I stick rectangles of 3M AB5100S EMC absorber onto the ICs and put a layer of the 3M under to board too. I bought two sheets of the Stillpoints, and a sheet of the 3M and it is enough to treat about 8 small ARM computer cases. So it is quite expensive to just do a single case, but pretty cheap if you do several of them like I've done. I also use a cheap Stontronics linear PSU, rather than a switching PSU to try and cut down on noise.

    Share this comment


    Link to comment
    Share on other sites

    Richard Dale

    Which model of the power supply are you using? S2226ST ?

    Share this comment


    Link to comment
    Share on other sites

    Richard Dale

    Which model of the power supply are you using? S2226ST ?

     

    Yes, that's the one:

     

    Ac-Dc Linear Psu, 5v 1a Universal: Amazon.co.uk: Electronics

     

    It has a UK plug, and I don't know if there are equivalent budget linear PSUs with Euro or USA plugs. I don't know how good it is without being able to measure it. I suspect that the AQVOX PSU is better, although more expensive, and it has an IEC socket for a mains lead. I use an AQVOX to power the Bel Canto uLink that I use with one of the BeagleBones, and the logical upgrade for me might be to get another one and solder a 5.5/2.1 mm power jack onto it.

     

    I bought two of these Anker Astro E5 battery phone chargers to try as PSUs:

     

    Anker® 2nd Gen Astro E5 16000mAh 2-Port Portable: Amazon.co.uk: Electronics

     

    I need a couple of USB A to 5.5/2.1 mm power jack cables though before I can give them a go with the BeagleBones.

    Share this comment


    Link to comment
    Share on other sites

    The Beaglebone should come with a USB to mini USB cable that you can power it with from an Ankar 2A or greater USB port into the client USB connector for the Beaglebone... listening right now with that setup

    Share this comment


    Link to comment
    Share on other sites

    Chris, thank you so much for creating this latest image file download. I tried to set this up a few months ago 3 times and failed. I had given up but tried again after your talk at the Minnesota Audio Society last night. I am listening now to the Beaglebone and I think it sounds fantastic. My old server is now a boat anchor!

     

    Mike

    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.

     

    Hi Chris - this is great stuff. I have a kit on the way. Sorry for the noob question: How do you access the mpd.conf file and make the change to HDMI?

     

    Thanks!

    Share this comment


    Link to comment
    Share on other sites

    Hi Chris - this is great stuff. I have a kit on the way. Sorry for the noob question: How do you access the mpd.conf file and make the change to HDMI?

     

    Thanks!

    Do you know how to use SSH?

    Share this comment


    Link to comment
    Share on other sites

    Please excuse for my noob question: Do I have to do the BeagleBone Black OS configuration as guided in this older thread? Thanks.

    Share this comment


    Link to comment
    Share on other sites

    Please excuse for my noob question: Do I have to do the BeagleBone Black OS configuration as guided in this older thread? Thanks.

    No configuration is required.

    Share this comment


    Link to comment
    Share on other sites

    Do you know how to use SSH?

     

    No

    Share this comment


    Link to comment
    Share on other sites

    I've finally got it worked beautifully with Aune T1 DAC (but not with Audioengine D1). Thanks for your prompt reply and a great guide.

     

    1. I have a Geek Out 450 DSD DAC coming. Does anybody know whether or not it'll work with BBB?

    2. The sound comes out from Aune T1 is rather low, I have to turn volume up to 80-100% to have what I've used to listen to at 30-50% coming directly from a Windows 8.1 PC. Is it normal, or should I adjust something else?

    3. Can I skip JRiver on my Windows 8.1/Mac Yosemite and listen directly to my music stored on Synology NAS? If I can, a brief instruction is very kindly appreciated.

     

    Thanks for any help.

    Share this comment


    Link to comment
    Share on other sites

    No

    I will create a new downloadable image that is configured for HDMI output. Give me a little time.

    Share this comment


    Link to comment
    Share on other sites

    I will create a new downloadable image that is configured for HDMI output. Give me a little time.

     

    Thanks!

    Share this comment


    Link to comment
    Share on other sites

    I have problem with NetAudio.

     

    I installed the system from SD card. I can see NetAudio in Jriver and BubbleUPnP. When I try send music to NetAudio - It plays 6 sec of each song and go to next. But there is silence in loudspeakers.

    I can log in to the NetAudio through PUTTY. I can see its WEB site (192.168.0.109).

    But it doesn't work as it should.

    Can You help me ? What am I doing wrong ?

    Share this comment


    Link to comment
    Share on other sites

    I have problem with NetAudio.

     

    I installed the system from SD card. I can see NetAudio in Jriver and BubbleUPnP. When I try send music to NetAudio - It plays 6 sec of each song and go to next. But there is silence in loudspeakers.

    I can log in to the NetAudio through PUTTY. I can see its WEB site (192.168.0.109).

    But it doesn't work as it should.

    Can You help me ? What am I doing wrong ?

    What audio device do you have connected to the unit?

    Share this comment


    Link to comment
    Share on other sites

    I assume there is no way to configure the HDMI port as I2S for use with PS Audio and similar DACs that use HDMI connectors for that purpose? (I'd be shocked but you've worked so many miracles already.)

    Share this comment


    Link to comment
    Share on other sites

    I assume there is no way to configure the HDMI port as I2S for use with PS Audio and similar DACs that use HDMI connectors for that purpose? (I'd be shocked but you've worked so many miracles already.)

    Unfortunately no. However, there is an I2S output on the board. I'm sure someone could make an add-on piece to convert this :~)

    Share this comment


    Link to comment
    Share on other sites

    What audio device do you have connected to the unit?

     

    Everything is OK ! ;-)

    The problem was with computer with Jriver (wrong DNS).

     

    NetAudio plays quieter than my PC (with Daphile) over USB !

    I assume that NetAudio is not bitperfect ...

    Share this comment


    Link to comment
    Share on other sites




    Guest
    This is now closed for further comments




×
×
  • Create New...