[Son] Ne fonctionne plus depuis màj noyau 3.1 (résolu)

Reconnaissance et configuration du matériel / kernel linux
Gemini
Hankyu
Messages : 20
Inscription : mar. 15 nov. 2011, 22:05

[Son] Ne fonctionne plus depuis màj noyau 3.1 (résolu)

Message par Gemini »

Bonsoir,

depuis la mise à jour vers le noyau 3.1, le son ne fonctionne plus. Pas mieux avec la 3.1.1. Elle fonctionnait parfaitement auparavant. Pour être plus précis, quand j’indique que le son ne fonctionne plus, il est à un niveau extrêmement faible bien que tous les canaux de la carte soient quasiment au maximum. Par ailleurs, avec ces mêmes réglages, cela fonctionne bien avec un noyau dont la version est inférieure à la 3.1 (3.0.7 est le dernier fonctionnel).

Le système de son utilisé est Alsa.

La carte son est la suivante :

Code : Tout sélectionner

02:01.0 Audio device: VIA Technologies, Inc. VT8237A/VT8251 HDA Controller (rev 10)
	Subsystem: VIA Technologies, Inc. VT8237A/VT8251 HDA Controller
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 32 bytes
	Interrupt: pin A routed to IRQ 40
	Region 0: Memory at febfc000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: <access denied>
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd-hda-intel
D’autres personnes ont-elles le même problème ? Que me suggérez-vous ? Bien entendu, en attendant mieux, j’ai la solution de repli de remettre un noyau 3.0.7 mais j’espère trouver une meilleure solution.
Dernière modification par Gemini le ven. 02 déc. 2011, 21:33, modifié 1 fois.
Avatar de l’utilisateur
mélodie
Maître du Kyudo
Messages : 2784
Inscription : lun. 30 oct. 2006, 02:06
Localisation : Pyrénées

Re: [Son] Ne fonctionne plus depuis mise à jour noyau 3.1

Message par mélodie »

En effet, si tu ne trouves pas de solution tu devras trancher. Cela semble bleeding edge !

As-tu envisagé ou essayé de reconfigurer ton son complètement ?
Gemini
Hankyu
Messages : 20
Inscription : mar. 15 nov. 2011, 22:05

Re: [Son] Ne fonctionne plus depuis mise à jour noyau 3.1

Message par Gemini »

Je ne sais pas si l’on peut considérer cela comme une reconfiguration intégrale, mais j’ai exécuté la commande alsaconf en tant que super-utilisateur, sans grand succès. Il y avait peut-être d’autres manipulations à effectuer, ou d’autres fichiers de configuration à modifier mais je ne me souviens pas avoir lu de telles instructions lors de la mise à jour.
Avatar de l’utilisateur
drs
archer de cavalerie
Messages : 158
Inscription : ven. 15 sept. 2006, 06:47

Re: [Son] Ne fonctionne plus depuis mise à jour noyau 3.1

Message par drs »

Code : Tout sélectionner

wget www.alsa-project.org/alsa-info.sh && chmod +x alsa-info.sh && ./alsa-info.sh --upload
en copiant le lien ici
Gemini
Hankyu
Messages : 20
Inscription : mar. 15 nov. 2011, 22:05

Re: [Son] Ne fonctionne plus depuis mise à jour noyau 3.1

Message par Gemini »

Intéressant ce script. Je ne connaissais pas. Ci-dessous, le lien exécuté depuis le noyau en version 3.0.7 (version avec laquelle le son fonctionne normalement).

http://www.alsa-project.org/db/?f=083e5 ... 1a935a2266
Avatar de l’utilisateur
drs
archer de cavalerie
Messages : 158
Inscription : ven. 15 sept. 2006, 06:47

Re: [Son] Ne fonctionne plus depuis mise à jour noyau 3.1

Message par drs »

hmm il serait interessant d'avoir aussi l'autre version, quand ca marche pas :P
Gemini
Hankyu
Messages : 20
Inscription : mar. 15 nov. 2011, 22:05

Re: [Son] Ne fonctionne plus depuis mise à jour noyau 3.1

Message par Gemini »

Avatar de l’utilisateur
drs
archer de cavalerie
Messages : 158
Inscription : ven. 15 sept. 2006, 06:47

Re: [Son] Ne fonctionne plus depuis mise à jour noyau 3.1

Message par drs »

a priori certains de tes canaux se sont retrouves etre renommes entre le passage de .0 a .1, as-tu verifie avec alsamixer qu'aucun canal n'etait mute ni tres bas (dont le nom a peut-etre change donc)
Gemini
Hankyu
Messages : 20
Inscription : mar. 15 nov. 2011, 22:05

