Simplest way to get ODROID-C2 working as Roon Bridge whilst waiting for a ARMv8 build of Roon Bridge

Courtesy of a friend that went to the trouble of documenting his steps


sudo dd bs=4M if=ODROBIAN-Jessie-2.0-vanilla-s905~hybrid.img of=/dev/sdX status=progress && sync


sudo apt-get update && sudo apt-get dist-upgrade

INSTALL DEPENDENCIES (telnet’s optional, can use ssh)

sudo apt-get install telnet telnetd libasound2 curl lbzip2 alsa-utils


curl -O chmod +x


sudo nano

change line that reads MACHINE_ARCH=`uname -m` to MACHINE_ARCH=armv7hf


sudo ./


su echo "snd-soc-pcm5102" >> /etc/modules echo "snd-soc-odroid-dac" >> /etc/modules exit


sudo apt-get install wpasupplicant firmware-realtek nano /etc/network/interfaces
and add :

auto wlan0 iface wlan0 inet dhcp wpa-ssid YOUR-SSID-HERE wpa-psk YOUR-PASSWORD-HERE


sync su shutdown -P now

this works? how?

@danny It does, did it myself yesterday. Without the wifi piece. Works so well in fact I’m switching all my C2’s from Arch to this till there’s an ARMv8 build of Roon Bridge.

There a particular part you’re concerned with?

Well… You abandoning Arch is somewhat concerning… :wink:

I’m a pragmatist, Arch is my distro of choice, but last time I tried there was a bug in the arch linux for arm implementation of systemd-nspawn and archlinuxarm having no 32 bit libs I had a cobbled together workaround which meant manually launching a chroot session on the ODROID following boot. Pretty irritating if all you want to do is power up and press play.

When ARMv8 Roon Bridge sees release I’ll be straight back to Arch.

@danny, Odroid-C2 is fine device. As discussed on other threads there are several ways to run Roon Endpoint on it. One is that @evand described - “Odrbian” is special build of Debian and/or Ubuntu that runs 64bit kernel but has all the 32bit libs and is ready to run 32bit apps - like Roon Endpoint. Odrobian is not really maintained for over 6 months now and that is a minus.

Other simple solution one is to go to and go to menu and e.g. build for Odroid-C2 Ubuntu 16.04 (or download ready made image with Debian Jessie). I like DIY approach but one does not need to tinker a lot at all. 32bit libs seem recently to be installed by default. If not you just install them with one liner apt-get and modify Roon Endpoint install (one liner as above).

I have gone step fwd in ‘tinkering’ so have added few lines into customization of Armbian so when it builds the image - Roon Endpoint is automatically installed.

Best part is - last week i got also NanoPi Neo board (less then 10$) … it is 32bit but coolest part is i went through armbian build … got image that again has Roon Endpoint up and running by default. just plug it in and it works. Roon Endpoint for 10-15$ (including case and cpu cooler) !!!
Seems to be working great … if i get any other board that armbian supports (and list is already over a dozen) … i just build image for it … how cool is that !!!
BTW, as Roon Endpoint has only 2 tasks - talk to USB Dac and get stuff from Ethernet - all the other processing happens on the Roon server - it really needs no CPU on the endpoint. OdroidC2 is maybe 2-3 times faster then NanoPi Neo, but both are more then capable running Roon Endpoint (NanoPI Neo CPU utilisation never goes above 10-15% when running Endpoint) !!!

1 Like

I have finally got Roon bridge running on my Odroid C2 using the previously outlined procedures. However, what I want is the audio output to go to the on-board I2S connector. I have connected an I2S “sender” board to the appropriate I2S header pins to communicate with the “receiver” board in my DAC. Right now Roon reports ALSA audio going thru the hdmi port only and I can not find where to select the I2S as audio output. Something tells me that there is some sort of driver or ALSA setting to let Roon know the I2S header is active. Any help would be greatly appreciated. Right now I have built a low-cost brick.


