7.2. Configurer une carte son

Contribution de Moses Moore. Augmentée pour FreeBSD 5.X par Marc Fonvieille.

7.2.1. Configuration du système

Avant que vous commenciez, vous devriez connaître le modèle de carte son que vous avez, la puce qu'elle utilise, et si c'est une carte PCI ou ISA. FreeBSD supporte une grande variété de cartes PCI et ISA. Consultez la liste des périphériques audio supportés des notes de compatibilité matériel pour voir si votre carte est supportée. Ce document indiquera également quel pilote supporte votre carte.

Pour utiliser votre carte son, vous devrez charger le pilote de périphérique approprié. Cela peut être fait de deux façons. La plus simple est de charger le module pour votre carte son avec kldload(8), ce qui peut être soit fait à partir de la ligne de commande:

# kldload snd_emu10k1

soit en ajoutant la ligne appropriée dans le fichier /boot/loader.conf comme cela:

snd_emu10k1_load="YES"

Ces exemples concernent la carte Creative SoundBlaster® Live!. Les autres modules son chargeables sont listés dans /boot/defaults/loader.conf. Si vous n'êtes pas sûr du pilote à utiliser, vous pouvez tenter de charger le pilote snd_driver:

# kldload snd_driver

C'est un méta-pilote chargeant directement les pilotes les plus courants. Cela accélère la recherche du pilote adapté. Il est également possible de charger l'intégralité des pilotes de cartes son en utilisant le système /boot/loader.conf.

Note : Pour charger tous les pilotes sous FreeBSD 4.X, vous devez charger le module snd au lieu de snd_driver.

Une seconde méthode est de compiler le support pour votre carte son en statique dans votre noyau. La section ci-dessous fournit les informations nécessaires pour ajouter le support de votre matériel de cette manière. Pour plus d'informations au sujet de la recompilation de votre noyau, veuillez consulter le Chapitre 8.

7.2.1.1. Configurer un noyau sur mesure avec support du son

La première chose à effectuer est d'ajouter au noyau le pilote de périphérique audio générique sound(4), pour cela vous devrez ajouter la ligne suivante au fichier de configuration du noyau:

device sound

Sous FreeBSD 4.X, vous utiliseriez la ligne suivante:

device pcm

Ensuite nous devons ajouter le support pour votre carte son. Par conséquent, nous devons savoir quel pilote supporte la carte. Consultez la liste des périphériques audio supportés des notes de compatibilité matériel pour déterminer le pilote correct pour votre carte son. Par exemple, une carte son Creative SoundBlaster Live! est supportée par le pilote snd_emu10k1(4). Pour ajouter le support pour cette carte, utilisez ce qui suit:

device "snd_emu10k1"

Assurez-vous de lire la page de manuel du pilote pour la syntaxe à utiliser. Des informations concernants la syntaxe des pilotes de cartes son dans la configuration du noyau peuvent être également trouvées dans le fichier /usr/src/sys/conf/NOTES (/usr/src/sys/i386/conf/LINT pour FreeBSD 4.X).