Re: [Son] Ne fonctionne plus depuis mise à jour noyau 3.1

Message par Gemini »

À moins que la commande alsamixer ne me cache quelque sorties, je les ai toutes montées à fond :/
Avatar de l’utilisateur
drs
archer de cavalerie
Messages : 158
Inscription : ven. 15 sept. 2006, 06:47

Re: [Son] Ne fonctionne plus depuis mise à jour noyau 3.1

Message par drs »

tu as verifie qu'ils n'etaient pas mutes aussi (mute/unmute avec la touche m)? desole d'insister mais autant etre sur de notre coup avant de nous engager dans une autre voie :)
Gemini
Hankyu
Messages : 20
Inscription : mar. 15 nov. 2011, 22:05

Re: [Son] Ne fonctionne plus depuis mise à jour noyau 3.1

Message par Gemini »

Aucun canal n’est muté, sauf celui nommé « Jack detect », mais il me semble qu’il n’a aucun rapport avec mon problème. J’ai tout de même tenté de l’activer pour en être certain, sans résultat.
Avatar de l’utilisateur
drs
archer de cavalerie
Messages : 158
Inscription : ven. 15 sept. 2006, 06:47

Re: [Son] Ne fonctionne plus depuis mise à jour noyau 3.1

Message par drs »

est-ce que tu sais appliquer un patch? si tu as besoin d'un coup de main, dis le moi. a priori, tu as decouvert un bug, bravo :bravo:
I guess this is actually a bug fix.
The line-outs have to be muted when the headphone jack is plugged, but
it didn't work for vt1708 in 3.0 or earlier.

The "Jack Detect" control changes only the aa-mute, so it's a bit
confusing, though. The patch below should fix the inconsistent
behavior of this control. Give it a try.


thanks,

Takashi

Code : Tout sélectionner

---
diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c
index 431c0d4..d8b4403 100644
--- a/sound/pci/hda/patch_via.c
+++ b/sound/pci/hda/patch_via.c
@@ -309,22 +309,26 @@ static void vt1708_start_hp_work(struct via_spec *spec)
 {
 	if (spec->codec_type != VT1708 || spec->autocfg.hp_pins[0] == 0)
 		return;
+	if (!spec->active_streams)
+		return;
 	snd_hda_codec_write(spec->codec, 0x1, 0, 0xf81,
 			    !spec->vt1708_jack_detect);
-	if (!delayed_work_pending(&spec->vt1708_hp_work))
+	if (spec->vt1708_jack_detect &&
+	    !delayed_work_pending(&spec->vt1708_hp_work))
 		schedule_delayed_work(&spec->vt1708_hp_work,
 				      msecs_to_jiffies(100));
 }
 
-static void vt1708_stop_hp_work(struct via_spec *spec)
+static void vt1708_stop_hp_work(struct via_spec *spec, bool force)
 {
 	if (spec->codec_type != VT1708 || spec->autocfg.hp_pins[0] == 0)
 		return;
 	if (snd_hda_get_bool_hint(spec->codec, "analog_loopback_hp_detect") == 1
 	    && !is_aa_path_mute(spec->codec))
 		return;
-	snd_hda_codec_write(spec->codec, 0x1, 0, 0xf81,
-			    !spec->vt1708_jack_detect);
+	if (spec->active_streams && !force)
+		return;
+	snd_hda_codec_write(spec->codec, 0x1, 0, 0xf81, 1);
 	cancel_delayed_work_sync(&spec->vt1708_hp_work);
 }
 
@@ -347,7 +351,7 @@ static int analog_input_switch_put(struct snd_kcontrol *kcontrol,
 		if (is_aa_path_mute(codec))
 			vt1708_start_hp_work(codec->spec);
 		else
-			vt1708_stop_hp_work(codec->spec);
+			vt1708_stop_hp_work(codec->spec, false);
 	}
 	return change;
 }
@@ -1188,7 +1192,7 @@ static int via_playback_multi_pcm_cleanup(struct hda_pcm_stream *hinfo,
 	snd_hda_multi_out_analog_cleanup(codec, &spec->multiout);
 	spec->active_streams &= ~STREAM_MULTI_OUT;
 	mutex_unlock(&spec->config_mutex);
-	vt1708_stop_hp_work(spec);
+	vt1708_stop_hp_work(spec, false);
 	return 0;
 }
 