hi Steve,
i have no personal experience at all with I2S. Just using USB (alsa sound)…
however, i think you are right - kernel does not have or does not load automatically I2S driver to talk to your DAC.
I dont know what u used before . - Raspberry PI ? if you do command ‘lsmod’ u can see which modules are loaded … then i suggest you google it with odroid-c2 … if that module exist in Odroid-C2 kernel - then it should be easy with ‘modprobe modulename’ and then alsa command e.g. ‘aplay -l’ should show audio interface.
if that module is NOT part of the kernel but can be built - might be easy or hard, i dont know before you figure out which it is.
the main thing why i did not like odroid-c2 is ‘old’ kernel … v3.14 so whatever default drivers are in kernel today many of them are not in 2 year old kernel. on the other side Odroid community did backport many/most of the things … so i think - lets keep it simple - which which driver you need. google it.
glad to help if you just let me know which driver you seem to be missing. if it is simply just NOT built/enabled with armbian kernel build, it might be very easy to fix.

take care

Found a solution. I installed Volumio image which luckily was compatible with ARMv7 and Roon bridge. It had the appropriate drivers hooked in so Roon was able to identify the I2S input. Got lucky on this one, because I had no idea where to go for modified drivers.

cool - so you installed Volumio distribution (whatever they do) and burnt that and it did come with right driver … and then u installed Roon Endpoint,… that is cool and smart :slight_smile:
however, i am curious now :wink: do want to see if volumio guys have done lot of extra work OR we just need to find a way how to enable driver in Armbian build. can you share output of ‘lsmod’ and ‘aplay -l’ commands ?

                  /\_ \                        __           
     __  __    ___\//\ \    __  __    ___ ___ /\_\    ___   
    /\ \/\ \  / __`\\ \ \  /\ \/\ \ /' __` __`\/\ \  / __`\ 
    \ \ \_/ |/\ \L\ \\_\ \_\ \ \_\ \/\ \/\ \/\ \ \ \/\ \L\ \
     \ \___/ \ \____//\____\\ \____/\ \_\ \_\ \_\ \_\ \____/
      \/__/   \/___/ \/____/ \/___/  \/_/\/_/\/_/\/_/\/___/ 
         Free Audiophile Linux Music Player - Version 2.0

      C 2015 Michelangelo Guarise - Volumio Team -

Volumio Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
volumio@volumio:~$ lsmod
Module Size Used by
ir_lirc_codec 4894 0
lirc_dev 10647 1 ir_lirc_codec
ir_rc6_decoder 1973 0
ir_sony_decoder 1634 0
ir_sanyo_decoder 1596 0
ir_jvc_decoder 1648 0
ir_mce_kbd_decoder 3309 0
ir_rc5_decoder 1597 0
ir_nec_decoder 1768 0
meson_ir 3380 0
snd_soc_odroid_dac 4613 0
snd_soc_pcm5102 3874 1
sx865x 5179 0
nfsd 295288 2
nfs_acl 2904 1 nfsd
cfg80211 472666 0
xt_REDIRECT 2103 1
iptable_nat 3008 1
nf_conntrack_ipv4 16979 1
nf_defrag_ipv4 1675 1 nf_conntrack_ipv4
nf_nat_ipv4 4083 1 iptable_nat
nf_nat 15444 3 nf_nat_ipv4,xt_REDIRECT,iptable_nat
nf_conntrack 87747 4 nf_nat,nf_nat_ipv4,iptable_nat,nf_conntrack_ipv4
ip_tables 16875 1 iptable_nat
spidev 6475 0
spi_gpio 6778 0
spi_bitbang 4063 1 spi_gpio
w1_gpio 3761 0
wire 25575 1 w1_gpio
gxbb_wdt 3419 0
fuse 88726 1
ipv6 375676 60
autofs4 28145 2
squashfs 32087 1
overlay 32967 1

volumio@volumio:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ODROIDHDMI [ODROID-HDMI], device 0: I2S dit-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: ODROIDDAC [ODROID-DAC], device 0: I2S pcm5102-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0

