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
    About the element14 Community
  • 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
Blog DIY Kernel: CirrusLogic's "Build the Code" Instructions Don't Work
  • 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
GPIO Pinout
Raspberry Pi Wishlist
Comparison Chart
Quiz
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: Former Member
  • Date Created: 4 Mar 2015 6:38 PM Date Created
  • Views 1894 views
  • Likes 1 like
  • Comments 8 comments
Related
Recommended
  • wolfson
  • raspberry
  • audio
  • pi
  • cirrus
  • raspberry_pi
  • kernel
  • raspeberry_pi_accessories

DIY Kernel: CirrusLogic's "Build the Code" Instructions Don't Work

Former Member
Former Member
4 Mar 2015

I just bought a new copy of the Cirrus Logic Audio Card.  I'm still waiting on delivery of the quadcore Pi 2, so my fallback option is to start off using it on my B+.

 

Rather than downloading and installing the Cirrus Audio linux os image, I'd prefer to keep my existing deployed linux installation and build a new kernel/driver to add support for the card on my existing system.  To do this I'm following CirrusLogic's official "Build the Code" instructions on github:

 

https://github.com/CirrusLogic/rpi-linux/wiki/Building-the-code

 

Unfortunately, the "Build the Code" instructions contain unresolved errors that prevent the user from completing a successful kernel build, unless he takes the time to understand the build instructions, recognize the errors, and fix them on his own.  As supplied, the CirrusLogic instructions are defective the just do not work.  It appears that CirrusLogic's official "Build the Code" guide is just defective.  It almost seems as if someone did a half-baked job of writing the instructions, as it looks like they didn't even bother to verify that the build instructions actually work, because as they are written they will not work.

 

Overall, I'm quite disappointed with my purchase for a couple of reasons:

 

1.  The CirrusLogic Audio card is being advertised as being compatible with the new quadcore RPi2, when the reality is that it doesn't work because the kernel drivers for ARM7 are vaporware.

 

2.  Falling back to using the CirrusLogic Audio Card with ARM6 on the RPi B+ isn't an option, as CirrusLogic's Official "Build the Code" guide contains errors and doesn't even work.

 

CirrusLogic needs to take the time to  fix these problems, so that the product they're selling actually works like it's advertised to work.  Unfortunately, if you take the time to survey the web, you'll find plenty of people who are having problems getting the platform to work.  You shouldn't have to be a linux kernel developer, and you shouldn't have to recognize the errors in CirrusLogic's instructions and correct them yourself in order to get this product to work.  Overall, I'm quite disappointed.

  • Sign in to reply
  • timg73
    timg73 over 11 years ago

    Hi Bob,

    I agree that the compilation instructions aren't wonderful.  I did not attempt cross-compilation, and followed the normal process for native compilation of a generic Debian kernel.  This worked well for me on a fresh installation of Raspbian, and although it took about 10 hours to complete I wasn't in a rush and just left it to run over night.  Note that the wiki instructions download much more data than necessary.  Replace the git-clone command by

    • git clone --depth 1 https://github.com/CirrusLogic/rpi-linux.git

     

    Alternatively you can skip downloading and  compiling the source entirely.  I've compiled the most recent "Cirrus Logic" kernel and uploaded it as a Debian package.  You can find it here:

    http://www.element14.com/community/thread/40824/l/kernel-as-deb-package

    Install as described, and modify /etc/modules & /etc/modprobe.d/raspi-blacklist.conf as detailed in the wiki.

     

    I'm not sure why Cirrus Logic don't distribute their patched kernel as a package.  The disk image seems unnecessarily cumbersome.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • Former Member
    Former Member over 11 years ago in reply to cstanton

    Thanks for the reply.  There are several syntax errors in the Bash instructions that are due to carelessness on the part of the writer.  Anyone proficient in reading bash instructions will immediately recognize them, and know what to do.  Unfortunately, the errors will block anyone not proficient in bash from completing the instructions.  The same mistake is repeated several times, so fixing those errors is going to be necessary.  I'll set those concerns aside, because anyone proficient in bash will just laugh them off as they proceed with the kernel build.

     

    The real problem comes in the lack of support for native compiling on the Raspberry Pi. Unfortunately the Cirrus instructions don't provide any support for rebuilding the kernel on the RPi using the RPi's native ARM-6 toolkit.  Sure, compiling a kernel on such a sluggish device would take a fair amount of clock time, but clock time does not equal seat time.  Native compiling is the most simple, most direct, and most error-free method of getting the job done.  Unfortunately, there is no support on the wiki for building the RPi kernel and modules on the RPi itself.  IMO that's a major problem.

     

    Unfortunately, the guy who wrote the Cirrus wiki forces everyone to cross-compile for ARM-6 on an alien linux platform, without paying any attention to what kind of platform they're going to be using.  The wiki article is quite poorly conceived in that regard, as it makes no consideration for whether the user is going to cross compile in a 32-bit environment, a 32/64-bit environment, or a 64-bit only environment.  It also makes no consideration for whether the user is going to be cross-compiling on an RPM-based or a deb-based system, where the directory tree layout for the system differs.

     

    I'm using F21 x86_64.  After fixing the silly bash syntax errors, I complete the compile without any problems, but the install fails on the final line of Step 7, removing the tarball.  The Raspberry Pi bash interpreter issues the following error, and bash commands become broken:

     

    # rm /tmp/modules.tgz

    -bash: /usr/bin/rm: /lib/ld-linux-armhf.so.3: bad ELF interpreter: No such file or directory

     

    It would appear that the guy who wrote the wiki made a huge mistake in forcing everyone to cross-compile, rather than just supporting a kernel rebuild in the native ARM-6 environment on the RPi.  Sure, that would take more clock time, but clock time is not seat time.  In forcing everyone to cross-compile on a linux box, the author subjects everyone unnecessarily to the perils of cross-compiling on an alien platform.  Furthermore, he made the "misteak" of assuming that because the instructions "just worked" for him, that they'd "just work" for everyone else, regardless of the platform they're using.  That's certainly not the case.  It would be helpful if the author would list the system criteria that are needed to complete a linux cross compile for the instructions as they are written, assuming that he even knows them.  It would also be helpful to point out the problems that are likely to be encountered in compiling 32-bit code on a modern linux box.  We're in an era where many people have 64-bit only systems, and that reality is conveniently being ignored.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • cstanton
    cstanton over 11 years ago

    What errors are you experiencing ? (You don't state them).

     

    It's entirely possible that the errors you're experiencing are down to missing dependencies for building the source code, often the error messages allude to what you need to do.

     

    Once we've identified that then we can determine if Cirrus should change their instructions and how.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • 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 © 2026 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