Differences between revisions 11 and 12
Revision 11 as of 2009-01-20 14:25:02
Size: 10540
Editor: ?Markus Maria Miedaner
Comment:
Revision 12 as of 2009-01-21 17:00:20
Size: 10686
Editor: ?tang
Comment: Hinweis auf kernel-Version eingefügt
Deletions are marked like this. Additions are marked like this.
Line 133: Line 133:
Man muss nun noch die eee-acpi-scripts (hier: Version 1.0.10, ggf. mit apt-get install eeepc-acpi-scripts erneuern) anpassen, damit die Tasten FnF7 bis FnF9 wieder nutzbar sind. Das geht zum Beispiel so: Man muss nun noch die eee-acpi-scripts (hier: Version 1.0.10, ggf. mit apt-get install eeepc-acpi-scripts erneuern) anpassen, damit die Tasten FnF7 bis FnF9 wieder nutzbar sind. Das geht zum Beispiel so:   ''Achtung:'' getestet mit dem Kernel linux-image-2.6.26-1-686 in der Version 2.6.26-12 - in der aktuelleren Version 2.6.26-13 geht es anders.

Übersetzungen: [:DebianEeePC/HowTo/Sound:Englisch] [:DebianEeePCFrench/HowTo/Sound:Französisch] [:DebianEeePCPortuguese/HowTo/Sound:Portugiesisch]

?TableOfContents

Sound mit Alsa sollte nach der Installation einfach so funktionieren. Das Folgende sind Tipps wie der Sound für verschiedene Programme optimiert werden kann.

Mikrofon mit dem 900A, 901, 1000 und 100H

Alternativ: Siehe unten Abschnitt "Installieren eines geupdateten Alsa"

Alsamixer

Falls das System für Anwendungen wie Ekiga benutzt werden soll um VoIP/Video Konferenzen abhalten zu können ist es sehr nützlich mit alsamixer umgehen zu lernen, um die low-level Mixer Kanäle der Hardware beeinflussen zu können. Zwar gibt es grafische Frontends, aber das alsamixer Programm wird fast immer bereits per Default installiert. Es ist im alsa-utils Packet enthalten.

Um es zu benutzen wird in einem Terminal das alsamixer Programm aufgerufen. Es hat drei verschiedene Ansichten: Playback settings (Abspiel Einstellungen), Capture settings (Aufnahme Einstellungen), all settings (Alles). Zwischen diesen kann mit der <TAB> Taste umgeschaltet werden. Mit <Pfeil-links> und <Pfeil-rechts> wird von Kanal zu Kanal gewechselt <Pfeil-aufwärts> und <Pfeil-abwärts> wechseln das Volumen. Die 'm' Taste schaltet 'mute' (Stummschaltung) an und ab wo dies möglich ist und die <SPACE> Taste schaltet Aufnahme ein und aus, wo möglich. Die '?' Taste führt zur Hilfe.

Für das im Eee eingebaute Mikrofon muss das Volumen justiert werden. Mit <TAB> wird zur 'all' Ansicht gewechselt, dann mit den Pfeilen zu 'capture' (Aufnahme) gewechselt und mit <SPACE> eingeschaltet. Setze das Volumen auf etwa 70%. Versichere Dich, dass 'i-mic' (Internes Mikro) als Quelle gewählt ist. (Falls 'i-mic' nicht existiert probiere 'Front Mic'). Wähle das Eingangsgerät mit den Pfeilen hinauf und hinunter. Bei den 'i-mic' Mixereinstellungen wähle Volumen um 70% und 'i-mic boost' 33%.

Das sollte eine gute Basis geben, um eigene Einstellungen auszuprobieren. 'i-mic boost' sollte 0% oder 33% betragen, jeder höhere Wert produziert schreckliche Verzerrungen mit Ekiga.

Um Tonaufnahmen zu testen bietet sich Audacity an. Setze die Einstellungen im 'Preferences' Dialog und konfiguriere das Program 'alsa' zu benutzen.

Gnomes Aufnahmeprogram ist 'benutzbar' für Tonaufnahmen. Konfiguriere den zu benutzenden 'codec' auf 'wav', 'mp3', oder 'speex'. Für das als Default benutzte 'Ogg/Vorbis' ist die Hardware des Eee zu langsam um in Echtzeit zu kodieren, was zu einer sehr schlechten Audioqualität führt.

Alsa Konfiguration

Folgendermassen kann die Leistung des Soundsystems verbessert werden, wenn mehrere Klänge abgespielt werden sollen, mit mehreren Programmen Aufnahmen gemacht werden sollen, Spiele gespielt oder Video auf dem Eee betrachtet werden sollen.

Genauere Informationen über dieses Konfigurationsfile siehe http://alsa.opensrc.org/.asoundrc