Les cartes ISA non-PnP pourront nécessiter de fournir au noyau des informations sur le paramétrage de la carte son (IRQ, port d'E/S, etc.). Cela s'effectue par l'intermédiaire du fichier /boot/device.hints. Au démarrage du système, le chargeur (loader(8)) lira ce fichier et passera les paramètres au noyau. Par exemple, une vieille carte ISA non-PnP Creative SoundBlaster 16 utilisera le pilote snd_sbc(4), avec la ligne suivante ajoutée au fichier de configuration du noyau:

device snd_sbc

avec également ce qui suit dans le fichier /boot/device.hints:

hint.sbc.0.at="isa"
hint.sbc.0.port="0x220"
hint.sbc.0.irq="5"
hint.sbc.0.drq="1"
hint.sbc.0.flags="0x15"

Dans ce cas, la carte utilise le port d'E/S 0x220 et l'IRQ 5.

La syntaxe utilisée dans le fichier /boot/device.hints est abordée dans la page de manuel du pilote de la carte son. Sous FreeBSD 4.X, ces paramètres sont directement écrits dans le fichier de configuration du noyau. Dans le cas de notre carte ISA, nous utiliserions uniquement la ligne:

device sbc0 at isa? port 0x220 irq 5 drq 1 flags 0x15

Les paramétres donnés ci-dessus sont ceux par défaut. Dans certains cas, vous pouvez avoir besoin de modifier l'IRQ ou tout autre paramétre en fonction de votre carte son. Consultez la page de manuel snd_sbc(4) pour plus d'informations.

Note : Sous FreeBSD 4.X, certains systèmes avec la carte son intégrée à la carte mère auront peut-être besoin de l'option suivante dans la configuration du noyau:

options PNPBIOS

7.2.2. Tester la carte son

Après avoir redémarré avec le noyau modifié, ou après avoir chargé le module nécessaire, la carte son devrait apparaître dans le tampon des messages du système (dmesg(8)) d'un manière proche de la suivante:

pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff irq 5 at device 31.5 on pci0
pcm0: [GIANT-LOCKED]
pcm0: <Cirrus Logic CS4205 AC97 Codec>

L'état de la carte son peut être contrôlée par l'intermédiaire du fichier /dev/sndstat:

# cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz 16384
kld snd_ich (1p/2r/0v channels duplex default)

Le résultat pourra être différent sur votre système. Si aucun périphérique pcm n'apparaît, retournez en arrière et revoyez ce qui a été fait précedemment. Contrôlez à nouveau votre fichier de configuration du noyau et vérifiez que vous avez choisi le périphérique correct. Les problèmes courants sont listés dans la Section 7.2.2.1.

Si tout va bien, vous devriez avoir maintenant une carte son qui fonctionne. Si votre lecteur de CD-ROM ou de DVD-ROM est correctement relié à votre carte son, vous pouvez introduire un CD dans le lecteur et le jouer avec cdcontrol(1):

% cdcontrol -f /dev/acd0 play 1

Diverses applications, comme audio/workman offrent une meilleure interface. Vous pouvez vouloir installer une application comme audio/mpg123 pour écouter des fichiers audio MP3. Une méthode rapide pour tester la carte est d'envoyer des données au /dev/dsp, de la manière suivante:

% cat filename > /dev/dsp

filename peut être n'importe quel fichier. Cette ligne de commande devrait produire des sons, confirmant le bon fonctionnement de la carte son.

Note : Les utilisateurs de FreeBSD 4.X doivent créer les fichiers spéciaux de périphérique de la carte son pour être en mesure de l'utiliser. Si la carte est apparue dans les messages du système en tant que pcm0, vous devrez faire en tant que root ce qui suit:

# cd /dev
# sh MAKEDEV snd0

Si la commande a donné pcm1, suivez les mêmes étapes qu'au-dessus, en remplaçant snd0 par snd1.

MAKEDEV créera un ensemble de fichiers de spéciaux de périphérique qui seront utilisés par les différentes applications relatives à la carte son.

Les niveaux du mixer de la carte son peuvent être modifiés par la commande mixer(8). Plus de détails peuvent être trouvés dans la page de manuel mixer(8).

7.2.2.1. Problèmes courants

Erreur Solution
unsupported subdevice XX

Un ou plusieurs fichiers spéciaux de périphérique n'ont pas été créés correctement. Répétez les étapes précédentes.

sb_dspwr(XX) timed out

Le port d'E/S n'est pas configuré correctement.

bad irq XX

L'IRQ sélectionnée est incorrecte. Vérifiez que l'IRQ choisie et l'IRQ de la carte son sont les mêmes.

xxx: gus pcm not attached, out of memory

Il n'y a pas suffisamment de mémoire disponible pour utiliser ce périphérique.

xxx: can't open /dev/dsp!

Vérifiez avec la commande fstat | grep dsp si une autre application maintient le périphérique ouvert. Souvent à l'origine de ce type de problème on trouve esound et le support son de KDE.

7.2.3. Utiliser des sources sonores multiples

Contribution de Munish Chopra.

Il est souvent intéressant de pouvoir jouer simultanément du son à partir de multiples sources, comme lorsque esound ou artsd ne supportent pas le partage du périphérique son avec certaines applications.

FreeBSD vous permet de le faire par l'intermédiaire de Canaux Sonores Virtuels, qui peuvent être configurés avec la fonction sysctl(8). Les canaux virtuels vous permettent de multiplexer les canaux de sortie de votre carte son en mixant le son au niveau du noyau.

Pour configurer le nombre de canaux virtuels, il existe deux paramètres de sysctl qui, si vous avez les privilèges de l'utilisateur root, peuvent être configurés comme ceci:

# sysctl hw.snd.pcm0.vchans=4
# sysctl hw.snd.maxautovchans=4

L'exemple ci-dessus alloue quatre canaux virtuels, ce qui est un nombre suffisant pour une utilisation classique. hw.snd.pcm0.vchans est le nombre de canaux virtuels que possède pcm0, et est configurable une fois que le périphérique a été attaché au système. hw.snd.maxautovchans est le nombre de canaux virtuels alloués à un nouveau périphérique audio quand il est attaché à l'aide de kldload(8). Comme le module pcm peut être chargé indépendamment des pilotes de périphériques, hw.snd.maxautovchans peut stocker combien de canaux virtuels seront alloués à chaque périphérique attaché par la suite.

Si vous n'utilisez pas devfs(5), vous devrez faire pointer vos applications sur /dev/dsp0.x, où x est 0 à 3 si hw.snd.pcm.0.vchans est fixé à 4. Sur un système utilisant devfs(5), ce qui précède sera automatiquement effectué de façon transparente pour l'utilisateur.

7.2.4. Définir les valeurs par défaut du mixeur des différents canaux

Contribution de Josef El-Rayes.

Les valeurs par défaut du mixeur des différents canaux sont fixées en dur dans le code source du pilote pcm(4). Il existe de nombreuses applications et ``daemons'' qui vous permettent de fixer les valeurs du mixeur, les mémorisent et les refixent à chaque fois qu'ils sont lancés, mais ce n'est pas une solution idéale, nous désirons régler les valeurs par défaut au niveau du pilote. Ceci se fait en définissant les valeurs adéquates dans le fichier /boot/device.hints. Par exemple:

hint.pcm.0.vol="100"

Cela fixera le volume du canal à une valeur par défaut de 100; dès que le module pcm(4) est chargé.

Note : Seules FreeBSD 5.3 et les versions suivantes supportent cette particularité.

Ce document, ainsi que d'autres peut être téléchargé sur ftp.FreeBSD.org/pub/FreeBSD/doc/.

Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:14