element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      • Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Raspberry Pi
  • Products
  • More
Raspberry Pi
Raspberry Pi Forum Cirrus Logic Audio Card working on the Raspberry Pi 2
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Raspberry Pi to participate - click to join for free!
Featured Articles
Announcing Pi
Technical Specifications
Raspberry Pi FAQs
Win a Pi
Raspberry Pi Wishlist
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 165 replies
  • Subscribers 684 subscribers
  • Views 22776 views
  • Users 0 members are here
  • wolfson
  • raspberry
  • audio
  • pi
  • cirrus
  • raspberry_pi
  • rpi2
  • raspeberry_pi_accessories
  • pi2
Related

Cirrus Logic Audio Card working on the Raspberry Pi 2

Former Member
Former Member over 10 years ago

Hi all!

 

As you might know, Cirrus Logic's main kernel source branch recently switched to 3.18.

My first thought was "Hmm, that means the Cirrus Logic card could finally work on the RPi2..."

I have built a couple of 3.18 kernels for my B+ and RPi2 and I have managed to get both models to produce sound image

 

It's still early days, i.e. there are possibly bugs and glitches to fix, but for those of you who would like to try it out I've made an image file that you can download here:

https://drive.google.com/file/d/0BzIaxMH3N5O1cmJ1bFhMcG1hc0E/view?usp=sharing

The file is a 1.3 GB zip. Uncompressed size is 3.1 GB, so it fits comfortably on a 4 GB card.


The image is based on the standard 2015-02-16-raspbian-wheezy image from the Foundation that you flash to a SD card for a fresh install.

I have only added my kernels and set up the configuration files to get the card going.

It should work on the older B model  with a Wolfson Audio Card too, but I haven't tested that yet.

 

Have fun!

--

Ragnar

  • Sign in to reply
  • Cancel
