5 Replies Latest reply on Mar 28, 2016 6:21 AM by procaster

    Cirrus Logic Audio Card on Raspberry Pi 3 B


      UPDATE: If you are new to the Cirrus Logic Audio Card, you should know the installation instructions in the manual as well as the Cirrus Logic wiki on Github are completely outdated and useless. Instead, follow the instructions by hiassoft at: http://www.horus.com/~hias/cirrus-driver.html



      Original Post:


      I've been trying to get the Raspberry Pi 3 B working with the Cirrus Logic Audio Card this weekend with no success. This Element 14 page for the card clearly says the RPi 3 B is supported so I would imagine someone actually made sure this was true. I've tried several times to follow the directions provided by Cirrus Logic in their Github repo.


      Here's exactly what I did:


      1. Set up an SD card with the latest Noobs.


      2. Install Rasbian and log in.


      3. Connect to my WiFi network.


      4. Change the keyboard to English US.


      5. Open the web browser to pull up my notes.


      6. Carefully run the following commands in order which I've adapted from the wiki.


      $ sudo apt-get update && sudo apt-get -y upgrade

      $ sudo apt-get -y install bc


      $ mkdir -p /tmp/AudioRepos/raspberrypi/tools

      $ mkdir -p /tmp/AudioRepos/CirrusLogic/rpi-linux


      $ git clone --depth 1 https://github.com/raspberrypi/tools /tmp/AudioRepos/raspberrypi/tools

      $ git clone --depth 1 https://github.com/CirrusLogic/rpi-linux /tmp/AudioRepos/CirrusLogic/rpi-linux


      $ make -C /tmp/AudioRepos/CirrusLogic/rpi-linux bcm2709_defconfig

      $ make -C /tmp/AudioRepos/CirrusLogic/rpi-linux -j4

      $ make -C /tmp/AudioRepos/CirrusLogic/rpi-linux -j4 modules

      $ sudo make -C /tmp/AudioRepos/CirrusLogic/rpi-linux modules_install


      $ /tmp/AudioRepos/raspberrypi/tools/mkimage/mkknlimg /tmp/AudioRepos/CirrusLogic/rpi-linux/arch/arm/boot/zImage /tmp/AudioRepos/raspberrypi/tools/mkimage/kernel7.img


      $ sudo cp /tmp/AudioRepos/raspberrypi/tools/mkimage/kernel7.img /boot/kernel7.img

      $ sudo cp /tmp/AudioRepos/CirrusLogic/rpi-linux/arch/arm/boot/dts/rpi-cirrus-wm5102-overlay.dtb /boot/overlays/


      $ sudo bash -c "echo 'dtoverlay=rpi-cirrus-wm5102-overlay' > /boot/config.txt"

      $ sudo bash -c "echo -e 'softdep arizona-spi pre: arizona-ldo1\nsoftdep spi-bcm2708 pre: fixed' > /etc/modprobe.d/raspi-blacklist.conf"


      $ git clone --depth 1 https://github.com/CirrusLogic/wiki-content /tmp/AudioRepos/CirrusLogic/wiki-content

      $ mkdir ~/AudioScripts

      $ mv /tmp/AudioRepos/CirrusLogic/wiki-content/scripts/* ~/AudioScripts/

      $ chmod +x ~/AudioScripts/*.sh


      $ sudo shutdown -r now


      Then on restart, the Pi hangs. There are several "Driver leds-gpio requests probe deferral" messages which might mean something. There is also "nonblocking pool is initialized":



      In addition, there is an error related to mmc_bcm2835:



      On the Cirrus Logic board itself, both lights turn on:



      And I definitely have it attached completely:




      Anyway, even though I know a thing or two about the command line, I'm not really a low-level guy. I don't compile kernels so I'm not sure how to diagnose this, or even what these errors mean. But I can guarantee you having the CL Audio Card with a RPi 3 B and following the steps above, anyone can replicate this issue.


      Does anyone have first-hand knowledge that these two actually work together? Can anyone help me figure out what is wrong with my configuration?


      Thank you.