@@ -1203,7 +1207,7 @@ static int via_playback_hp_pcm_cleanup(struct hda_pcm_stream *hinfo,
 		snd_hda_codec_setup_stream(codec, spec->hp_dac_nid, 0, 0, 0);
 	spec->active_streams &= ~STREAM_INDEP_HP;
 	mutex_unlock(&spec->config_mutex);
-	vt1708_stop_hp_work(spec);
+	vt1708_stop_hp_work(spec, false);
 	return 0;
 }
 
@@ -1598,7 +1602,7 @@ static void via_free(struct hda_codec *codec)
 		return;
 
 	via_free_kctls(codec);
-	vt1708_stop_hp_work(spec);
+	vt1708_stop_hp_work(spec, true);
 	kfree(spec->bind_cap_vol);
 	kfree(spec->bind_cap_sw);
 	kfree(spec);
@@ -1725,7 +1729,7 @@ static void via_unsol_event(struct hda_codec *codec,
 static int via_suspend(struct hda_codec *codec, pm_message_t state)
 {
 	struct via_spec *spec = codec->spec;
-	vt1708_stop_hp_work(spec);
+	vt1708_stop_hp_work(spec, true);
 	return 0;
 }
 #endif
@@ -2633,7 +2637,9 @@ static int vt1708_jack_detect_put(struct snd_kcontrol *kcontrol,
 	if (spec->vt1708_jack_detect) {
 		mute_aa_path(codec, 1);
 		notify_aa_path_ctls(codec);
-	}
+		vt1708_start_hp_work(spec);
+	} else
+		vt1708_stop_hp_work(spec, false);
 	return change;
 }
Avatar de l’utilisateur
drs
archer de cavalerie
Messages : 158
Inscription : ven. 15 sept. 2006, 06:47

Re: [Son] Ne fonctionne plus depuis mise à jour noyau 3.1

Message par drs »

bon si jamais ca te saoule de le faire, j'ai recompile les modules patches:
http://ompldr.org/vYmR6dQ/updates.tar.bz2
sha256 e0296eb8cedacb0ddd6eaf6e1aa22334c1b802316a52107a41b4707ff7e7b87d updates.tar.bz2

tout ce que t'as a faire c'est ca:

Code : Tout sélectionner

$ sudo pacman -S linux
$ wget http://ompldr.org/vYmR6dQ/updates.tar.bz2
$ sudo tar xvjf updates.tar.bz2 -C /lib/modules/3.1.1-1-ARCH/
$ sudo depmod
il faudrait ensuite reloader les modules patches (rmmod ou modprobe -r ou reboot tout simplement)
/edit: obligation de rebooter si tu etais encore en 3.0.7 bien sur.

/edit: balises code
Dernière modification par drs le lun. 21 nov. 2011, 21:19, modifié 1 fois.
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Son] Ne fonctionne plus depuis mise à jour noyau 3.1

Message par FoolEcho »

[HorsSujet]

Fichtre. On a un spécialiste ès-compilation-de-kernel-et-modules-en-tous-genres... Héritage gentoo ? :D
... par contre, *s'étonne que personne n'ait encore fait la remarque*: fâché avec les accents (ou clavier anglophone) ? :pastaper: :merci:

Juste pour être chieur et un brin paranoïaque: j'aime pô quand tu proposes la copie directe dans le système de fichiers (plus propre/facile à maintenir par PKGBUILDS, pacman... tout ça...). :P

[/HorsSujet]
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
drs
archer de cavalerie
Messages : 158
Inscription : ven. 15 sept. 2006, 06:47

Re: [Son] Ne fonctionne plus depuis mise à jour noyau 3.1

Message par drs »

Héritage gentoo ? :D
nan, archer pur sucre :)
(ou clavier anglophone) ?
:chinois:
Juste pour être chieur et un brin paranoïaque: j'aime pô quand tu proposes la copie directe dans le système de fichiers (plus propre/facile à maintenir par PKGBUILDS, pacman... tout ça...). :P
mon archive fait 88K mais bon, on est pas a 74M pres :P

Code : Tout sélectionner

