Differences between revisions 1 and 8 (spanning 7 versions)
Revision 1 as of 2009-02-09 17:55:24
Size: 5261
Editor: GeoffSimmons
Comment: Initial revision.
Revision 8 as of 2009-12-16 14:56:05
Size: 8717
Editor: GeoffSimmons
Comment: Include firmware installation procedure for Debian kernels >= 2.6.31 (condensed from BTS #464197).
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
||<tablestyle="width: 100%;" style="border: 0px hidden">~-[:DebianWiki/EditorGuide#translation:Translation(s)]: none-~||<style="text-align: right;border: 0px hidden"> (!) [:/Discussion:Discussion]|| ||<tablestyle="width: 100%;" style="border: 0px hidden">~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: none-~||<style="text-align: right;border: 0px hidden"> (!) [[/Discussion|Discussion]]||
Line 8: Line 8:
[[TableOfContents(3)]] <<TableOfContents(3)>>
Line 10: Line 10:
snd-cs46xx is a 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 kernel module supporting Cirrus Logic's Sound Fusion CS46xx audio controllers. It is an [[ALSA]] driver provided in Linux 2.6 mainline kernels.
Line 12: Line 12:
In [wiki:DebPkg: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/linux-2.6_2.6.26-13/changelog#versionversion2.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 DebPkg:alsa-source package to resolve bug Bug:483918. 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#versionversion2.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.
Line 14: Line 14:
The 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([wiki:Self:KernelFirmwareLicensing#head-3565057df6494cdf78b26fb1f0875d032b54c167 cs46xx_image.h (sound/pci/cs46xx)] - ["KernelFirmwareLicensing"])]]. 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).

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#cs46xximage.h.28sound.2BAC8-pci.2BAC8-cs46xx.29|cs46xx_image.h (sound/pci/cs46xx)]] - [[KernelFirmwareLicensing]])>>
Line 20: Line 22:
The snd-cs46xx module is not present within 2.6.26 Debian kernel images.  See Debian bug Bug:464197 and ["KernelFirmwareLicensing"]. The snd-cs46xx module is not present within 2.6.26 Debian kernel images.
##
include backports.org procedure if 2.6.3{1,2} enters lenny-backports
Line 26: Line 29:
The snd-cs46xx module is included within 2.6.18 Debian kernel images. The snd-cs46xx module is included within 2.6.18 Debian kernel images.  No firmware from userspace is required.
Line 31: Line 34:
The following procedure can be used to provide the snd-cs46xx module, using an DebPkg:alsa-source package generated from a deprecated [wiki:DebPkg:src:alsa-driver alsa-driver] version. The following procedure can be used to provide the snd-cs46xx module, using an DebianPkg:alsa-source package generated from a deprecated [[DebianPkg:src:alsa-driver|alsa-driver]] version.  No firmware from userspace is required.
Line 33: Line 36:
 1. Install the DebPkg:build-essential, DebPkg:debconf-utils, DebPkg:devscripts, DebPkg:fakeroot, relevant linux-headers and DebPkg:module-assistant packages: {{{  1. Install the DebianPkg:build-essential, DebianPkg:debconf-utils, DebianPkg:devscripts, DebianPkg:fakeroot, relevant linux-headers and DebianPkg:module-assistant packages: {{{
Line 38: Line 41:
 1. Add the [:Backports:Debian Backports] repository to {{{/etc/apt/sources.list}}}, for example: {{{  1. Add the [[Backports|Debian Backports]] repository to {{{/etc/apt/sources.list}}}, for example: {{{
Line 42: Line 45:
 1. Update the list of available packages and install the DebPkg:etch-backports/debian-backports-keyring package: {{{  1. Update the list of available packages and install the DebianPkg:etch-backports/debian-backports-keyring package: {{{
Line 48: Line 51:
 1. Install the DebPkg:etch-backports/debhelper and DebPkg:etch-backports/quilt packages: {{{  1. Install the DebianPkg:etch-backports/debhelper and DebianPkg:etch-backports/quilt packages: {{{
Line 52: Line 55:
 1. Acquire a deprecated [wiki:DebPkg:src:alsa-driver alsa-driver] source package: {{{  1. Acquire a deprecated [[DebianPkg:src:alsa-driver|alsa-driver]] source package: {{{
Line 72: Line 75:
 1. If not already performed, install the DebPkg:alsa-base and DebPkg:alsa-utils packages: {{{  1. If not already performed, install the DebianPkg:alsa-base and DebianPkg:alsa-utils packages: {{{
Line 84: Line 87:
 1. Run [http://manpages.debian.net/man/1/alsamixer alsamixer], unmute channels and raise sound levels: {{{  1. Run [[DebianMan:1/alsamixer|alsamixer]], unmute channels and raise sound levels: {{{
Line 91: Line 94:
=== Squeeze ===

The snd-cs46xx module is not present within 2.6.30 Debian kernel images.

=== Sid ===
## rename to Squeeze once 2.6.32 has migrated to testing

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

 1. Install the DebianPkg:build-essential package: {{{
$ su
# aptitude update
# aptitude install build-essential
# exit
}}}
 1. Download [[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=sound/pci/cs46xx/cs46xx_image.h;h=dc93f62db2c2b6ec624eda7bcb80a38baee5f47e;hb=HEAD|cs46xx_image.h]] from Linus' kernel tree: {{{
$ wget 'http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob_plain;f=sound/pci/cs46xx/cs46xx_image.h;h=dc93f62db2c2b6ec624eda7bcb80a38baee5f47e;hb=HEAD' -O 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. Reload the snd-cs46xx module: {{{
# modprobe -r snd-cs46xx && modprobe snd-cs46xx
}}}
 1. If not already performed, install the DebianPkg:alsa-base and DebianPkg:alsa-utils packages: {{{
# aptitude install alsa-base alsa-utils
}}}
 1. 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
}}}
 1. Run [[DebianMan:1/alsamixer|alsamixer]], unmute channels and raise sound levels: {{{
$ alsamixer
}}}
 1. Test your sound device: {{{
$ aplay /usr/share/sounds/alsa/Noise.wav
}}}

==== Troubleshooting ====

 * Examine the kernel ring buffer ([[DebianMan:1/dmesg|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.
Line 93: Line 168:
The page ["HowToIdentifyADevice/PCI"] explains how to identify a PCI device. The page [[HowToIdentifyADevice/PCI]] explains how to identify a PCI device.
Line 95: Line 170:
The following list is based on the ''alias'' fields of {{{modinfo snd-cs46xx}}} on Etch. The following list is based on the ''alias'' fields of {{{modinfo snd-cs46xx}}} in Debian 2.6.32 kernel images.
Line 99: Line 174:
PCI: 1013:6003 Cirrus Logic CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator] PCI: 1013:6003 Cirrus Logic CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator]
Line 104: Line 179:
 * ["ALSA"]
 * Debian bug reports: Bug:464197, Bug:483918
 *
["KernelFirmwareLicensing"]
 * [[ALSA]]
 * [[KernelFirmwareLicensing]]

Translation(s): none

(!) ?Discussion


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

This page describes the state of support for sound devices based on CS46xx chipsets on Debian systems.

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

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

In 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

Lenny

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

Etch

2.6.18 kernel

The snd-cs46xx module is included within 2.6.18 Debian kernel images. No firmware from userspace is required.

2.6.24 kernel

The following procedure can be used to provide the snd-cs46xx module, using an alsa-source package generated from a deprecated alsa-driver version. No firmware from userspace is required.

  1. Install the build-essential, debconf-utils, devscripts, fakeroot, relevant linux-headers and module-assistant packages:

    $ su
    # aptitude update
    # aptitude install build-essential debconf-utils devscripts fakeroot linux-headers-$(uname -r) module-assistant
  2. Add the Debian Backports repository to /etc/apt/sources.list, for example:

    # Backported packages for Debian Etch
    deb http://www.backports.org/debian etch-backports main
  3. Update the list of available packages and install the etch-backports/debian-backports-keyring package:

    # aptitude update
    # aptitude -t etch-backports install debian-backports-keyring

    As your system does not yet have the GnuPG archive key of the backports.org repository installed, you will be asked to confirm installation of a package from an untrusted repository. Enter Yes when prompted.

  4. Install the etch-backports/debhelper and etch-backports/quilt packages:

    # aptitude -t etch-backports install debhelper quilt
    $ exit
  5. Acquire a deprecated alsa-driver source package:

    $ dget -x http://snapshot.debian.net/archive/2008/04/07/debian/pool/main/a/alsa-driver/alsa-driver_1.0.16-1.1.dsc
  6. Build the binary packages:

    $ cd alsa-driver-1.0.16
    $ dpkg-buildpackage -b -uc -rfakeroot
  7. Install the alsa-source package:

    $ cd ..
    $ su
    # dpkg -i ./alsa-source*deb
    $ exit
  8. Build an alsa-modules-* package for your system:

    $ m-a -u /tmp build alsa
  9. Install the alsa-modules-* package:

    $ su
    # dpkg -i /tmp/alsa-modules*deb
  10. If not already performed, install the alsa-base and alsa-utils packages:

    # aptitude install alsa-base alsa-utils
  11. Reload the ALSA modules and load the snd-cs46xx module:

    # invoke-rc.d alsa reload
    # modprobe snd-cs46xx
  12. 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
  13. Run alsamixer, unmute channels and raise sound levels:

    $ alsamixer
  14. Test your sound device:

    $ aplay /usr/share/sounds/alsa/Noise.wav

Squeeze

The snd-cs46xx module is not present within 2.6.30 Debian kernel images.

Sid

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

  1. Install the build-essential package:

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

    $ wget 'http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob_plain;f=sound/pci/cs46xx/cs46xx_image.h;h=dc93f62db2c2b6ec624eda7bcb80a38baee5f47e;hb=HEAD' -O cs46xx_image.h
  3. Download source code for a 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
  4. Download a patch against cs46xx_image.h:

    $ wget 'http://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 -p /usr/local/lib/firmware/cs46xx
    # cp cs46xx/cs46xx-old.fw /usr/local/lib/firmware/cs46xx
  9. Reload the snd-cs46xx module:

    # modprobe -r snd-cs46xx && modprobe snd-cs46xx
  10. If not already performed, install the alsa-base and alsa-utils packages:

    # aptitude install alsa-base alsa-utils
  11. 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
  12. Run alsamixer, unmute channels and raise sound levels:

    $ alsamixer
  13. Test your sound device:

    $ aplay /usr/share/sounds/alsa/Noise.wav

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 2.6.32 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