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.).