Bug 10750

Summary: CS46xx should use load_firmware (was sound driver carries no license)
Product: Drivers Reporter: Dererk (dererk)
Component: Sound(ALSA)Assignee: Jaroslav Kysela (perex)
Status: RESOLVED CODE_FIX    
Severity: high CC: admin, alan, dannf, dhyan, superquad.vortex2, tiwai
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.12 and on Subsystem:
Regression: No Bisected commit-id:

Description Dererk 2008-05-19 12:59:13 UTC
It has been found that CS46xx driver carries a firmware blob that does not have license[1], what for our concerns turns it undistributable[2].

Some members of our team have already reported this to Cirrus Logic[3], no answer has been recieved yet.

Greetings,


Dererk

ref.
1. http://people.cse.iitd.ernet.in/~mcs052943/Resources/alsa-driver-1.0.4/alsa-kernel/pci/cs46xx/cs46xx_image.h
2. http://lists.debian.org/debian-mentors/2008/04/msg00140.html
3. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=464197#44
Comment 1 Roland Kletzing 2008-06-01 16:34:29 UTC
licensing issues like these really suck :(

anyway - i`m adding some information about licensing i found on their site. 
i think there`s not much, which can be done here besides asking them until geting a reply.....


http://www.cirrus.com/en/terms.html

Specific Notice Regarding Software Available on This Site

Any software that is made available to download from this site ("Software") may include a copyright notice. Use of such Software is governed by the terms of the license agreement that accompanies or is included with this Software ("License Agreement"). A user will be unable to install any Software before first agreeing to the License Agreement terms. Any reproduction or redistribution of the Software not in accordance with the License Agreement is expressly prohibited.

WITHOUT LIMITING THE FOREGOING, COPYING OR REPRODUCTION OF THE SOFTWARE TO ANY OTHER LOCATION FOR FURTHER REPRODUCTION OR REDISTRIBUTION IS PROHIBITED, UNLESS SUCH REPRODUCTION OR REDISTRIBUTION IS EXPRESSLY PERMITTED BY A LICENSE AGREEMENT ACCOMPANYING SUCH SOFTWARE. FOR YOUR CONVENIENCE, WE MAY MAKE AVAILABLE ON THIS SITE OR IN ITS SOFTWARE PRODUCTS, TOOLS AND UTILITIES FOR USE OR DOWNLOAD. WE DO NOT MAKE ANY ASSURANCES WITH REGARD TO THE ACCURACY OF THE RESULTS OR OUTPUT FROM THE USE OF ANY SUCH SOFTWARE PRODUCTS, TOOLS AND UTILITIES.


example license for other chip:

http://www.cirrus.com/en/support/lic/lic3.html?uri=/en/pubs/software/CDB5550_uC_Sample_Code_v11.zip

Software License

By clicking "Agree" below, you agree to be bound by the following terms and conditions in regards to the software code you will be permitted to download (the "Code"):

The Code is the property of Cirrus Logic Inc. and/or its suppliers and it is licensed not sold. Cirrus Logic Inc. hereby grants you a non-exclusive, worldwide, limited right and license to use, market, and demonstrate the Code solely for use on or in connection with a Cirrus Logic product.

THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND AND CIRRUS LOGIC HEREBY DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED, AND STATUTORY, IN CONNECTION WITH THE SOFTWARE, INCLUDING WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT OF THIRD PARTY RIGHTS, AND FITNESS FOR A PARTICULAR PURPOSE.

IN NO EVENT WILL CIRRUS LOGIC BE LIABLE FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OF THE USE OR INABILITY TO USE THIS CODE, INCLUDING WITHOUT LIMITATION, DAMAGES OR COSTS RELATING TO THE LOSS OF PROFITS, BUSINESS, GOODWILL, DATA OR COMPUTER PROGRAMS, EVEN IF ADVISED OF THE POSSIBLITY OF SUCH DAMAGES. IN NO EVENT WILL CIRRUS LOGIC, ITS SUPPLIERS' OR LICENSORS' LIABILITY EXCEED THE AMOUNT PAID BY YOU FOR THE CODE. BECAUSE SOME JURISIDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES, THE ABOVE LIMITATION MAY NOT APPLY TO YOU.

The laws of the State of Texas govern this Agreement, without reference to conflicts of law principles. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded.
Comment 2 Alan 2008-09-23 03:53:25 UTC
The firmware and original driver code were submitted by Cirrus Logic directly to the kernel so they clearly intended it to be redistibutable.
Comment 3 Dererk 2008-10-07 07:30:10 UTC
Alan, I'm afraid Legal stuff does not relay on that kind of assumptions, just the contrary. 
If it has no license, it's assumed that it's copyrighted and not free. I'm afraid it's being illegaly distributed but everyone :-(
Comment 4 Alan 2010-01-19 17:23:25 UTC
Look up 'Estoppel'

Firmware needs moving into using the firmware loader however.
Comment 5 Takashi Iwai 2013-11-19 13:42:16 UTC
I'm working on a patch to convert to firmware loader.  The patch is ready, and confirmed to work with a real sound card.  But it's too late for 3.13, so this will be "fixed" in 3.14.
Comment 6 Takashi Iwai 2013-11-29 07:30:56 UTC
The patch merged to sound git tree for-next branch.
Comment 7 Graham Bentley 2014-05-09 07:30:43 UTC
I am not sure I should be bothering the tracker with this however a recent kernel update on my Arch install has killed sound on my CS46xx sound card and it seems related?

uname -a > 3.14.2-1 x86_64

dmesg >

[11.649096] firmware load error [cwc4630]
[11.650279] snd_cs46xx: probe of 0000:01:06.0 failed with error -2

The full text of my post on the Arch forums is here ;

https://bbs.archlinux.org/viewtopic.php?pid=1413695#p1413695

I have also contacted the ALSA team on this issue.
Comment 8 Takashi Iwai 2014-05-09 07:50:23 UTC
(In reply to Graham Bentley from comment #7)
> I am not sure I should be bothering the tracker with this however a recent
> kernel update on my Arch install has killed sound on my CS46xx sound card
> and it seems related?
> 
> uname -a > 3.14.2-1 x86_64
> 
> dmesg >
> 
> [11.649096] firmware load error [cwc4630]
> [11.650279] snd_cs46xx: probe of 0000:01:06.0 failed with error -2

Did you install firmware files?  They are available in alsa-firmware git tree:
  http://git.alsa-project.org/?p=alsa-firmware.git
 
> The full text of my post on the Arch forums is here ;
> 
> https://bbs.archlinux.org/viewtopic.php?pid=1413695#p1413695
> 
> I have also contacted the ALSA team on this issue.

I don't remember it, so your inquiry didn't reach properly, unfortunately.

If you see still errors even after installing firmware files, open a new bug report on kernel bugzilla.
Comment 9 Graham Bentley 2014-05-09 08:30:31 UTC
Takashi,

> Did you install firmware files?

Lake of experience here precludes me doing so. Any tips?
Have D/L & extracted 'alsa-firmware-0db2181' ~ how to make?
Comment 10 Takashi Iwai 2014-05-09 08:33:42 UTC
configure, make, make install :)
The only needed files are in cs46xx directory, and the files are there even without make.  Go cs46xx directory, and install the files there like:
  mkdir /lib/firmware/cs46xx
  cp ba1 cwc4630 cwcasync cwcbinhack cwcdma cwcsnoop /lib/firmware/cs46xx/
Comment 11 Graham Bentley 2014-05-09 08:42:30 UTC
Thanks - all working :)
Comment 12 Nikolay Shaplov 2014-09-30 09:57:09 UTC
(In reply to Takashi Iwai from comment #10)
> configure, make, make install :)
> The only needed files are in cs46xx directory, and the files are there even
> without make.  Go cs46xx directory, and install the files there like:
>   mkdir /lib/firmware/cs46xx
>   cp ba1 cwc4630 cwcasync cwcbinhack cwcdma cwcsnoop /lib/firmware/cs46xx/

I did as you said with kernel 3.14 from debain. Playback works well, but I am unable to use mic in. Though when I used this card with Linux 3.2.0 configured as 
discribed here https://wiki.debian.org/snd-cs46xx, mic input worked well.

I am not sure it is firmware issue, but it worked then and does not work now.
Comment 13 Raymond 2014-10-01 23:52:26 UTC
> 
> I did as you said with kernel 3.14 from debain. Playback works well, but I
> am unable to use mic in. Though when I used this card with Linux 3.2.0
> configured as 
> discribed here https://wiki.debian.org/snd-cs46xx, mic input worked well.
> 
> I am not sure it is firmware issue, but it worked then and does not work now.

post the output of alsa-info.sh

how did you capture? 

are you runng pulseaudio in 3.14?
Comment 14 Nikolay Shaplov 2014-10-02 06:36:21 UTC
> post the output of alsa-info.sh

https://yadi.sk/d/eKVBuzKNbmisq


> how did you capture? 
audacity

> are you runng pulseaudio in 3.14?
no. I've removed it and put alsa instead


Moreover. There is one more interesting thing: I've obtained another card with cs chip after reporting this bug. This card is cs4281. And with cs4281 mic works well with kernel 3.14 (thought playback doe not work) I will also provide alsa-info for cs4281 just in case it might be useful. These all makes me O_o

https://yadi.sk/d/sEqlfmpVbmjDV