Differences between revisions 20 and 27 (spanning 7 versions)
Revision 20 as of 2011-09-15 07:56:46
Size: 7752
Editor: GeoffSimmons
Comment: Amended to use github until git.kernel.org is available again.
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 2: Line 2:
~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[it/snd-cs46xx|Italiano]]-~ ~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: [[fr/snd-cs46xx|Français]] - [[it/snd-cs46xx|Italiano]]-~
Line 4: Line 4:
Line 10: Line 11:
snd-cs46xx is a Linux kernel module supporting Cirrus Logic's Sound Fusion CS46xx audio controllers. It is an [[ALSA]] driver provided in Linux 2.6 mainline kernels. 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.
Line 12: Line 13:
In [[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 14: Line 15:
In [[DebianPkg:src:linux2.6|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 DebianBug:464197). At [[DebianPkg:src:linux2.6|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 DebianBug:464197).
Line 16: 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.2BAC8-pci.2BAC8-cs46xx.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]])>>
Line 19: Line 20:

<<Anchor(squeeze)>>
<<Anchor(wheezy)>>
=== Squeeze, Wheezy ===
=== Debian 7 "Wheezy" ===
Line 31: Line 29:
 1. Download [[https://github.com/torvalds/linux/blob/master/sound/pci/cs46xx/cs46xx_image.h|cs46xx_image.h]] from Linus' kernel tree: {{{
$ wget https://raw.github.com/torvalds/linux/master/sound/pci/cs46xx/cs46xx_image.h
 1. Download [[https://github.com/torvalds/linux/blob/v3.2/sound/pci/cs46xx/cs46xx_image.h|cs46xx_image.h]] from Linus' kernel tree: {{{
$ wget https://raw.github.com/torvalds/linux/v3.2/sound/pci/cs46xx/cs46xx_image.h
Line 34: Line 32:
 1. Download [[attachment:write_images.c|source code]] for a [[http://bugs.debian.org/464197#34|program to write out firmware]] from {{{cs46xx_image.h}}}: {{{
$ wget 'http://wiki.debian.org/snd-cs46xx?action=AttachFile&do=get&target=write_images.c' -O write_images.c
 1. Download [[attachment:write_images.c|source code]] for a [[https://bugs.debian.org/464197#34|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
Line 37: Line 35:
 1. Download a [[http://bugs.debian.org/464197#181|patch]] against {{{cs46xx_image.h}}}: {{{
$ wget 'http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=181;att=0;bug=464197' -O cs46xx_image.diff
 1. Download a [[https://bugs.debian.org/464197#181|patch]] against {{{cs46xx_image.h}}}: {{{
$ wget 'https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=181;att=0;bug=464197' -O cs46xx_image.diff
Line 51: Line 49:
# mkdir -p /usr/local/lib/firmware/cs46xx
# cp cs46xx/cs46xx-old.fw /usr/local/lib/firmware/cs46xx
# mkdir /lib/firmware/cs46xx
# cp cs46xx/cs46xx-old.fw /lib/firmware/cs46xx
Line 62: Line 60:
 1. Run [[DebianMan:1/alsamixer|alsamixer(1)]] to unmute channels and raise the volume levels.

 1. 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
}}}

=== Lenny ===

The snd-cs46xx module is not present in Debian 2.6.26 kernel images.

The snd-cs46xx module is included in Debian 2.6.32 kernel images, which are available for Lenny systems from [[Backports|Debian Backports]]. You also are required to supply one firmware file for device use.

 1. Install the DebianPkg:alsa-base, DebianPkg:alsa-utils and DebianPkg:build-essential packages: {{{
$ su
# aptitude update && aptitude install alsa-base alsa-utils build-essential
# exit
}}}
 1. Download [[https://github.com/torvalds/linux/blob/master/sound/pci/cs46xx/cs46xx_image.h|cs46xx_image.h]] from Linus' kernel tree: {{{
$ wget https://raw.github.com/torvalds/linux/master/sound/pci/cs46xx/cs46xx_image.h
}}}
 1. Download [[attachment:write_images.c|source code]] for a [[http://bugs.debian.org/464197#34|program to write out firmware]] from {{{cs46xx_image.h}}}: {{{
$ wget 'http://wiki.debian.org/snd-cs46xx?action=AttachFile&do=get&target=write_images.c' -O write_images.c
}}}
 1. Download a [[http://bugs.debian.org/464197#181|patch]] against {{{cs46xx_image.h}}}: {{{
$ wget 'http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=181;att=0;bug=464197' -O cs46xx_image.diff
}}}
 1. Apply the patch: {{{
$ patch -i cs46xx_image.diff
}}}
 1. Compile the {{{write_images}}} program: {{{
$ gcc -o write_images write_images.c
}}}
 1. Execute the program to write out firmware: {{{
$ ./write_images
}}}
 1. Install the firmware: {{{
$ su
# mkdir -p /usr/local/lib/firmware/cs46xx
# cp cs46xx/cs46xx-old.fw /usr/local/lib/firmware/cs46xx
}}}
 1. Add the [[Backports|Debian Backports]] repository to {{{/etc/apt/sources.list}}}. For example: {{{
# Backported packages for Debian Lenny/5.0
deb http://backports.debian.org/debian-backports lenny-backports main
}}}
 1. Update the list of available packages: {{{
# aptitude update
}}}
 1. Install a Linux 2.6.32 kernel image appropriate for your system. For example: {{{
# aptitude -t lenny-backports install linux-image-$(uname -r|sed 's,[^-]*-[^-]*-,,')
}}}
 1. If not already performed, add your user account to the {{{audio}}} group: {{{
# adduser yourusername audio
}}}
 1. Restart your system and boot with the newly installed kernel.
Line 147: Line 88:
The following list is based on the ''alias'' fields of {{{modinfo snd-cs46xx}}} in Debian 2.6.32 (2.6.32-35) kernel images. 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.

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