HiFi-shield & HiFi-Shield+

The Hifi-Shield Plus provides both stereo RCA connectors and a 3.5mm stereo jack (all gold-plated) to connect to external amplifiers and other audio equipment. An S/PDIF Optical output is also available. Via TI's high-end PCM5102 DAC chip(known as Burr-Brown), it supports 16, 24, 32 bit audio formats with minimal distortion (-93dB) and ideal dynamics (110dB+), plus amazing sampling rates of 384kHz with odroid-c1. (up to 192KHz with odroid-c2)

  1. Assemble the C2 with the Hifi-Shield, attach a USB keyboard, USB mouse and HDMI monitor, then power up the system.
  2. Update the System: sudo apt-get update && sudo apt-get dist-upgrade
  3. To ensure that the Hifi-Shield kernel modules are loaded on Terminal.
odroid@odroid64:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ODROIDHDMI [ODROID-HDMI], device 0: I2S.27 dit-hifi-0 []
  Subdevices: 0/1
  Subdevice #0: subdevice #0
odroid@odroid64:~$
odroid@odroid64:~$ sudo modprobe snd-soc-pcm5102
odroid@odroid64:~$ sudo modprobe snd-soc-odroid-dac
odroid@odroid64:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ODROIDHDMI [ODROID-HDMI], device 0: I2S.27 dit-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: ODROIDDAC [ODROID-DAC], device 0: I2S.27 pcm5102-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
odroid@odroid64:~$
  1. To test, connect an amplifier to the 3.5mm or RCA lineout jack on the Hifi-Shield, and then run:
  2. Applications → Sound & Video → Sound → Hardware Tab & Output Tab select “ODROID-DAC”
  3. If you want to use the Optical output on Hifi-Shield Plus model, select “ODROID-HDMI”.

If you have to load the driver every time whenever your ODROID-C2 starts, simply you can register the driver into /etc/modules

odroid@odroid64:~$ su
Password:  /* root password is "odroid" */
root@odroid64:/home/odroid# echo "snd-soc-pcm5102" >> /etc/modules
root@odroid64:/home/odroid# echo "snd-soc-odroid-dac" >> /etc/modules
root@odroid64:/home/odroid# exit
exit
odroid@odroid64:~$ 

This adds one line at end of the file, /etc/modules, and load the driver on boot automatically.

Create /etc/asound.conf with the following content:

pcm.!default  {
 type hw card 1
}
ctl.!default {
 type hw card 1
}

Reboot again.

Check, if the sound card is enabled with “aplay -l”:

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

HiFi-shield2

The Hifi-Shield 2 provides stereo RCA connectors to connect to external amplifiers and other audio equipment. An S/PDIF Optical output is also available. Via TI's high-end PCM5242 DAC chip(known as Burr-Brown), it supports 16, 24, 32 bit audio formats with minimal THD+N ratio (0.002%) and ideal dynamics (116dB+), plus amazing sampling rates of 384kHz with odroid-c1. (up to 192KHz with odroid-c2) Volume control via I2C interface is great feature to keep the great audio quality with various audio output volume.

  1. Assemble the C2 with the Hifi-Shield2, attach a USB keyboard, USB mouse and HDMI monitor, then power up the system.
  2. Update the System: sudo apt-get update && sudo apt-get dist-upgrade
  3. To ensure that the Hifi-Shield2 kernel modules are loaded on Terminal.
odroid@odroid64:~$ 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
odroid@odroid64:~$ su
Password:  /* root password is "odroid" */
root@odroid64:/home/odroid# modprobe aml_i2c
root@odroid64:/home/odroid# modprobe snd_soc_pcm512x
root@odroid64:/home/odroid# modprobe snd_soc_pcm512x_i2c
root@odroid64:/home/odroid# echo pcm5242 0x4c > /sys/class/i2c-adapter/i2c-1/new_device
root@odroid64:/home/odroid# modprobe snd-soc-odroid-dac2
root@odroid64:/home/odroid# 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: ODROIDDAC2 [ODROID-DAC2], device 0: I2S pcm512x-hifi-0 []
  Subdevices: 0/1
  Subdevice #0: subdevice #0
root@odroid64:/home/odroid#
  1. To test, connect an amplifier to the RCA out jack on the Hifi-Shield2, and then run:
  2. Applications → Sound & Video → Sound → Hardware Tab & Output Tab select “ODROID-DAC2”
  3. If you want to use the Optical output select “ODROID-HDMI”.

You want to add the Hifi-Shield2 sound_card on ODROID-C2 at boot by editing /etc/rc.local.

odroid@odroid64:~$ sudo nano /etc/rc.local
if [ -f /aafirstboot ]; then /aafirstboot start ; fi
 
echo Loading HiFi-Shield2 module
modprobe aml_i2c
modprobe snd-soc-pcm512x
modprobe snd-soc-pcm512x-i2c
echo pcm5242 0x4c > /sys/class/i2c-adapter/i2c-1/new_device
modprobe snd-soc-odroid-dac2
 
amixer -c 1 sset Analogue 0
amixer -c 1 sset Digital 201
amixer -c 1 sset Deemphasis on
echo Done.
 
exit 0
 
^G Get Help  ^O Write Out ^W Where Is  ^K Cut Text  ^J Justify   ^C Cur Pos
^X Exit      ^R Read File ^\ Replace   ^U Uncut Text^T To Linter ^_ Go To Line 

Add the following at the bottom of the page above exit 0. ^x exit and save the file. Reboot your ODROID-C2.

Create /etc/asound.conf with the following content:

pcm.!default  {
 type hw card 1
}
ctl.!default {
 type hw card 1
}

Reboot again.

Check, if the sound card is enabled with “aplay -l”:

odroid@odroid64:~$ 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: ODROIDDAC2 [ODROID-DAC2], device 0: I2S pcm512x-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
odroid@odroid64:~$ 

If above guide is not comfortable for you, try this alternative easy solution made by Fourdee (DietPi OS image author).
http://forum.odroid.com/viewtopic.php?f=118&t=24415

The volume level control is available only on the RCA line-out output of HiFi-Shield 2.
The SPDIF optical output level is always maximum because it is a simple I2S bypass.