Page 1 sur 2

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

Publié : mar. 15 nov. 2011, 22:11
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.

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

Publié : mar. 15 nov. 2011, 23:45
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 ?

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

Publié : jeu. 17 nov. 2011, 21:36
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.

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

Publié : ven. 18 nov. 2011, 08:51
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

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

Publié : ven. 18 nov. 2011, 21:25
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

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

Publié : ven. 18 nov. 2011, 21:33
par drs
hmm il serait interessant d'avoir aussi l'autre version, quand ca marche pas :P

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

Publié : sam. 19 nov. 2011, 07:49
par Gemini

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

Publié : sam. 19 nov. 2011, 08:41
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)

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

Publié : sam. 19 nov. 2011, 13:30
par Gemini
À moins que la commande alsamixer ne me cache quelque sorties, je les ai toutes montées à fond :/

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

Publié : sam. 19 nov. 2011, 13:33
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 :)

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

Publié : dim. 20 nov. 2011, 09:50
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.

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

Publié : lun. 21 nov. 2011, 19:20
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;
 }

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

Publié : lun. 21 nov. 2011, 20:31
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

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

Publié : lun. 21 nov. 2011, 20:44
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]

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

Publié : lun. 21 nov. 2011, 21:10
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

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

Publié : mer. 23 nov. 2011, 21:14
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 ?

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

Publié : mer. 23 nov. 2011, 22:04
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

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

Publié : jeu. 24 nov. 2011, 00:01
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.

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

Publié : jeu. 24 nov. 2011, 22:03
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 ^^

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

Publié : ven. 25 nov. 2011, 06:13
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.