Differences between revisions 9 and 10
Revision 9 as of 2015-03-06 18:09:11
Size: 5441
Comment: sync with English master
Revision 10 as of 2015-03-15 11:20:57
Size: 7406
Comment: sync with English master
Deletions are marked like this. Additions are marked like this.
Line 17: Line 17:
In Linux 3.14 il firmware solo binario è stato [[https://git.kernel.org/linus/ad233a5f0f33a894f48c7d968ec207f46cbcae03|spostato fuori dall'albero del kernel]], con il driver modificato in modo da caricarlo esternamente. Il firmware del dispositivo fa parte dei rilasci di ALSA a partire dalla versione 1.0.28.<<FootNote([[http://www.alsa-project.org/main/index.php/Changes_v1.0.27.2_v1.0.28#alsa-firmware|Progetto ALSA: registro delle modifiche tra i rilasci 1.0.27 e 1.0.28]])>>
Line 20: Line 22:
=== Debian 7 "Wheezy" === <<Anchor(squeeze)>>
<<Anchor(wheezy)>>
=== Debian 7 "Wheezy", Debian 6.0 "Squeeze" ===
Line 67: Line 71:
== Risoluzione dei problemi == ==== Risoluzione dei problemi ====
Line 82: Line 86:

<<Anchor(jessie)>>
=== Debian 8 "Jessie" ===

Per usare il dispositivo è necessario fornire diversi file del firmware che possono essere recuperati dal [[http://www.alsa-project.org|Progetto ALSA]].

 1. Installare il pacchetto DebianPkg:alsa-utils: {{{
$ su
# aptitude update && aptitude install alsa-utils
# exit
}}}
 1. Recuperare un archivio tar alsa-firmware (≥ v1.0.28) dal server del progetto ALSA, per esempio: {{{
$ wget ftp://ftp.alsa-project.org/pub/firmware/alsa-firmware-1.0.28.tar.bz2
}}}
 1. Estrarre l'archivio tar, per esempio: {{{
$ tar xvf alsa-firmware-1.0.28.tar.bz2
}}}
 1. Installare il firmware nel proprio sistema, per esempio: {{{
$ cd alsa-firmware-1.0.28/cs46xx
$ su
# mkdir /lib/firmware/cs46xx
# cp ba1 cwc4630 cwcasync cwcbinhack cwcdma cwcsnoop /lib/firmware/cs46xx
}}}
 1. Ricaricare il modulo snd-cs46xx: {{{
# modprobe -r snd-cs46xx ; modprobe snd-cs46xx
}}}
 1. Se non è già stato fatto aggiungere il proprio utente al gruppo {{{audio}}}, poi disconnettersi e rifare il login nel sistema: {{{
# adduser proprio_nome_utente audio
# exit
$ exit
}}}
 1. Eseguire [[DebianMan:1/alsamixer|alsamixer(1)]] per togliere l'impostazione di muto ai canali ed alzare i livelli del volume.
 1. Testare il dispositivo audio, per esempio: {{{
$ aplay /usr/share/sounds/alsa/Noise.wav
$ speaker-test -t sine -f 440 -c 2
$ speaker-test -t wav -c 2
}}}

Traduzioni: English - Français - Italiano


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

Questa pagina descrive come abilitare su Debian il supporto per i dispositivi audio basati sui chipset CS46xx.

snd-cs46xx è un modulo del kernel Linux che supporta i controller audio Sound Fusion CS46xx di Cirrus Logic. È un driver ALSA incluso nel kernel Linux.

Da linux-2.6 2.6.23-1, il pacchetto binario del firmware di questo driver è stato rimosso a causa di problemi di licenza. Il driver è stato in tale occasione disabilitato. Il firmware è stato inoltre rimosso dal pacchetto alsa-source per risolvere il bug 483918.

In linux-2.6 2.6.31-1~experimental.1, il driver snd-cs46xx è stato reinserito e modificato per utilizzare il firmware in spazio utente (risolvendo il bug 464197).

In Linux 3.14 il firmware solo binario è stato spostato fuori dall'albero del kernel, con il driver modificato in modo da caricarlo esternamente. Il firmware del dispositivo fa parte dei rilasci di ALSA a partire dalla versione 1.0.28.1

Il firmware non può essere distribuito dal progetto Debian in quanto il driver snd-cs46xx non ha una licenza.2 È stata richiesta una licenza di libera ridistribuzione a Cirrus Logic.3

Installazione

Debian 7 "Wheezy", Debian 6.0 "Squeeze"

Per l'uso del dispositivo è richiesta l'aggiunta di un firmware.

  1. Installare i pacchetti alsa-base, alsa-utils e build-essential:

    $ su
    # aptitude update && aptitude install alsa-base alsa-utils build-essential
    # exit
  2. Scaricare il file cs46xx_image.h dal ramo del kernel di Linus:

    $ wget https://raw.github.com/torvalds/linux/v3.2/sound/pci/cs46xx/cs46xx_image.h
  3. Scaricare il codice sorgente di un programma per creare il firmware da cs46xx_image.h:

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

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

    $ patch -i cs46xx_image.diff
  6. Compilare il programma write_images:

    $ gcc -o write_images write_images.c
  7. Eseguirlo per creare il firmware:

    $ ./write_images
  8. Installare il firmware:

    $ su
    # mkdir /lib/firmware/cs46xx
    # cp cs46xx/cs46xx-old.fw /lib/firmware/cs46xx
  9. Ricaricare il modulo snd-cs46xx:

    # modprobe -r snd-cs46xx ; modprobe snd-cs46xx
  10. Se non già effettuato, aggiungere l'account utente al gruppo audio e rieffettuare il login al sistema:

    # adduser nome_utente audio
    # exit
    $ exit
  11. Eseguire alsamixer(1) per riattivare i canali e alzare i livelli del volume.

  12. Provare il dispositivo, usando ad esempio:

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

Risoluzione dei problemi

  • Esaminare il ring buffer del kernel (dmesg(1)) per verificare che il firmware sia stato caricato.

    • Se viene mostrato qualcosa di simile:

      [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

      Il firmware non è nel formato corretto.

      • Assicurarsi che la patch per cs46xx_image.h sia applicata prima di compilare write_images.c.

      • Assicurarsi che write_images sia eseguito su un sistema dove la variabile unsigned long è little-endian 32-bit.

Debian 8 "Jessie"

Per usare il dispositivo è necessario fornire diversi file del firmware che possono essere recuperati dal Progetto ALSA.

  1. Installare il pacchetto alsa-utils:

    $ su
    # aptitude update && aptitude install alsa-utils
    # exit
  2. Recuperare un archivio tar alsa-firmware (≥ v1.0.28) dal server del progetto ALSA, per esempio:

    $ wget ftp://ftp.alsa-project.org/pub/firmware/alsa-firmware-1.0.28.tar.bz2
  3. Estrarre l'archivio tar, per esempio:

    $ tar xvf alsa-firmware-1.0.28.tar.bz2
  4. Installare il firmware nel proprio sistema, per esempio:

    $ cd alsa-firmware-1.0.28/cs46xx
    $ su
    # mkdir /lib/firmware/cs46xx
    # cp ba1 cwc4630 cwcasync cwcbinhack cwcdma cwcsnoop /lib/firmware/cs46xx
  5. Ricaricare il modulo snd-cs46xx:

    # modprobe -r snd-cs46xx ; modprobe snd-cs46xx
  6. Se non è già stato fatto aggiungere il proprio utente al gruppo audio, poi disconnettersi e rifare il login nel sistema:

    # adduser proprio_nome_utente audio
    # exit
    $ exit
  7. Eseguire alsamixer(1) per togliere l'impostazione di muto ai canali ed alzare i livelli del volume.

  8. Testare il dispositivo audio, per esempio:

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

Dispositivi supportati

Consultare la pagina che spiega come identificare un dispositivo PCI.

L'elenco seguente è basato sui campi alias del comando modinfo snd-cs46xx su Debian con il kernel 3.2.0 (3.2.65-1+deb7u2).

  • 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]

Si veda anche


CategoryHardware | CategorySound