Parents
  • Former Member
    Former Member over 10 years ago

    Ragnar,

     

    Many thanks to you for sharing this!!! I am getting sound using my Raspberry Pi 2 on the headset but I am only getting sound output to my loud speakers via right speaker out--I get no sound at all to left speaker out.  What may I have done wrong?

     

    Thanks, again!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • hiassoft
    hiassoft over 10 years ago in reply to Former Member

    Sherry McCray wrote:

    I am getting sound using my Raspberry Pi 2 on the headset but I am only getting sound output to my loud speakers via right speaker out--I get no sound at all to left speaker out.  What may I have done wrong?

    This is really strange, a bad connection would have been my best guess, too.

     

    But I noticed a similar issue on my OpenELEC builds when using SPDIF, occasionally I only got sound on the right channel. This happens only from time to time and is hard to reproduce. After a reboot everything's fine again. Not sure what's going wrong here.

     

    I also noticed another issue with the new kernel 3.18 driver, /proc/interrupts reports a lot of bad IRQs (Err: at the end is continuously counting up). This didn't happen with the previous 3.12 driver. I noticed that on 3.12 "arizona" was registered for IRQ 27, now on 3.18 it's registered to IRQ 0 - and none of these ever triggered. My guess is that both things aren't correct and request_threaded_irq(arizona->irq...) and free_irq(arizona->irq) in arizona-irq.c might need to be guarded with a "if (arizona->irq)". Or maybe it's something else and the IRQs haven't been configured properly at all, I don't know.

     

    Another thing I noticed on my OpenELEC builds: sometimes the card wasn't detected after a reboot and dmesg contained "arizona spi0.1: Unknown device ID: 0" instead of "arizona spi0.1: WM5102 revision C". This seemed to occur more often if the kernel is compiled without CONFIG_PREEMPT but is very hard to reproduce. So far I've only seen it on my OpenELEC builds but not on raspbian with a defconfig kernel. Again: not sure what's going on here.

     

    so long,

     

    Hias

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 10 years ago in reply to hiassoft

    I've build a RT kernel using the Cirrus kernel git repo and I'm getting this Unknown device ID message too:

    [    4.886573] bcm2708_spi 3f204000.spi: master is unqueued, this is deprecated
    [    4.986252] arizona spi0.1: Unknown device ID: 0
    [    5.034386] bcm2708_spi 3f204000.spi: SPI Controller at 0x3f204000 (irq 80)
    [    5.047637] bcm2708_i2c_init_pinmode(1,2)
    [    5.053591] bcm2708_i2c_init_pinmode(1,3)
    [    5.276372] bcm2708_i2c 3f804000.i2c: BSC1 Controller at 0x3f804000 (irq 79) (baudrate 100000)
    [    5.586988] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
    [    5.909683] systemd-journald[104]: Received request to flush runtime journal from PID 1
    [    6.271667] snd-rpi-wsp sound: ASoC: CODEC DAI wm5102-aif1 not registered
    [    6.280661] snd-rpi-wsp sound: Failed to register card: -517
    [    6.288491] platform sound: Driver snd-rpi-wsp requests probe deferral

    So I guess I'm missing something. ragnar.jensen how did you build the kernel? Apparently you used make deb-pkg but doesn't the kernel need to be run through mkknlimg? Care to share a recipe so others can build their own kernels too? Thanks in advance!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • Former Member
    Former Member over 10 years ago in reply to hiassoft

    I've build a RT kernel using the Cirrus kernel git repo and I'm getting this Unknown device ID message too:

    [    4.886573] bcm2708_spi 3f204000.spi: master is unqueued, this is deprecated
    [    4.986252] arizona spi0.1: Unknown device ID: 0
    [    5.034386] bcm2708_spi 3f204000.spi: SPI Controller at 0x3f204000 (irq 80)
    [    5.047637] bcm2708_i2c_init_pinmode(1,2)
    [    5.053591] bcm2708_i2c_init_pinmode(1,3)
    [    5.276372] bcm2708_i2c 3f804000.i2c: BSC1 Controller at 0x3f804000 (irq 79) (baudrate 100000)
    [    5.586988] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
    [    5.909683] systemd-journald[104]: Received request to flush runtime journal from PID 1
    [    6.271667] snd-rpi-wsp sound: ASoC: CODEC DAI wm5102-aif1 not registered
    [    6.280661] snd-rpi-wsp sound: Failed to register card: -517
    [    6.288491] platform sound: Driver snd-rpi-wsp requests probe deferral

    So I guess I'm missing something. ragnar.jensen how did you build the kernel? Apparently you used make deb-pkg but doesn't the kernel need to be run through mkknlimg? Care to share a recipe so others can build their own kernels too? Thanks in advance!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Children
  • Former Member
    Former Member over 10 years ago in reply to Former Member

    Yes, I use mkknlimg to put the device-tree "tail" on the kernel file.

    "make deb-pkg" uses the compressed kernel zImage, so I just rename it and then have mkknlimg create a new zImage from it, with the tail added.

    make menuconfig
    make -j8
    make -j8 modules
    pushd arch/arm/boot/
    mv zImage zImage.org
    mkknlimg zImage.org zImage
    rm zImage.org
    popd
    KBUILD_DEBARCH=armhf make deb-pkg

    --

    Ragnar

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 10 years ago in reply to Former Member

    Awesome! Thanks! Now I've got a nice deb package of my RPi kernel. And I got it to work, needed to add CONFIG_REGULATOR=y and then CONFIG_REGULATOR_FIXED_VOLTAGE=m  and CONFIG_REGULATOR_ARIZONA=m.

    root@rpi-jessie:~# uname -a
    Linux rpi-jessie 3.18.9-rt5-v7-cirrus #1 SMP PREEMPT RT Thu Apr 16 20:50:14 CEST 2015 armv7l GNU/Linux
    root@rpi-jessie:~# cat /proc/asound/cards
     0 [sndrpiwsp      ]: snd_rpi_wsp - snd_rpi_wsp
                          snd_rpi_wsp

    As you can see I'm using plain Debian, from what I've understood that should perform a bit better than Raspbian. And I'm cross-compiling so I had to adapt the steps a bit.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube