7752
Comment: Amended to use github until git.kernel.org is available again.
|
5059
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.
Contents
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.
Install the alsa-base, alsa-utils and build-essential packages:
$ su # aptitude update && aptitude install alsa-base alsa-utils build-essential # exit
Download cs46xx_image.h from Linus' kernel tree:
$ wget https://raw.github.com/torvalds/linux/v3.2/sound/pci/cs46xx/cs46xx_image.h
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
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
Apply the patch:
$ patch -i cs46xx_image.diff
Compile the write_images program:
$ gcc -o write_images write_images.c
Execute the program to write out firmware:
$ ./write_images
Install the firmware:
$ su # mkdir /lib/firmware/cs46xx # cp cs46xx/cs46xx-old.fw /lib/firmware/cs46xx
Reload the snd-cs46xx module:
# modprobe -r snd-cs46xx ; modprobe snd-cs46xx
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
Run alsamixer(1) to unmute channels and raise the volume levels.
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
CS46xx sound driver carries no license - Kernel Bug Tracker Bug 10750 (1)
cs46xx_image.h (sound/pci/cs46xx) - KernelFirmwareLicensing (2)