# pacman -S base-devel
$ cd
$ wget http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.1.1.tar.bz2
$ tar xvjf linux-3.1.1.tar.bz2
$ cd linux-3.1.1
$ cat > via.patch << "EOF"
---
diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c
index 431c0d4..d8b4403 100644
--- a/sound/pci/hda/patch_via.c
+++ b/sound/pci/hda/patch_via.c
@@ -309,22 +309,26 @@ static void vt1708_start_hp_work(struct via_spec *spec)
 {
        if (spec->codec_type != VT1708 || spec->autocfg.hp_pins[0] == 0)
                return;
+       if (!spec->active_streams)
+               return;
        snd_hda_codec_write(spec->codec, 0x1, 0, 0xf81,
                            !spec->vt1708_jack_detect);
-       if (!delayed_work_pending(&spec->vt1708_hp_work))
+       if (spec->vt1708_jack_detect &&
+           !delayed_work_pending(&spec->vt1708_hp_work))
                schedule_delayed_work(&spec->vt1708_hp_work,
                                      msecs_to_jiffies(100));
 }
 
-static void vt1708_stop_hp_work(struct via_spec *spec)
+static void vt1708_stop_hp_work(struct via_spec *spec, bool force)
 {
        if (spec->codec_type != VT1708 || spec->autocfg.hp_pins[0] == 0)
                return;
        if (snd_hda_get_bool_hint(spec->codec, "analog_loopback_hp_detect") == 1
            && !is_aa_path_mute(spec->codec))
                return;
-       snd_hda_codec_write(spec->codec, 0x1, 0, 0xf81,
-                           !spec->vt1708_jack_detect);
+       if (spec->active_streams && !force)
+               return;
+       snd_hda_codec_write(spec->codec, 0x1, 0, 0xf81, 1);
        cancel_delayed_work_sync(&spec->vt1708_hp_work);
 }
 
@@ -347,7 +351,7 @@ static int analog_input_switch_put(struct snd_kcontrol *kcontrol,
                if (is_aa_path_mute(codec))
                        vt1708_start_hp_work(codec->spec);
                else
-                       vt1708_stop_hp_work(codec->spec);
+                       vt1708_stop_hp_work(codec->spec, false);
        }
        return change;
 }
@@ -1188,7 +1192,7 @@ static int via_playback_multi_pcm_cleanup(struct hda_pcm_stream *hinfo,
        snd_hda_multi_out_analog_cleanup(codec, &spec->multiout);
        spec->active_streams &= ~STREAM_MULTI_OUT;
        mutex_unlock(&spec->config_mutex);
-       vt1708_stop_hp_work(spec);
+       vt1708_stop_hp_work(spec, false);
        return 0;
 }
 
@@ -1203,7 +1207,7 @@ static int via_playback_hp_pcm_cleanup(struct hda_pcm_stream *hinfo,
                snd_hda_codec_setup_stream(codec, spec->hp_dac_nid, 0, 0, 0);
        spec->active_streams &= ~STREAM_INDEP_HP;
        mutex_unlock(&spec->config_mutex);
-       vt1708_stop_hp_work(spec);
+       vt1708_stop_hp_work(spec, false);
        return 0;
 }
 
@@ -1598,7 +1602,7 @@ static void via_free(struct hda_codec *codec)
                return;
 
        via_free_kctls(codec);
-       vt1708_stop_hp_work(spec);
+       vt1708_stop_hp_work(spec, true);
        kfree(spec->bind_cap_vol);
        kfree(spec->bind_cap_sw);
        kfree(spec);
@@ -1725,7 +1729,7 @@ static void via_unsol_event(struct hda_codec *codec,
 static int via_suspend(struct hda_codec *codec, pm_message_t state)
 {
        struct via_spec *spec = codec->spec;
-       vt1708_stop_hp_work(spec);
+       vt1708_stop_hp_work(spec, true);
        return 0;
 }
 #endif
@@ -2633,7 +2637,9 @@ static int vt1708_jack_detect_put(struct snd_kcontrol *kcontrol,
        if (spec->vt1708_jack_detect) {
                mute_aa_path(codec, 1);
                notify_aa_path_ctls(codec);
-       }
+               vt1708_start_hp_work(spec);
+       } else
+               vt1708_stop_hp_work(spec, false);
        return change;
 }
 

EOF
$ patch -Np1 < via.patch
$ wget http://projects.archlinux.org/svntogit/packages.git/plain/trunk/config?h=packages/linux -O .config
$ make oldconfig
$ make prepare
$ make modules_prepare
$ make M=sound/pci/hda/
# pacman -S linux
# mkdir /lib/modules/3.1.1-1-ARCH/updates
# cp -v /home/<gemini>/linux-3.1.1/sound/pci/hda/*.ko /lib/modules/3.1.1-1-ARCH/updates/
# depmod -a
# shutdown -r now
j'ai fait de tete, j'espere ne rien avoir oublie :o

