Fragen und AntwortenIn diesem Abschnitt finden Sie die Antworten auf einige häufig gestellte Fragen zu &arts;. Allgemeine FragenUnterstützt &kde; die Ausgabe von Audio über meine Soundkarte? &kde; verwendet &arts; für das Abspielen von Klängen und &arts; verwendet die Kernel-Treiber von &Linux;, entweder OSS oder die OSS-Emulation von ALSA. Wenn Ihre Soundkarte entweder von ALSA oder OSS unterstützt und richtig eingerichtet wurde (&dh; irgendeine andere &Linux;-Anwendung kann Klänge ausgeben), funktionieren auch Klänge unter KDE. In speziellen Fällen können allerdings Probleme auftreten. Bei Problemen mit artsd kann man den Abschnitt über Hardware-Probleme lesen. Inzwischen werden verschiedene andere Computersysteme unterstützt. Es folgt eine komplette Liste der Soundausgabe mit der aktuellen Version von &arts;. Falls das eigene Computersystem nicht aufgeführt ist, sollte man in Erwägung ziehen, &arts; selbst zu portieren. &arts; Audio Ein-/Ausgabe-MethodeKommentarpaudUnterstützung des "Personal Audio Device" unter AIXalsaLinux ALSA-0.5- und ALSA-0.9-TreiberlibaudioioUnterstützung der unter Solaris funktionierenden generischen Bibliothek "LibAudioIO"nasNAS-Soundserver, nützlich für X-Terminals mit NAS-UnterstützungnullNull-Audiogerät, verwirft SoundausgabenossOSS-Unterstützung (Open Sound System) (funktioniert unter Linux, verschiedenen BSD-Varianten und anderen Plattformen mit installierten OSS-Treibern)tossOSS-Unterstützung mit Threads, funktioniert manchmal in Installaionen besser, unter denen die Standardunterstützung für OSS versagtsgiSGI "Direct Media"-Unterstützung unter IRIXsunSolaris-UnterstützungIch kann keine wav-Dateien mit &artsd; abspielen! Überprüfen Sie, das &artsd; mitlibaudiofile gelinkt ist (lddartsd). Falls das nicht der Fall ist, laden Sie das Paket tdesupport herunter und übersetzen Sie alles neu. Ich kann Klänge hören, wenn ich mich als root anmelde, aber kein anderer Benutzer kann Klänge hören! Die Berechtigungen für die Datei /dev/dsp entscheiden, welche Benutzer Klänge erhalten. Um jedem die erforderlichen Berechtigungen zu geben, müssen Sie Folgendes machen: Melden Sie sich als root an. Öffnen Sie ein &konqueror;-Fenster. Gehen Sie in den Ordner /dev. Klicken Sie mit der rechten Maustaste auf dsp und wählen Sie Eigenschaften. Klicken Sie auf die Karteikarte Berechtigungen. Markieren Sie Lesen und Schreiben in allen Bereichen. Klicken Sie auf OK. Sie können das gleiche erreichen, indem Sie in einem Terminal-Fenster chmod/dev/dsp eingeben. Um den Zugriff auf Klänge auf bestimmte Benutzer einzuschränken, können Sie Gruppenrechte verwenden. Bei einige &Linux;-Distributionen, z.B. Debian/Potato, gehört /dev/dsp bereits zur Gruppe audio. Sie müssen die gewünschten Benutzer lediglich zu dieser Gruppe hinzufügen. Das hilft für &artsd;, aber wie sieht es mit &kmix;, &tdemid;, &kscd;,&etc; aus? Es gibt verschiedene andere Geräte, auf die Multimedia-Anwendungen zugreifen. Sie können sie alle genau so behanden; Sie können sie entweder für alle Benutzer freigeben oder Gruppenrechte zur Zugriffskontrolle verwenden. Hier ist eine Liste der beteiligten Geräte, die aber unvollständig sein kann (falls es mehrere Geräte einer Art gibt, sind sie in der Form midi0, midi1, ... benannt, nur das erste dieser Geräte ist in der folgenden Liste aufgeführt): /dev/admmidi0/dev/adsp0/dev/amidi0/dev/amixer0/dev/audio/dev/audio0/dev/cdrom/dev/dmfm0/dev/dmmidi0/dev/dsp/dev/dsp0/dev/midi0/dev/midi0/dev/midi00/dev/midi00/dev/mixer/dev/mixer0/dev/mpu401data/dev/mpu401stat/dev/music/dev/rmidi0/dev/rtc/dev/sequencer/dev/smpte0/dev/sndstatWas kann ich tun, wenn artsd nicht startet oder während der Ausführung abstürzt?Versuchen Sie zuerst die Standardeinstellungen in &kcontrol; (oder wenn Sie manuell gestartet haben, geben Sie keine zusätzlichen Optionen an, außer vielleicht 104096). Besonders die Einstellung Volle Duplexfähigkeit aktivieren funktioniert bei einigen Treibern nicht. Eine gute Methode, Problemen mit artsd auf den Grund zu gehen, ist, &artsd; manuell zu starten. Öffnen Sie dazu ein &konsole;-Fenster und geben Sie folgenden Befehl: %artsd104096Sie können außerdem die Option hinzufügen. Sie sorgt für umfangreichere Statusmeldungen: %artsd104096Sie erhalten bestimmt einige nützliche Informationen über die Startprobleme. Oder, wenn artsd abstürzt, während etwas Bestimmtes passiert, können Sie auch dieses ausprobieren und Informationen erhalten wie &artsd; abstürzt. Wenn Sie einen Fehlerbericht einsenden wollen, kann ein Backtrace mit gdb und/oder ein strace hilfreich sein. Kann ich &artsd; verschieben (die übersetzten Dateien in einen anderen Ordner verschieben)?Das funktioniert nicht perfekt. Das Problem ist, das &artswrapper; die Position von &artsd; aus Sicherheitsgründen fest einkompiliert hat. Sie können allerdings die .mcoprc-Datei (Einträge für Trader-Pfad/Erweiterungspfad) verwenden, damit ein verschobener &artsd; wenigstens seine Komponenten findet. Sehen Sie im Kapitel über die .mcoprc-Datei für genauere Vorgehenshinweise nach. Kann man &arts; mit gcc-3.0 kompilieren?Kurze Antwort: Nein, &arts; funktioniert nicht, wenn er mit GCC 3.0 kompiliert wird. Lange Antwort: In der offiziellen Version von GCC 3.0 gibt es zwei Fehler, die &arts; betreffen. Der Erste, GCC-Fehler c++/2733 ist relativ harmlos (und betrifft Probleme mit Assembleranweisungen). Die Kompilation von convert.cc wird dadurch verhindert. Dieser Fehler ist im GCC-3.0-CVS bereits beseitigt und wird in einer Version GCC-3.0.1 oder höher beseitigt sein. Ein Notbehelf wurde zur CVS-Version von KDE/arts hinzugefügt. Der zweite GCC-3.0-Fehler, c++/3145 (Erzeugung falscher Anweisungen in einigen Fällen von mehrfacher virtueller Vererbung) ist kritisch. Anwendng wie &artsd; stürzen ab beim Start ab, wenn sie mit GCC-3.0 kompiliert werden. Auch wenn bereits kleine Fortschritte zur Beseitigung dieses Problems erzielt wurden, stürzt &artsd; immer noch oft und unerwartet ab. Welche Anwendungen funktionieren unter &arts;?Offensichtlich sind alle &kde;-Anwendungen für &arts; vorbereitet. Das schließt Folgende ein: &noatun;&arts-builder;&aktion;&tdemid;&tdemidi;&kmix;&kscd;&kde;-Spiele wie &kpoker; und &ktuberling;Einige &kde;-Anwendungen, die bisher nicht Teil von &kde;-Veröffentlichungen sind (z.B. aus kdenonbeta) unterstützen &arts; auch. Das sind unter anderen: &brahms;KaboodleKdaoDie folgenden Nicht-&kde;-Anwendungen funktionieren ebenfalls mit &arts;: xmms (mit &arts;-Plugin)Real Networks RealPlayer 8.0 (funktioniert mit &artsdsp;; vollständige &arts;-Unterstützung wird überlegt)Die folgenden Anwendungen funktionieren nicht mit &arts;: keineWeitere Informationen finden Sie in den Antworten zu den Fragen im Abschnitt Nicht-&arts;-Anwendungen. Dieser Abschnitt ist unvollständig -- wenn Sie Informationen zu weiteren unterstützten und nicht unterstützten Anwendungen haben, senden Sie sie an den Autor, damit sie eingefügt werden können. Nicht-&arts;-AnwendungenSobald &kde; läuft, kann keine andere Anwendung auf die Klanggeräte zugreifen! Während der &arts;-Soundserver von &kde; läuft, verwendet er die Klanggeräte. Wenn der Server für 60 Sekunden unbeschäftigt ist, setzt er aus und gibt die Geräte automatisch frei. Angeblich soll er nach 60 Sekunden aussetzen, er tut es aber nicht! Wenn man artsd vom KDE Kontrollzentrum aus startet, beträgt die Standardeinstellung für das Aussetzen 60 Sekunden. Wenn man artsd dagegen von der Befehlszeile aus startet, muss man die Option -s verwenden, um die Zeit bis zum Aussetzen festzulegen, ansonsten wird das Aussetzen deaktiviert. Augenblicklich funktioniert das Aussetzen nicht im Zusammenhang mit Full-Duplex. Schalten Sie in &kcontrol; Full-Duplex-Fähigkeit aus und das Aussetzen wird funktionieren. Full-Duplex deaktivieren, ist immer einer gute Idee, wenn Sie &arts; nur zum Abspielen und nicht zum Aufnehmen verwenden. Wie kann ich alte Nicht-&arts;-Anwendungen ausführen? Starten Sie sie mit Hilfe von &artsdsp;. Wenn Sie z.B. normalerweise eingeben würden: %mpg123verwenden Sie stattdessen:%artsdspDadurch wird die Klangausgabe an &arts; umgeleitet. Diese Methode erfordert keine Veränderung der Anwendungen. Diese Übergangslösung unterstützt allerdings bisher nicht alle Fähigkeiten der Klanggeräte, daher werden einige Anwendungen dennoch nicht funktionieren. Ich kann &artsdsp; mit keiner Anwendung ausführen, es stürzt immer ab! Sie benötigen eine aktuelle Version der glibc-Bibliothek; &artsdsp; funktioniert auf einigen älteren &Linux;-Distributionen nicht zuverlässig. Z.B. funktioniert das Programm unter Debian 2.1 (mit glibc 2.0) nicht, während es unter Debian 2.2 (mit glibc 2.1.3) funktioniert. Gibt es prinzipielle Hindernisse, sodass einige Anwendungen grundsätzlich nicht mit &artsdsp; funktionieren können? Nein. Das Programm &artsdsp; führt zu einer etwas höheren CPU-Belastung als die direkte Verwendung des &arts;-APIs. Darüber hinaus kann jede nicht funktionierende Anwendung als Fehler in &artsdsp; betrachtet werden. Die Technik von &artsdsp; sollte bei richtiger Implementationjeder Anwendung eine Zusammenarbeit mit arts ermöglichen (einschließlich großer Anwendungen wie Quake 3). Was kann ich tun, wenn eine Anwendung nicht mit &artsdsp; funktioniert? Sie können entweder warte, bis &artsd; automatisch aussetzt oder das Kommand artsshell verwenden, um den Server manuelle abzuschalten. Sie können den Server nur dann abschalten, wenn keine Anwendung &arts; verwendet und während &arts; abgeschaltet ist, können Sie keine Anwendungen starten, die den Server verwenden. Wenn der Server beschäftigt ist, gibt es einen brutalen Weg, ihn abzuschalten: %killall ; killallNow start your own application.%kcminitDamit stürtzt allerdings jede &arts;-Anwendung ab, sobald Sie den Server so abschalten. Wie sieht es mit &kde;-1.x-Anwendungen aus? Wenn Sie &kde;-1.x-Anwendungen benutzen, die den &kde;-1-Audioserver zur Ausgabe verwenden, müssen Sie das Programm kaudioserver starten. Sie können kaudioserver wie jede andere Nicht-&arts;-Anwendung behandeln: %artsdspSie müssen kaudioserver installiert haben (aus der gleichen Quelle, von der Sie Ihre &kde;-1.x-Anwendungen bekommen haben) - er gehört zu &kde; 1.x, nicht &kde; 2. Wie sieht es mit Anwendungen aus, die den Enlightened Sound Daemon, ESD, verwenden? Der Fall ist ähnlich zu kaudioserver. Solche Anwendungen benötigen den Server esd. Sie können esd mit Hilfe von &artsdsp; starten und jede ESD-Anwendung sollte so funktionieren: %artsdspNeuere Versionen von &arts; (
>= 1.2.0) können auch auf den "enlightened sound daemon" anstelle der Soundkarte direkt ausgeben. In der Kommandozeile muss dann die -a Option verwendet werden. Zum Beispiel: %artsdum die EsounD-Unterstützung zu aktivieren. Im &kde; reicht es, in &kcontrol; "Sound & Multimedia" / "Sound-System" die Audio-Hardware auf "Enlightened Sound Dämon" zu stellen. AussetzerManchmal höre ich kurze Aussetzer in der Musik, ist das ein Fehler? Das ist höchstwahrscheinlich kein Fehler sondern durch die Tatsache verursacht, das der &Linux;-Kernel keine guten Echtzeit-Fähigkeiten besitzt. Es gibt Situationen, in denen &arts; nicht mit der Wiedergabe mithalten kann.Sie können allerdings Echtzeit-Priorität aktivieren (in &kcontrol;) und eine große Antwortzeit verwenden (wie 250ms oder so groß wie möglich). Das sollte die Situation verbessern. Wie wirkt sich der Antwortzeitwert aus? Der Hilfetext für diese Einstellung in &kcontrol; kann verwirren. Ein kleinerer Wert bedeutet, das &arts; eine kürzere Antwortzeit auf externe Ereignisse (&dh; die Zeit, die benötigt wird zwischen dem Schließen eines Fensters und dem von &artsd; abgespielten zugehörigen Klang) verwendet. Das bedeutet, das mehr CPU-Zeit benötigt wird und die Wahrscheinlichkeit von Aussetzern größer wird.Gibt es andere Einstellungen, die Aussetzer verhindern können? Benutzer von IDE-Laufwerken, können das Programm hdparm verwenden, um ihr IDE-Laufwerk in den DMA-Modus umzuschalten. Eine Warnung: Dieser Modus funktioniert nicht auf jedem Computer und kann zu einem Systemgesamtabsturz und in seltenen Fällen zu Datenverlust führen. Lesen Sie die Dokumentation zu hdparm für genauere Informationen. Ich habe das folgende Kommando erfolgreich verwendet: %hdparm/dev/hdaSie müssen dieses Kommando nach jedem Neustart ausführen, es ist also in einem Start-Skript am besten aufgehoben (wo genau ist unterschiedlich, auf Debian &Linux; üblicherweise in /etc/rc.boot). Die Verwendungvon Echtzeit-Priorität scheint keinen Einfluss zu haben? Überprüfen Sie, ob artswrapper als suid root installiert ist. Viele Distributionen (wie z.B. SuSE7.x) installieren artswrapper nicht mit den richtigen Berechtigungen. Zur Überprüfung tippen Sie: ls -l $(which artswrapper). So sollte die Ausgabe aussehen: %ls$(which artswrapper)
-rwsr-xr-x 1 root root 4556 Sep 24 18:05 /opt/kde2/bin/artswrapper
So sollte es nicht aussehen: %ls$(which artswrapper)
-rwxr-xr-x 1 root root 4556 Sep 24 18:05 /opt/kde2/bin/artswrapper
Wenn das s fehlt, kann man es durch folgenden Befehl hinzufügen: %chown$(which artswrapper)%chmod$(which artswrapper)Falls man &artswrapper; als SUID root ausführen lässt, wird sich durch Verringerung der Unterbrechungen die Qualität der Musikwiedergabe vermutlich erhöhen. Das erhöht allerdings auch die Wahrscheinlichkeit, dass ein Fehler im Programm oder ein böswilliger Benutzer den Rechner beschädigt. Im Mehr-Benutzerbetrieb kann die Ausgabe von hochwertigen Musikaufnahmen die Geschwindigkeit anderer Programme und Benutzer, die produktiv arbeiten, ernsthaft in Mitleidenschaft ziehen.Warum benötigt &artsd; so viel CPU-Zeit? Überprüfen Sie Ihre Antwortzeit-Einstellung. Die aktuelle Version ist außerdem noch nicht optimiert. Das wird sich in Zukunft verbessern. Bis dahin ist keine richtige Vorhersage möglich, wie schnell &artsd; sein kann oder nicht sein kann. Netzwerk-TransparenzWas benötige ich für Netzwerk-Transparenz? Sie müssen Netzwerk-Transparenz in den Soundserver-Einstellungen von &kcontrol; aktivieren (Sicherheits- und Transparenzinfo mittels X11-Server austauschen und Netzwerk-Transparenz aktivieren). Kopieren Sie Ihre .mcoprc-Datei auf alle Computer, von denen Sie diese Fähigkeit verwenden wollen. Melden Sie sich neu an. Stellen Sie sicher, das die Namensauflösung zwischen den interagierenden Computern funktioniert (&dh; sie müssen auflösbare Namen haben oder in der Datei /etc/hosts eingetragen sein). Das sollte alles sein. Falls immer noch Probleme bestehen, sind hier noch weitere Informationen. Der &arts; Soundserver-Prozess, &artsd;, sollte nur auf einem Computer laufen, demjenigen mit der Soundkarte, auf dem die Ausgabe erfolgen soll. Der Prozess kann automatisch beim Anmelden von &kde; gestartet werden (wenn Sie das in &kcontrol; einstellen), oder manuell durch Eingabe von: %artsd58192Die Option ist für Netzwerk-Transparenz, die anderen steuern die Antwortzeit. Ihre .mcoprc-Datei sollte folgenden Eintrag haben: GlobalComm=Arts::X11GlobalCommauf allen beteiligten Computern, damit die Netzwerk-Transparenz funktioniert. Das wird aktiviert durch die Kontrollzentrumseinstellung Sicherheits- und Transparenzinfo mittels X11-Server austauschen. Schließlich gibt es in jeder &kde;-Version aus der 2.0.x-Serie einen Fehler, der sich auswirkt, wenn kein Domain-Name eingetragen ist. Klienten von &artsd; suchen den Computer mit dem Soundserver durch die hostname. domainname-Kombination. Wenn Ihr Domain-Name leer ist, wird hostname. (beachten Sie den zusätzlichen Punkt). Fügen Sie einen solchen Eintrag in die Datei /etc/hosts (&dh; orion. wenn Ihr Host-Name orion lautet) ein, um das Problem zu umgehen. Wie kann ich Fehler suchen, falls die Netzwerk-Transparenz nicht funktioniert? Wenn Sie den &kde;-Quelltext haben, gehen Sie in tdelibs/arts/examples und führen Sie make aus, um einige Programme einschließlich referenceinfo zu übersetzen. Führen Sie dann %./referenceinfo aus. Die Ausgabe zeigt den Hostnamen und die von &arts; verwendeten Kanäle (ports) an. Die Ausgabe tcp:orion:1698 bedeutet, das jeder Klient, der Netzwerk-Transparenz verwenden will, sollte wissen, wie der Computer orion zu finden ist. Hardware-spezifische FragenWelche Hardware funktioniert mit artsd nicht gut? Es scheint, als würden einige wenige Linuxtreiber in manchen Kernelversionen nicht gut mit aRts zusammenarbeiten. Bitte lesen sie die folgende Liste, bevor Sie einen Fehler melden. Wenn Sie Unvollständigkeiten finden, zögern Sie bitte nicht, diese uns zu melden. Linuxtreiber / SoundkarteVersagt unterArbeitet unterBemerkungeni810 driver (Intel 810 + AC97 Audio)2.4.92.4.18, 2.2.20, kommerzieller OSS-Treiber, alsa-0.5.12a mit OSS-EmulationDer Treiber verursacht einen "cpu-overload".maestro 3/4 chipset2.4.9?Der Treiber verursacht manchmal einen "cpu-overload".aureal8820, aureal8830 Treiber von sourceforge2.4.17?Der Treiber verursacht eine "Assertion" / "cpu-overload".OSS Commercial 3.9.4g mit Aureal Vortex??Das System hängt sich auf.ymfpci2.4.0, 2.4.122.4.17Der Treiber verursacht eine "Assertion".Warum gibt es hardwarespezifische Probleme und wie sind diese zu lösen? Das übliche Problem ist, dass manche Treiber aRts ungenügende oder unrichtige Informationen darüber geben, wann Sounddaten geschrieben werden sollen. Die meisten OSS-Treiber liefern korrekte Informationen, aber nicht alle. Es ist zu bemerken, dass einige andere Anwendungen (wie z.B. xmms) ohne diese Daten auskommen und daher auch auf solcher Hardware fehlerfrei arbeiten. &arts; benötigt diese Daten aber und daher könnte artsd abstürzen. Dennoch handelt es sich um einen Treiberfehler und nicht um einen &arts;-Fehler. Es gibt zwei Symptome, an denen man erkennt, dass artsd mit einem fehlerhaften Treiber arbeitet. Entweder versucht artsd ständig, neue Daten zu schreiben, was aber fehlschlägt und schließlich zu einer sehr hohen CPU-Last und schließlich zum Programmende führt. Beim zweiten Symptom wird artsd mit falschen Informationen darüber versorgt, wie viele Daten zu schreiben sind. In diesem Fall stoppt artsd mit einer Assertion wie: artsd: audiosubsys.cc:458: void Arts::AudioSubSystem::handleIO(int):
Assertion `len == can_write' failed.
Aborted
Wo liegt das Problem, wenn eine hohe CPU-Last auftritt? Normalerweise verwendet artsd select(), um herauszufinden, wann Daten geschrieben werden können. Danach wird ein ioctl(...GETOSPACE...) verwendet, um die Menge der zu schreibenden Daten herauszufinden. Schließlich werden die Daten tatsächlich geschrieben. Ein Problem tritt auf, falls artsd ständig aktiviert wird oder falls nur minimale Datenmenge zu schreiben sind. Nach der OSS-Dokumentation aktiviert select() einen Prozess nur dann, wenn mindestens ein Fragment zu schreiben ist. Falls artsd allerdings aktiviert wird und es ist lediglich eine sehr geringe Datenmenge zu schreiben, fährt artsd fort, nur geringe Datenmenge zu schreiben. Das führt schließlich zu einer hohen CPU-Last. Um das zu verhindern, darf der Treiber artsd nur dann aktivieren, wenn mindestens ein volles Fragment zu schreiben ist. Wo liegt der Fehler, wenn die Assertion auftritt? Normalerweise verwendet artsd select(), um herauszufinden, wann Daten geschrieben werden können. Danach wird ein ioctl(...GETOSPACE...) verwendet, um die Menge der zu schreibenden Daten herauszufinden. Schließlich werden die Daten tatsächlich geschrieben. Falls artsd nicht so viele Daten schreiben kann, wie ioctl anzeigt, wird eine Assertion ausgelöst. Um das zu beheben, sollte der Treiber die korrekte Größe des freien Speichers mitteilen. Andere ThemenIch kann &arts-builder; nicht verwenden. Er stürzt ab, wenn ich eine Struktur ausführen lassen will! Der wahrscheinlichste Grund für dieses Problem ist die Verwendung von alten Strukturen oder Modulen, die von &kde;2-Version nicht mehr unterstützt werden. Unglücklicherweise bezieht sich die im Internet verfügbare Version auf &arts;-0.3.4.1, die lange überholt ist. Der am häufigsten berichtete Fehler ist der folgende: Wenn Struktur ausführen in &arts-builder; gestartet wird, erscheint die Fehlermeldung [artsd] Synth_PLAY: Audio-Subsystem wird schon verwendet.Sie sollten Synth_AMAN_PLAY an Stelle von Synth_PLAY verwenden und das Problem verschwindet. Weitere Informationen finden Sie in der Hilfedatei zu &arts-builder; (betätigen Sie F1 in &arts-builder;). Aktuelle Versionen von &arts-builder; (&kde; 2.1 Beta 1 und später) haben eine Menge von Beispielen, die Sie verwenden können.