[Pluto-help] Re: REGOLE DI NETIQUETTE + ALSA

< MaNdRiCuS > mandricus a libero.it
Mar 24 Apr 2001 11:40:10 CEST


"Manuel (R)ex Sanna" ha scritto:

> Qualcuno ha una idea di come funzioni ALSA?
> (Advanced Linux Sound Architetture)
> 
> Ho bisogno di installarlo su un portatile (ACER!!!) che possiede una
> crystal, ma dato che non so se conviene caricare i moduli (e/o magari non
> solo i moduli) son il kernel 2.4.0 oppure se, anche senza caricare i
> moduli, posso mettere ALSA a bordo e fregarmene dei moduli, liberando
> ancora spazio nel KERNEL???

PREMESSA: sono assolutamente un LAMER con linux, e finora ho fatto solo domande. Prendete con le pinze quello
che scrivo qui sotto, perché potrei aver detto una cosa per un altra, visto che non ho ancora molto chiari tutta
una serie di concetti.

Io i drivers ALSA li ho dovuti utilizzare sul mio portatile Toshiba Satellite 4200 Pro. Infatti il mio portatile
ha una scheda suono Yamaha DS-XG. Cosa molto bella, l'sndconfig riconosceva la mia scheda ma......bellissimo,
appena partiva la riproduzione del campione audio linux mi si PIANTAVA. Non solo, dopo aver fatto il
riconoscimento con sndconfig, e aver resettato il computer a causa dell'impallamento che da esso derivava, il
loader di linux, non appena andava a caricare il sound-module della mia scheda audio, SI IMPALLAVA
INESORABILMENTE!. La cosa molto bella è che il caricamento del modulo sonoro avveniva PRIMA della fase di
startup interattivo, quindi non c'era modo di bloccarlo. Un altro simpaticissimo bug della Red Hat 7.0. Infatti
tutto ciò avveniva con una distro Red Hat 7.0 seconda edizione, con kernel standard.
 Dopo essere stato costretto a formattare un paio di volte, mi sono deciso ad utilizzare i drivers alsa sound.
Mi sembra di capire che vorresti sapere quali moduli utilizzano i drivers alsa sound per evitare di caricare
immondizia nel kernel. Mah, per quello che mi è sembrato di capire, una volta installatisi, i drivers alsa
sostituiscono alcune dev (ad esempio /dev/mixer) creando dei link simbolici ad altre devices installate dai
drivers. Ciò avviene lanciando uno script con ./snddevices una volta terminata la compilazione dei drivers.
Riporto qui sotto quello che ho trovato nel file snddevices.in ,magari riesci a capirci qualcosa. Il file vero e
proprio che va a farti questa operazione, snddevices, mi sa che lo crea dopo aver compilato i drivers. Io posso
dirti che ho provato a compilare un kernel senza supporto per nessuna scheda audio, perché pensavo che i drivers
alsa-sound utilizzassero dei moduli particolari ai quali poi lo script di installazione creava i link necessari,
e posso dirti che non ha funzionato. Quindi, mi è parso di capire che il supporto per -qualche- scheda audio
vada inserito nel kernel. Quale scheda? beh, questo sta a te scoprirlo analizzando questo script. Anzi, se lo
scopri fammelo sapere anche a me, che così il prossimo kernel me lo ricompilo utilizzando solo quello che
effettivamente mi serve. Grazie

SNDDEVICES.IN

#!/bin/bash

MAJOR=116
OSSMAJOR=14
MAX_CARDS=4
PERM=666
STATIC=0
OWNER=root.root

if [ "`grep -w -E "^audio" /etc/group`x" != x ]; then
  PERM=660
  OWNER=root.audio
fi

function create_odevice () {
  rm -f $1
  echo -n "Creating $1..."
  mknod -m $PERM $1 c $OSSMAJOR $2
  chown $OWNER $1
  echo " done"
}