/edit: gemini juste au cas ou, par convention # pour root et $ pour ton utilisateur. je suis gentil j'ai pas mis de $ devant chaque ligne du patch comme ca tu peux copier/coller le patch plus facilement.

/edit: FoolEcho, ca devrait resoudre le probleme de paranoia :) par contre faire un PKGBUILD pour ca c'est un peu excessif (enfin si vraiment, dites le moi...) de toute facon, ce sont des fichiers qui sont voues a disparaitre en meme temps que le kernel 3.1.1-1-ARCH

/edit2000: pour creer mon archive, j'ai refait la config du stock kernel de arch pour n'inclure que les modules necessaires, ce qui n'est pas le cas avec la methode ci-dessus, ca change rien mais juste au cas ou quelqu'un ( :wink: ) se poserait la question
Gemini
Hankyu
Messages : 20
Inscription : mar. 15 nov. 2011, 22:05

Re: [Son] Ne fonctionne plus depuis mise à jour noyau 3.1

Message par Gemini »

Wow … que dire. Difficile de faire mieux. Merci ! Je m’en vais essayer tout ça de ce pas. Je vous tiendrais informé. DRS, comment as-tu trouvé le patch ?

Une fois celui-ci appliqué à ce noyau, je suppose que j’aurais à répéter l’opération pour les prochaines mises à jour du noyau ? Sais-tu si celui-ci sera intégré upstream prochainement ?
Gemini
Hankyu
Messages : 20
Inscription : mar. 15 nov. 2011, 22:05

Re: [Son] Ne fonctionne plus depuis mise à jour noyau 3.1

Message par Gemini »

Mince, je me suis emballé un peu vite. Étant donné la puissance de mon ordinateur, j’ai choisi la solution d’intégrer tes modules recompilés. Toutes les étapes se sont bien déroulées, mais, à la fin, lors de la recharge des bons modules, après les avoir déchargés avec modprobe -r, je me heurte à l’erreur suivante :

Code : Tout sélectionner

FATAL: Error inserting snd_hda_codec (/lib/modules/3.1.1-1-ARCH/updates/snd-hda-codec.ko): Invalid module format
Par ailleurs, en regardant le retour de dmesg, j’obtiens l’erreur suivante :

Code : Tout sélectionner

snd_hda_codec: no symbol version for module_layout
Avatar de l’utilisateur
drs
archer de cavalerie
Messages : 158
Inscription : ven. 15 sept. 2006, 06:47

Re: [Son] Ne fonctionne plus depuis mise à jour noyau 3.1

Message par drs »

t'es bien en 32bit?

tiens, ca devrait regler le probleme:
http://ompldr.org/vYmY4NQ/updates.tar.bz2
sha256 00c4a12635b00075517c4440beea540edd616783ecc6ea61d3278b2573bc3083 updates.tar.bz2

pour repondre a ta question, le patch vient de Takashi Iwai, le boss du subsystem SOUND (employe chez Novell). si on peut confirmer le fix, ca va aller direct en bugfix dans mainline (3.2-rcX). Des que c'est inclu dans l'arbre de Torvalds, ca devient un candidat pour -stable (la branche de Greg), donc on le retrouvera peut-etre dans 3.1.4 avec un peu de chance.
Gemini
Hankyu
Messages : 20
Inscription : mar. 15 nov. 2011, 22:05

Re: [Son] Ne fonctionne plus depuis mise à jour noyau 3.1

Message par Gemini »

Oui, je suis bien en 32 bits. J’ai utilisé ton nouveau paquet. Cette fois-ci, au lieu de décharger puis recharger les modules à la main (il y en a trop :p), j’ai plutôt pris le parti de redémarrer.

Hélas, ça ne fonctionne pas mieux. Par contre, il me semble avoir remarqué un nouveau soucis : lorsque je tente d’activer le canal « Jack Detect », ce n’est pas sauvegardé une fois le mixer quitté (j’utilise alsamixer).

Aujourd’hui, il y a le 3.1.2, je vais voir si cela change quelque chose ^^
Avatar de l’utilisateur
drs
archer de cavalerie
Messages : 158
Inscription : ven. 15 sept. 2006, 06:47

Re: [Son] Ne fonctionne plus depuis mise à jour noyau 3.1

Message par drs »

quand tu dis "ca ne fonctionne pas mieux" tu veux dire que 1. le son n'est toujours pas la ou que 2. les modules ne se chargent pas.

si 1, merci de booter avec ce kernel et de reposter la sortie de alsa-info.sh avec le patch.
Répondre