pcm.my_card {
  type hw
  card 0
  # mmap_emulation true
}
pcm.dmixed {
  ## This provides software mixing for audio out
  type dmix
  ipc_key 1024
  slave {
  pcm "my_card"
  ## period_size and buffer_size
  ## can be modified to reduce
  ## latency or add more 'cusion'
  ## through the buffer
  period_size 1024
  buffer_size 4096
  rate 44100
  }
}
pcm.dsnooped {
  ## this provides software mixing for audio in
  type dsnoop
  ipc_key 2048
  slave {
  pcm "my_card"
  period_size 1024
  buffer_size 4096
  rate 44100
  }
}
pcm.asymed {
  ## this plugin allows you to bind both
  ## the dmix and dsnoop plugins together
  type asym
  playback.pcm "dmixed"
  capture.pcm "dsnooped"
}
pcm.pasymed {
  ## if you do not want to use use
  ## mixing by default, you can delete
  ## !default entry below and direct
  ## apps to use this 'device' as a
  ## extra option
  type plug
  slave.pcm "asymed"
}
pcm.dsp0 {
  ## this allows most OSS-only apps
  ## to use this mixing stuff
  ## through the use of the aoss wrapper
  type plug
  slave.pcm "asymed"
}
pcm.!default {
  ## this makes alsa apps default
  ## to use this config
  type plug
  slave.pcm "asymed"
}

Installieren eines geupdateten Alsa (z.B. für den Betrieb des Mikros bei 900er)

Zunächst muss ["DebianExperimental"] in die sources-List unter /etc/apt/sources.list eingetragen werden, um dann das Paket alsa-source aus diesem Repository zu installieren (Version: 1.0.18.dfsg-1 zum Zeitpunkt dieses Eintrags). Danach folgen die Schritte:

apt-get update
apt-get install module-assistant
m-a prepare
apt-get -t experimental install alsa-source
m-a build alsa
m-a install alsa

Testen und anpassen des neuen Alsa

Nach dem Updaten bedarf es einen Neustart. Alternativ dazu kann man auch alle Audioapplikationen schließen (auch die Mixeranwendungen) und alle alten Kernelmodule entladen und danach die neu installierten Module von Hand laden. Die folgenden Kommandos wurden auf einem EeePC 901 getestet:

 rmmod snd_hda_intel snd_pcm snd_timer snd soundcore snd_page_alloc
 modprobe snd_hda_intel

Nach dem Neustart müssten mit alsamixer oder gnome-volume-control die geänderten Kanäle zu sehen sein. Wenn Du die Module von Hand nachgeladen hast, musst Du dies nach einem Neustart wiederholen.

Die Kontrollelemente des alten Treibers sehen im alsamixer so aus:

attachment:AlsaMixer_Realtek_ALC269_playback.png

attachment:AlsaMixer_Realtek_ALC269_capture.png

attachment:AlsaMixer_Realtek_ALC269_all.png

Die Kontrollelemente des geupdaten Trebreibers sehen im alasamixer so aus:

attachment:AlsaMixer_Realtek_ALC269_playback_updated_driver.png

attachment:AlsaMixer_Realtek_ALC269_capture_updated_driver.png

attachment:AlsaMixer_Realtek_ALC269_all_updated_driver.png

FixMe: the following advice is in dispute. We need to correct it, simplify it and/or fix it in the eeepc-acpi-scripts package

Man muss nun noch die eee-acpi-scripts (hier: Version 1.0.10, ggf. mit apt-get install eeepc-acpi-scripts erneuern) anpassen, damit die Tasten ?FnF7 bis ?FnF9 wieder nutzbar sind. Das geht zum Beispiel so:

Achtung: getestet mit dem Kernel linux-image-2.6.26-1-686 in der Version 2.6.26-12 - in der aktuelleren Version 2.6.26-13 geht es anders.

In der Datei /etc/default/eeepc-acpi-scripts die Einträge folgendermaßen ändern/ergänzen:

# lookup the following values by using amixer if they don't work for you
VOLUME_LABEL='LineOut'
HEADPHONE_LABEL='LineOut'
I_SWITCH_LABEL='iSpeaker'

In der Datei /etc/acpi/actions/volume.sh die Zeile

$AMIXER -q set $VOLUME_LABEL toggle 

ändern in:

$AMIXER -q set $I_SWITCH_LABEL toggle

Nun sollten auch die Tasten ?FnF7 bis ?FnF9 wieder wie gewohnt laufen und auch das Mikrofon sollte bei den Modellen der 900er-Reihe funktionieren. Vgl. dazu weiter oben den Abschnitt "Alsamixer".

ALSA OSS

Auf meinem System funktioniert der Oss_mixer überhaupt nicht (z.B.: wmmixer als ?DockApp in fvwm2). Die Ursache dafür seint das Mapping von ALSA auf OSS im snd_mixer_oss Kernelmodul zu sein. Sehen kann man das in /proc/asound/card0/oss_mixer. Auf meinem System habe ich keine passenden Mappings:

