# [audio] Faire fonctionner un microphone (résolu)

## Neuromancien

Bonjour,

Ma question est simple : comment faire fonctionner un microphone sous Linux ? J'ai essayé d'enregistrer un son avec arecord mais je n'obtiens rien.

----------

## guilc

Heu... on branche et ça marche ?  :Laughing: 

Bon, hmmm, trêve de plaisanterie :

- tu as vérifié dans alsamixer que le canal microphone n'était pas coupé ?

- attention, si tu utilises la prise jack sur la carte son, il y a des chances que le canal soit "line-in" et pas "mic"

Essayes peut-être audacity, c'est plus user friendly que arecord aussi  :Wink: 

----------

## Neuromancien

 *guilc wrote:*   

> Heu... on branche et ça marche ? 
> 
> Bon, hmmm, trêve de plaisanterie :
> 
> - tu as vérifié dans alsamixer que le canal microphone n'était pas coupé ?
> ...

 

J'ai déjà essayé tout ça...

Les canaux Mic et Line dans alsamix sont actifs, réglés au maximum. Sous Audacity, ça ne fonctionne pas plus...

----------

## Neuromancien

Suite à ces différentes manipulations, j'ai désormais un son très bas, même lorsque le volume (alsamixer et enceintes) est au maximum...   :Sad: 

----------

## netfab

Dans ton kernel, quels pilote/codec utilises-tu pour :

```

Audio device: nVidia Corporation MCP61 High Definition Audio (rev a2)

```

Que donne :

```

# zgrep SND_HDA /proc/config.gz

```

----------

## Neuromancien

 *netfab wrote:*   

> Dans ton kernel, quels pilote/codec utilises-tu pour :
> 
> ```
> 
> Audio device: nVidia Corporation MCP61 High Definition Audio (rev a2)
> ...

 

Ca ne marche pas. J'ai fait un :

```
jerome@tux ~ $ grep SND_HDA /usr/src/linux/.config

CONFIG_SND_HDA_INTEL=m

CONFIG_SND_HDA_HWDEP=y

# CONFIG_SND_HDA_RECONFIG is not set

# CONFIG_SND_HDA_INPUT_BEEP is not set

# CONFIG_SND_HDA_INPUT_JACK is not set

# CONFIG_SND_HDA_PATCH_LOADER is not set

CONFIG_SND_HDA_CODEC_REALTEK=y

CONFIG_SND_HDA_CODEC_ANALOG=y

CONFIG_SND_HDA_CODEC_SIGMATEL=y

CONFIG_SND_HDA_CODEC_VIA=y

CONFIG_SND_HDA_CODEC_ATIHDMI=y

CONFIG_SND_HDA_CODEC_NVHDMI=y

CONFIG_SND_HDA_CODEC_INTELHDMI=y

CONFIG_SND_HDA_ELD=y

CONFIG_SND_HDA_CODEC_CIRRUS=y

CONFIG_SND_HDA_CODEC_CONEXANT=y

CONFIG_SND_HDA_CODEC_CA0110=y

CONFIG_SND_HDA_CODEC_CMEDIA=y

CONFIG_SND_HDA_CODEC_SI3054=y

CONFIG_SND_HDA_GENERIC=y

# CONFIG_SND_HDA_POWER_SAVE is not set
```

----------

## Neuromancien

 *Neuromancien wrote:*   

>  *netfab wrote:*   Dans ton kernel, quels pilote/codec utilises-tu pour :
> 
> ```
> 
> Audio device: nVidia Corporation MCP61 High Definition Audio (rev a2)
> ...

 

La config complète de mon kernel

----------

## netfab

A mon avis, tu ne devrais pas avoir autant de codecs sélectionnés.

Normalement tu ne devrais avoir que celui correspondant à ton matériel (et encore...).

Pour savoir quel codec est actuellement utilisé :

```

$ head -n 1 /proc/asound/card0/codec#0

```

Maintenant, voici une expérience qui m'est arrivée. Comme carte son j'ai :

```

# lspci | grep Audio

80:01.0 Audio device: VIA Technologies, Inc. VT1708/A [Azalia HDAC] (VIA High Definition Audio Controller) (rev 10)

```

Dans mon kernel, depuis des lustres, j'avais donc naturellement sélectionné :

```

[*]   Build VIA HD-audio codec support

```

Il y a quelques temps j'ai voulu numériser des disques vinyle, je branche donc une platine tourne-disque sur ma carte son, et en avant.

Après plusieurs essais, le mieux que j'arrivais à obtenir etait une capture avec un volume extrèmement bas, quasiment inaudible.

M'est venue l'idée (je ne sais plus trop comment) de changer le codec pour :

```

[*]   Build Realtek HD-audio codec support

```

Donc recompilation du kernel et reboot. Depuis, j'ai des canaux supplémentaires qui sont apparus dans alsamixer, et la capture audio fonctionne parfaitement.

Tout ceci pour dire qu'avec ta dizaine de codecs sélectionnés et compilés en dur, pas certain que ce soit le bon qui soit utilisé.

----------

## Neuromancien

 *netfab wrote:*   

> A mon avis, tu ne devrais pas avoir autant de codecs sélectionnés.
> 
> Normalement tu ne devrais avoir que celui correspondant à ton matériel (et encore...).
> 
> Pour savoir quel codec est actuellement utilisé :
> ...

 

```
jerome@tux ~ $ head -n 1 /proc/asound/card0/codec#0 

Codec: Realtek ALC662 rev1
```

Je peux déselectionner les autres mais je ne vois pas pourquoi ça fonctionnerait mieux.

----------

## Neuromancien

J'ai compilé les codecs en modules et ça fonctionne.

----------

## netfab

 *Neuromancien wrote:*   

> Je peux déselectionner les autres mais je ne vois pas pourquoi ça fonctionnerait mieux.

 

Pour la même raison que je me vois utiliser un codec qui n'est pas censé être pour mon matériel.

Maintenant, j'ai simplement survolé la doc fournie avec le kernel :

 *Quote:*   

> 
> 
> /usr/src/linux/Documentation/sound/alsa/hda_codec.txt
> 
> /usr/src/linux/Documentation/sound/alsa/HD-Audio-Models.txt
> ...

 

Les réponses s'y trouvent probablement, mais je ne m'y suis pas penché.

----------

## guilc

+1

et le fait que cela fonctionne en module tend à montrer que c'est la même chose qui se passait : en dur ça marche très certainement aussi, en sélectionnait uniquement le bon codec. Vraisemblablement un conflit du même type.

En module, c'est l'init alsa qui va charger le module qui va bien. Et ce cet init ne doit pas se planter, alors qu'il y a visiblement un conflit de codec quand ils sont tous en dur  :Wink: 

----------