function create_odevices () {
  tmp=0
  tmp1=0
  rm -f $1 $1?
  echo -n "Creating $1?..."
  while [ $tmp1 -lt $MAX_CARDS ]; do
    minor=$[ $2 + $tmp ]
    mknod -m $PERM $1$tmp1 c $OSSMAJOR $minor
    chown $OWNER $1$tmp1
    tmp=$[ $tmp + 16 ]
    tmp1=$[ $tmp1 + 1 ]
  done
  echo " done"
}

function create_device1 () {
  rm -f $1
  minor=$2
  echo -n "Creating $1..."
  mknod -m $PERM $1 c $MAJOR $minor
  chown $OWNER $1
  echo " done"
}

function create_devices () {
  tmp=0
  rm -f $1 $1?
  echo -n "Creating $1?..."
  while [ $tmp -lt $MAX_CARDS ]; do
    minor=$[ $tmp * 32 ]
    minor=$[ $2 + $minor ]
    mknod -m $PERM "${1}C${tmp}" c $MAJOR $minor
    chown $OWNER "${1}C${tmp}"
    tmp=$[ $tmp + 1 ]
  done
  echo " done"
}

function create_devices2 () {
  tmp=0
  rm -f $1 $1?
  echo -n "Creating $1??..."
  while [ $tmp -lt $MAX_CARDS ]; do
    tmp1=0
    while [ $tmp1 -lt $3 ]; do
      minor=$[ $tmp * 32 ]
      minor=$[ $2 + $minor + $tmp1 ]
      mknod -m $PERM "${1}C${tmp}D${tmp1}" c $MAJOR $minor
      chown $OWNER "${1}C${tmp}D${tmp1}"
      tmp1=$[ $tmp1 + 1 ]
    done
    tmp=$[ $tmp + 1 ]
  done
  echo " done"
}

if test "$1" = "-?" || test "$1" = "-h" || test "$1" = "--help"; then
  echo "Usage: snddevices [max]"
  exit
fi

if test "$1" = "max"; then
  DSP_MINOR=19
fi

# OSS (Lite) compatible devices...

if test $OSSMAJOR -eq 14; then
  create_odevices /dev/mixer		0
  create_odevice /dev/sequencer		1
  create_odevices /dev/midi		2
  create_odevices /dev/dsp		3
  create_odevices /dev/audio		4
  create_odevice /dev/sndstat		6
  create_odevice /dev/music		8
  create_odevices /dev/dmmidi		9
  create_odevices /dev/dmfm		10
  create_odevices /dev/amixer		11	# alternate mixer
  create_odevices /dev/adsp		12	# alternate dsp
  create_odevices /dev/amidi		13	# alternate midi
  create_odevices /dev/admmidi		14	# alternate direct midi
  # create symlinks
  ln -svf /dev/mixer0 /dev/mixer
  ln -svf /dev/midi0 /dev/midi
  ln -svf /dev/dsp0 /dev/dsp
  ln -svf /dev/audio0 /dev/audio
  ln -svf /dev/music /dev/sequencer2
  ln -svf /dev/adsp0 /dev/adsp
  ln -svf /dev/amidi0 /dev/amidi
fi

# New devices (obsolete now)...

mv -f /dev/sndstat /dev/1sndstat
rm -f /dev/snd*
mv -f /dev/1sndstat /dev/sndstat
if [ -d /dev/snd ]; then
  rm -f /dev/snd/*
  rmdir /dev/snd
fi
if [ $STATIC -gt 0 ]; then
  mkdir -p /dev/snd
  create_devices  /dev/snd/control	0
  create_device1  /dev/snd/seq		1
  create_devices2 /dev/snd/hw		2	4
  create_devices2 /dev/snd/mixer	6	2
  create_devices2 /dev/snd/pcm		16	16
  create_devices2 /dev/snd/midi		8	4
fi

# New dynamic sound device filesystem

if [ $STATIC -le 0 ]; then
  echo "ALSA dynamic sound device filesystem"
  ln -sfv /proc/asound/dev /dev/snd
fi

# Loader devices

echo "ALSA loader devices"
rm -f /dev/aload*
create_devices  /dev/aload		0
create_device1  /dev/aloadSEQ		1




More information about the pluto-help mailing list