eee1000:~# cat /proc/asound/card0/oss_mixer
VOLUME "" 0
BASS "" 0
TREBLE "" 0
SYNTH "" 0
PCM "" 0
SPEAKER "" 0
LINE "" 0
MIC "" 0
CD "" 0
IMIX "" 0
ALTPCM "" 0
RECLEV "" 0
IGAIN "" 0
OGAIN "" 0
LINE1 "" 0
LINE2 "" 0
LINE3 "" 0
DIGITAL1 "" 0
DIGITAL2 "" 0
DIGITAL3 "" 0
PHONEIN "" 0
PHONEOUT "" 0
VIDEO "" 0
RADIO "" 0
MONITOR "" 0

Die richtigen Mappings können dieser Datei während des Bootens hinzugefügt werden, indem die folgenden vier Zeilen am Ende der /etc/init.d/rc.local-Datei einfügt:

echo 'VOLUME "PCM" 0' > /proc/asound/card0/oss_mixer
echo 'LINE "LineOut" 0' > /proc/asound/card0/oss_mixer
echo 'MIC "Capture" 0' > /proc/asound/card0/oss_mixer
echo 'PHONEIN "Digital" 0' > /proc/asound/card0/oss_mixer

Danach sollten wir eine funktionierende Konfiguration haben:

eee1000:~# cat /proc/asound/card0/oss_mixer
VOLUME "PCM" 0
BASS "" 0
TREBLE "" 0
SYNTH "" 0
PCM "" 0
SPEAKER "" 0
LINE "LineOut" 0
MIC "Capture" 0
CD "" 0
IMIX "" 0
ALTPCM "" 0
RECLEV "" 0
IGAIN "Capture" 0
OGAIN "" 0
LINE1 "" 0
LINE2 "" 0
LINE3 "" 0
DIGITAL1 "" 0
DIGITAL2 "" 0
DIGITAL3 "" 0
PHONEIN "Digital" 0
PHONEOUT "" 0
VIDEO "" 0
RADIO "" 0
MONITOR "" 0

Alternative Versionen: Geupdateter Kernel oder Upstream Quelltext für den AlsaTreiber

Zwar reicht der ?AlsaQuelltext auf dem "experimental" Zweig ausreicht um das Frontmikrophonproblem zu lösen, wenn Du aber Interesse hast, neues auszuprobieren, kannst Du statt dessen einen aktuelleren Kernel benutzen oder die neueste Version des Alsaquelltextes aus dem "upstream" holen.

TODO: List reasons why a user would want to do this instead of just using the recommended experimental alsa-source.

Linux kernel 2.6.28-rc1 und neuere Versionen enthalten einen ALSA driver der aktuell genug ist. Wenn Du eine dieser Versionen besitzt, gibt es keinen Grund den Treiber erneut zu kompilieren.

Wenn nicht, dann hole den "upstream" Quelltext von: ftp://ftp.alsa-project.org/pub/driver/. Als ich diese Seite schrieb war der alsa-driver-1.0.18a.tar.bz2 die aktuelleste Version. Wir haben überprüft, dass Version 1.0.18rc1 gtu funktioniert.

Du musst das passende Linux-Header Paket installieren.

Als Nächstes musst Du es auspacken, irgendwo w.z.B. /usr/src/ und es dann bauen. Vielleicht soltest du ein Backup von dem alten Treiber zu erst erstellen.

/lib/modules/2.6.26-1-686/kernel/sounds/pci/hda/# cp snd-hda-intel.ko snd-hda-intel.ko.stock
/usr/src/alsa-driver-1.0.18rc1# ./configure --with-cards=hda-intel --with-options=all
/usr/src/alsa-driver-1.0.18rc1# make
/usr/src/alsa-driver-1.0.18rc1# make install
/usr/src/alsa-driver-1.0.18rc1# ./snddevices

Der INSTALL Datei des Alsatreiber zur Folge ist der letzte Schritt nicht nötig, wenn du udev benutzt. Diese Datei empfiehlt auch 'make install-modules' an Stelle von 'make install' zu benutzen und nimmt an, dass die Pakete alsa-utils und alsa-base packages bereits installiert sind.

Du kannst sicher stellen, dass der neue Treiber geladen wurde:

ls -l /lib/modules/2.6.26-1-686/updates/alsa/

Überprüfe, dass die Datumsangabe zu snd-hda-intel.ko ungefähr die Zeit wiedergibt, zu der Du das Paket kompiliert hast :)

Nun folge den Instruktionen unter [#head-6a6736b51e5eb1fc167a090056015171a60998e4 Testen und anpassen des neuen Alsa].