Problèmes (et solutions) de carte Audio sous FreeBSD

Ci-dessous une liste des problèmes de carte son (avec leur solution s’il y’a) sous FreeBSD 8.0, 9.0 ou 9.2

1- Aucun son, la carte ne fonctionne pas:

Vérifiez que la carte est bien reconnue:

$ cat /dev/sndstat
FreeBSD Audio Driver (newpcm: 64bit 2009061500/amd64)
Installed devices:
pcm0: <Realtek ALC662 (Analog)> (play/rec) default
pcm1: <Realtek ALC662 (Front Analog Headphones)> (play)
pcm2: <Realtek ALC662 (Onboard Digital)> (play)

Si la commande n’affiche rien, le driver de la carte n’est probablement pas chargé. Si vous ne connaissez pas le nom du driver de votre carte son, vous pouvez charger le « metadriver » snd_driver:

$ kldload snd_driver

Le driver snd_driver charge tous les drivers de carte audio connus sur le système. Pour connaitre le driver qui a pris en charge la carte Audio, tapez la commande:

$ dmesg | grep pcm
pcm0:  at nid 20 and 24,25,26 on hdaa0
pcm1:  at nid 27 on hdaa0
pcm2:  at nid 30 on hdaa0

Ici, on utilise le driver snd_hda. Pour charger automatiquement le driver au démarrage:

$ echo snd_hda_load="YES" >> /boot/loader.conf

2- La carte audio est reconnue mais ça ne marche pas:

Dans l’exemple ci-dessus, la sortie audio sélectionnée est celle disponible à l’arrière de la machine:

pcm0: <Realtek ALC662 (Analog)> (play/rec) default

Si on veut utiliser la sortie SP/DIF par défaut, tapez:

$ sysctl hw.snd.default_unit=2

Pour utiliser la sortie frontale, tapez:

$ sysctl hw.snd.default_unit=1

Pour rendre la modification permanente, il suffit de l’ajouter dans le fichier /etc/sysctl.conf:

$ echo "hw.snd.default_unit=1" >> /etc/sysctl.conf

3- L’égaliseur ne fonctionne pas :

Par défaut, l’égaliseur « hardware » n’est pas actif. Pour l’activer, ajoutez les lignes suivantes dans /boot/devices.hints:

hint.pcm.0.eq="1"
hint.pcm.1.eq="1"
hint.pcm.2.eq="1"
hint.pcm.3.eq="1"

Après le reboot, activez l’égaliseur pour le périphérique audio que vous utilisez:

sysctl dev.pcm.2.eq=1

Vous devez obtenir deux nouvelles lignes avec la commande mixer:

...
Mixer bass is currently set to 100:100
Mixer treble is currently set to 50:50
...

Pour modifier l’égalisation, vous pouvez utiliser la commande mixer:

$ mixer treble 100:100
Setting the mixer treble from 50:50 to 100:100.

4- Le niveau sonore est trop faible:

Par défaut, l’atténuation est réglée à 45:

$ sysctl hw.snd.vpc_0db
hw.snd.vpc_0db : 45

Essayez une valeur plus faible qui n’augmente pas trop le bruit de fond et la distorsion. Généralement, une atténuation de 15 est un bon compromis:

$ sysctl hw.snd.vpc_0db=15

5- Le driver plante avec le message « pcm0 play interrupt timeout, channel dead »:

S’il s’agit du driver snd_hda, la solution peut être de taper:

$ echo "hint.hdac.0.msi="0"" >> /boot/device.hints
$ echo "dev.hdac.0.polling=1" >> /etc/sysctl,conf

Reboot obligatoire. Si cela ne change rien, il faudra faire un rapport de bug avec toutes les infos nécessaires (dmesg, cat /dev/sndsat, etc.).

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>