hi - belated Merry Christmas !!!
not sure if you want to waste time if you are happy with Volumio.
I think 2 modules that are key are :slight_smile:


If you still have Armbian Odroid-C2 build, fire up the image and try
sudo modprobe snd_soc_odroid_dac
sudo modprobe snd_soc_pcm5102

if you get msg that these are not found in the directory then they are missing from the build.if you dont get the msg and driver does not load (e.g. lsmod does not show them) then it is built for the kernel but for some reason not working. If latter i’d give up if former it can be fixed. Just did a quick look in armbian odroid-c2 kernel (just searched through the source tree) and those drivers are present there … so worse case it might need you to change kernel config during build process (same window opens up as usual and need to select right option) … anyhow, if you want to tinker, give the above suggestion a go, and we see :slight_smile: ?

thank you !

hi again,
in addition i see that evand (though for ‘Odrobian’ distro) provide more or less same instructions, might be even easier:

just see above in a thread - if you do it and modules do exist and after reboot you do see with aplay -l - you should be good to go.

maybe the order (pcm5102 and odroid-dac) is relevant - suggest go with evand order as he played with it !


Thanks for looking into the drivers. Next time I have the urge to play with it I will try a clean install. Right now the sound is great and I am very happy with the C2. I assume that the installation of Volumio itself really does not matter, because Roon shows it is using RAAT when you look at the audio stream.

hi Steven,
as ive been playing with NanoPi Neo for last month, just only now plugged back my odroidc2 … did try to load those 2 drivers with modprobe, got no errormsgs and lsmod shows them as ‘there’. aplay -l output looks like this (2nd one is my USB DAC )

zh@odroidc2:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ODROIDHDMI [ODROID-HDMI], device 0: I2S dit-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: B20 [Benchmark DAC2 USB Audio 2.0], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 2: ODROIDDAC [ODROID-DAC], device 0: I2S pcm5102-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0

So I guess all would be good on your setup as well.
How do you connect your I2S DAC ? Have to tap into GPIO pins on Odroid or … ?
Anyhow, maybe there is some additional configuration that Volumio does that is needed for it … I am just not sure why/how I2S should sound lot better then USB connection. In USB case and Asynchronous connection - player sends data when player asks for it and clock/jitter is 100% controlled by DAC … i understand I2S in the end DAC either does all the work (just like in USB case) to use it’s own clock and though I2S million times better then coax/SPDIF does not offer huge advantages vs USB. Just to be on a safe side I do have USB galvanic separation/filter (Intona) so whatever crap player spits out on USB doesn’t get into a DAC.

Anyhow, enjoy the music !!!

Hi Gaha:

Had some time so I reloaded Armbian Jessie Server for C2 and installed the drivers… works great! I used the method evand posted so the drivers load on boot. As far as connecting I2S, the C2 has an 8-pin header on the board for this purpose. From there I go to a “send board” designed to use LVDS (just google for details) to communicate with the “receive board” in my DAC (which is galvanically isolated) via an HDMI cable. This is all DIY stuff, but is the same method that is used by PS Audio on their DAC. I get amazing sound without using USB and all of the reclocking/regen stuff that most have found to be needed.


Hi Steve,
Are you able to play files with a bitrate over 192Khz like DSD128 file or DSD256 ?

Is it possible to know which LVDS send board you are talking about ?
I’m new on this forum, hope this last question is aligned with the community guidelines, I don’t know…


RoonBridge for ARMv8 is available:


My DAC does not support DSD, 192 kHz PCM is the limit. Up sampling in Roon 1.3 to 192 does sound nice. As far as the I2S implementation goes, my DAC is really DIY and is known as the RAKK DAC. I built it using a custom board that handles LVDS receive function and it connects to a ‘send’ board connected to the I2S header on the Odroid. I am not an electrical engineer and really can’t speak much to the technical aspects. You can Message me directly if you would like to discuss this further.


My Odroid is up an running using v7 with 1.3. Any reason to switch to v8? If so, what’s the process for installation?