Differences between revisions 26 and 27
Revision 26 as of 2015-03-03 23:57:55
Size: 5205
Editor: GeoffSimmons
Comment: cs46xx DSP blob was moved out of tree at Linux v4.0-rc2 (now part of alsa-firmware); amend links to use v3.2 tag for Debian Wheezy, use HTTPS, update supported devices, fix anchor in footnote.
Revision 27 as of 2015-03-04 00:02:41
Size: 5059
Editor: GeoffSimmons
Comment: Drop link to removed package changelog.
Deletions are marked like this. Additions are marked like this.
Line 13: Line 13:
At [[DebianPkg:src:linux-2.6|linux-2.6]] 2.6.23-1, the binary-only firmware in this driver was removed (see the [[http://packages.debian.org/changelogs/pool/main/l/linux-2.6/current/changelog#version2.6.23-1|package changelog]]), due to discovered [[KernelFirmwareLicensing|firmware licensing issues]]. The driver was disabled at this time. Firmware was also removed from the DebianPkg:alsa-source package to resolve bug DebianBug:483918. At [[DebianPkg:src:linux-2.6|linux-2.6]] 2.6.23-1, the binary-only firmware in this driver was removed due to [[KernelFirmwareLicensing|licensing issues]]. The driver was disabled at this time. Firmware was also removed from the DebianPkg:alsa-source package to resolve bug DebianBug:483918.
Line 17: Line 17:
Device firmware is unable to be distributed by the Debian project, as the snd-cs46xx driver has no license.<<FootNote([[http://bugzilla.kernel.org/show_bug.cgi?id=10750|CS46xx sound driver carries no license]] - Kernel Bug Tracker Bug 10750)>> A free redistribution license has been requested from Cirrus Logic.<<FootNote([[KernelFirmwareLicensing#cs46xx_image.h_.28sound.2Fpci.2Fcs46xx.29|cs46xx_image.h (sound/pci/cs46xx)]] - [[KernelFirmwareLicensing]])>> Device firmware is unable to be distributed by the Debian project, as the snd-cs46xx driver has no license.<<FootNote([[https://bugzilla.kernel.org/show_bug.cgi?id=10750|CS46xx sound driver carries no license]] - Kernel Bug Tracker Bug 10750)>> A free redistribution license has been requested from Cirrus Logic.<<FootNote([[KernelFirmwareLicensing#cs46xx_image.h_.28sound.2Fpci.2Fcs46xx.29|cs46xx_image.h (sound/pci/cs46xx)]] - [[KernelFirmwareLicensing]])>>

Translation(s): Français - Italiano


Cirrus Logic Sound Fusion CS4280, CS461x, CS462x, CS463x devices

This page describes how to enable support for sound devices based on CS46xx chipsets on Debian systems.

snd-cs46xx is a Linux kernel module supporting Cirrus Logic's Sound Fusion CS46xx audio controllers. It is an ALSA driver included in the Linux kernel.

At linux-2.6 2.6.23-1, the binary-only firmware in this driver was removed due to licensing issues. The driver was disabled at this time. Firmware was also removed from the alsa-source package to resolve bug 483918.

At linux-2.6 2.6.31-1~experimental.1, the snd-cs46xx driver was re-enabled and patched to use firmware from userspace (resolving Debian bug 464197).

Device firmware is unable to be distributed by the Debian project, as the snd-cs46xx driver has no license.1 A free redistribution license has been requested from Cirrus Logic.2

Installation

Debian 7 "Wheezy"

You are required to supply one firmware file for device use.

  1. Install the alsa-base, alsa-utils and build-essential packages:

    $ su
    # aptitude update && aptitude install alsa-base alsa-utils build-essential
    # exit
  2. Download cs46xx_image.h from Linus' kernel tree:

    $ wget https://raw.github.com/torvalds/linux/v3.2/sound/pci/cs46xx/cs46xx_image.h
  3. Download source code for a program to write out firmware from cs46xx_image.h:

    $ wget 'https://wiki.debian.org/snd-cs46xx?action=AttachFile&do=get&target=write_images.c' -O write_images.c
  4. Download a patch against cs46xx_image.h:

    $ wget 'https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=181;att=0;bug=464197' -O cs46xx_image.diff
  5. Apply the patch:

    $ patch -i cs46xx_image.diff
  6. Compile the write_images program:

    $ gcc -o write_images write_images.c
  7. Execute the program to write out firmware:

    $ ./write_images
  8. Install the firmware:

    $ su
    # mkdir /lib/firmware/cs46xx
    # cp cs46xx/cs46xx-old.fw /lib/firmware/cs46xx
  9. Reload the snd-cs46xx module:

    # modprobe -r snd-cs46xx ; modprobe snd-cs46xx
  10. If not already performed, add your user account to the audio group, then log out and log back into your system:

    # adduser yourusername audio
    # exit
    $ exit
  11. Run alsamixer(1) to unmute channels and raise the volume levels.

  12. Test the sound device, for example:

    $ aplay /usr/share/sounds/alsa/Noise.wav
    $ speaker-test -t sine -f 440 -c 2
    $ speaker-test -t wav -c 2

Troubleshooting

  • Examine the kernel ring buffer (dmesg(1)) to verify firmware is being loaded.

    • If output similar to the following is shown:

      [16576.681738] Sound Fusion CS46xx 0000:00:06.0: found PCI INT A -> IRQ 11
      [16576.681774] Sound Fusion CS46xx 0000:00:06.0: sharing IRQ 11 with 0000:00:02.0
      [16576.681827] Sound Fusion CS46xx 0000:00:06.0: sharing IRQ 11 with 0000:01:00.0
      [16577.224760] Sound Fusion CS46xx 0000:00:06.0: firmware: requesting cs46xx/cs46xx-old.fw
      [16577.403887] cs46xx: firmware hunk out of range
      [16577.406087] image download error
      [16577.412213] Sound Fusion CS46xx: probe of 0000:00:06.0 failed with error

      The firmware is not in the correct format.

      • Ensure the patch for cs46xx_image.h is applied prior to compiling write_images.c.

      • Ensure write_images is executed on a system where unsigned long is little-endian 32-bit.

Supported Devices

The page HowToIdentifyADevice/PCI explains how to identify a PCI device.

The following list is based on the alias fields of modinfo snd-cs46xx in Debian 3.2.0 (3.2.65-1+deb7u2) kernel images.

  • PCI: 1013:6001 Cirrus Logic CS 4610/11 [CrystalClear SoundFusion Audio Accelerator]
    PCI: 1013:6003 Cirrus Logic CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator]
    PCI: 1013:6004 Cirrus Logic CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator]

See Also


CategoryHardware | CategorySound