Seite 1 von 4

S/P-DIF (TOSLink) unter Linux - wie nutzbar?

Verfasst: Sa 4. Jun 2005, 14:27
von Frank Klemm
Receiver mittels TOSLink (5m, Reichelt) an den AV-Receiver angebunden.
Unter Windows funktioniert die digitale Anbindung sofort, unter Linux funktioniert
sie nicht. Es ist auch kaum was im Internet zu finden.

OS:
Linux, Kernel 2.4.26, SuSE 9.0

Karten:
Karte 1: OnBoard-Sound mit TOSLink In und TOSLink Out (Abit IC7-G) (Realtek Audio-Codec)
Karte 2: PCI-Karte mit TOSLink Out (Guillemot Hercules Fortissimo III 7.1)

Unter Windows funktionieren beide! auf Anhieb.

Weiß jemand, ob man diese Karten auch unter Linux zum Leuchten bekommen kann?

Verfasst: Sa 4. Jun 2005, 15:04
von K.Reisach
Kommt drauf an was du alles bei der Linuxinstallation mit installiert hast!

Soweit ich weiss, gibet da so ein kleines Zusatzprogrämchen für Surround, womit
man auch den Digi-Out aktivieren kann (Sofern man dies bei der Installation ausgewählt hat)!

Gruß, Kevin

Verfasst: Sa 4. Jun 2005, 15:23
von burki
Hi,
sorry Frank, aber eine etwas ausfuehrlichere Beschreibung waere durchaus hilfreich, d.h. was wird benutzt --> alsa oder der unsaegliche Soundserver unter KDE ?
Natuerlich muss die Karte/der chipsatz auch vollstaendig unterstuetzt werden (alsa-project hilft da durchaus weiter) und dementsprechend (ich mache dass eigentlich immer mit amixer oder manchmal mit alsamixer bzw. envy24control (hilft Dir bei Deinen Karten wenig) der Ausgang "freigeschaltet" werden.
Noch eins: Mit dem Suse-Uraltkernel (der aber massivst gepached ist) taete ich persoenlich nicht weiterarbeiten. Aktuelle alsa-libs/tools unter einem Suse 9.0 zu installieren ist leider ebenfalls nicht ganz einfach (im 2.6er Kernel sind die alsa-Treiber dagegen eh schon enthalten).
Gruss
Burkhardt

Verfasst: So 5. Jun 2005, 12:28
von Frank Klemm
burki hat geschrieben: sorry Frank, aber eine etwas ausfuehrlichere Beschreibung waere durchaus hilfreich, d.h. was wird benutzt --> alsa oder der unsaegliche Soundserver unter KDE?
Testkonsole und /dev/audio[0123] bzw. /dev/mixer[01] .
KDE oder Gnome oder was auch immer ist da noch gar nicht im Spiel.
Dieses "Zwiebeldesign" von Linux (das API ist für den Programmierer eigentlich nicht
verwendbar, setzen wir eine Virtualisierungschicht drauf - und das ganze rekursiv)
kann ich nicht ausstehen, weil am Ende keiner mehr weiß, was eigentlich los ist.
Natuerlich muss die Karte/der chipsatz auch vollstaendig unterstuetzt werden (alsa-project hilft da durchaus weiter) und dementsprechend (ich mache dass eigentlich immer mit amixer oder manchmal mit alsamixer bzw. envy24control (hilft Dir bei Deinen Karten wenig) der Ausgang "freigeschaltet" werden.
$ alsamixer
alsamixer: function snd_ctl_open failed for default: No such device

Ich habe mir auch schon den Kernelcode angesehen und überlegt, ob ich es hart
einkodiere. Dabei ist mir aber fast übel geworden. Ich habe den Eindruck, daß alles
auf maximales Konfliktpotential optimiert ist.

Pseudocode:

Code: Alles auswählen

if ( spdif_on ) {
        disable_analog () ;
        if ( sr != 32000  &&  sr != 44100  &&  sr != 48000 )
            return ;
        enable_digital () ;
}
else {
        disable_digital () ;
        enable_analog () ;
}
Die Hardware läßt Parallelbetrieb von Analog und Digital zu (was unter Windows
der Defaultbetrieb ist). Schalte ich per ioctl (nur welcher?) auf Digital um und habe
gerade 48001 als Abtastfrequenz, ist auf einmal alles stumm.
Noch eins: Mit dem Suse-Uraltkernel (der aber massivst gepached ist) taete ich persoenlich nicht weiterarbeiten. Aktuelle alsa-libs/tools unter einem Suse 9.0 zu installieren ist leider ebenfalls nicht ganz einfach (im 2.6er Kernel sind die alsa-Treiber dagegen eh schon enthalten).
Von SuSE ist ein 2.4.21 drauf. Der ist durch einen ungepatchten 2.4.26 ersetzt worden
(seitdem gehen die Textkonsolen ab tty2 für Zeichen >=128 nicht mehr).
Ein ungepatchter 2.4.29 startet gar nicht mehr.

Um diese Kernel zu übersetzen, bedarf es einiger manueller Eingriffe, weil
Abhängigkeiten nicht ordentlich aufgelöst werden (BT848 benötigt I2S-Code etc.).

Welche Linuxinstallation benutzt Du? Ich hatte mal mit SuSE 4.3 angefangen,
war auch mit der 5.3 noch zu frieden, mit der 6.4 konnte man noch arbeiten,
aber die 9.0 ist eine Katastrophe. Dabei liegen aber auch viele Dinge im Kernel im
Argen (viele Fehler zeigen, daß es nicht den Hauch eines Systemtests gibt).

Wichtig wäre mir eine Beschränkung auf das Wesentliche (nicht 21 nie fertiggestellte
Editoren, 17 nie richtig fertig gestellte Soundmixer, jeder mit einem völlig anderen
Design, 20 Malprogramme, eins langsamer als das andere), sondern 1 bis 2 fertige Tools
zu jedem Aufgabengebiet. OpenOffice sollte drauf sein (und startbar sein).

Verfasst: So 5. Jun 2005, 12:56
von burki
Hi,
alsamixer: function snd_ctl_open failed for default: No such device
welche Module sind geladen, wie sieht die modules.conf aus (bei Suse wird das Ganze mit alsasound initialisiert) ... ?
Bei 2 Soundkarten (werden beide ueberhaupt "sauber" erkannt) muss natuerlich (hab das Problem mit meiner DAB-Box, die als externes Sounddevice zusaetzlich benutzt wird) die Reihenfolge beim Laden der Module beachtet werden und eine als default definiert werden.
Sonst natuerlich man alsamixer ...
Was sagt aplay -l ?
Schalte ich per ioctl (nur welcher?) auf Digital um und habe
gerade 48001 als Abtastfrequenz, ist auf einmal alles stumm.
das ist eben je nach Karte voellig unterschiedlich. Auch mir hilft da nur der Test und ein Spickzettel wirklich weiter.
Kann bei der Hercules auch der Masterclock gesetzt werden ?
Der ist durch einen ungepatchten 2.4.26 ersetzt worden
(seitdem gehen die Textkonsolen ab tty2 für Zeichen >=128 nicht mehr).
Ein ungepatchter 2.4.29 startet gar nicht mehr.
war schon ein Fehler: Ein Suse mit Vanilla-Kernel laeuft leider nicht wirklich stabil. Bei V 9.3 wirds etwas besser, da der 2.6er-Kernel nicht dermassen gepatched wurde.

Ich hab uebrigens auch bei Suse 9.0 die alsa-packages gleich rausgeschmissen und selbst compiliert.
Wichtig wäre mir eine Beschränkung auf das Wesentliche (nicht 21 nie fertiggestellte
Editoren, 17 nie richtig fertig gestellte Soundmixer, jeder mit einem völlig anderen
Design, 20 Malprogramme, eins langsamer als das andere), sondern 1 bis 2 fertige Tools
zu jedem Aufgabengebiet. OpenOffice sollte drauf sein (und startbar sein).
nunja, ich setze eben primaer (hab aber auch noch ein System mit voellig abgespeckten Suse 9.0 am laufen) auf gentoo (Stage 1), da man hier (klar gibts auch da viele bugs) das System wirklich ordentlich an die Gegebenheiten anpassen kann (warum allerdings bei der Installation der vi(m) fehlt und durch nano ersetzt wurde, bleibt mir ein Raetsel).
Allerdings dauert die vollstaendige Installation einige Tage und ein ordentlicher Internetanschluss ist mehr als sinnvoll.
"Haerte Jungs" nehmen natuerlich A/BLFS ...
Gruss
Burkhardt

Verfasst: So 5. Jun 2005, 17:02
von rtv
nunja, ich setze eben primaer ... auf gentoo
Joar, da kann man dann auch mal mit diversen Kerneln rumprobieren, etc..

Generell wurde bereits fast alles gesagt.
Wichtig wäre mir eine Beschränkung auf das Wesentliche .. 1 bis 2 fertige Tools
zu jedem Aufgabengebiet.
Dieses Konzept verfolgt von den brauchbaren Distributionen z.B. http://archlinux.org/
In meinen Augen richtet es sich aber eher an "Fortgeschrittene". Wer noch Grundlagen lernen möchte, sollte lieber die harte Tour nehmen und ein paar Tage für Gentoo investieren.

Möchte man "schnell" ein brauchbares Ergebnis und schätzt vielleicht auch noch eine gute, deutsche Lokalisation, dann führt eigentlich kein Weg mehr an http://ubuntu.com/ vorbei. Im Gegensatz zu den anderen Debian-basierenden Distris (und somit ernstzunehmend) hat Ubuntu nämlich schon den Umstieg von XFree86 auf Xorg vollzogen. Zudem lassen sich z.B. die ATI-Treiber endlich schmerzlos installieren..

Ich verwende übrigens neben diversen Gentoos auf diesem (meinem Hauptrechner) eine Minimal(Server)-Installation von Ubuntu, bei der ich nachträglich XFCE4 installiert habe. Alle nötigen Schritte haben bis hier her kein "Profi-Wissen" vorausgesetzt und funktionieren tut zum ersten Mal ALLES! 8)

Verfasst: So 5. Jun 2005, 22:42
von Frank Klemm
burki hat geschrieben:Hi,
alsamixer: function snd_ctl_open failed for default: No such device
welche Module sind geladen, wie sieht die modules.conf aus (bei Suse wird das Ganze mit alsasound initialisiert) ... ?
Bei 2 Soundkarten (werden beide ueberhaupt "sauber" erkannt)
Beide funktionieren sauber.
Eine versorgt das Wohnzimmer, eine den Computerarbeitsplatz.

Ich habe noch ein weiteres ioctl() eingebastelt -- dieses blockiert die Output-Volumeregler und stellt dabei:
- PCM-Volume auf den maximal möglichen Wert, der nicht verzerrt
- Master-Volume auf den maximal möglichen Wert, der nicht verzerrt
- alle anderen Outputs werden gemutet
Damit ist man erst mal alle Probleme los, daß bei ordentlicher Ansteuerung (z.B. Samples liegen zwischen -32768 und +32767) die Karte verzerrt oder unnötig
stark rauscht. Diese Werte sind für alle Karten, die ich kenne, unterschiedlich
(und wahrscheinlich zu 99,9999% den Anwendern unbekannt).

Lautstärke wird am Verstärker eingestellt.

Für den normalen Anwender könnte ich zwei Testsignale anbieten, mit denen
man diese Regler kalibrieren kann.

Code: Alles auswählen

/proc/pci:
Bus  0, device  31, function  5:
    Multimedia audio controller: Intel Corp. 82801EB AC'97 Audio Controller (rev 2).
      IRQ 17.
      I/O at 0xd800 [0xd8ff].
      I/O at 0xdc00 [0xdc3f].
      Non-prefetchable 32 bit memory at 0xf4101000 [0xf41011ff].
      Non-prefetchable 32 bit memory at 0xf4102000 [0xf41020ff].
Bus  3, device   4, function  0:
    Multimedia audio controller: Cirrus Logic CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator] (rev 1).
      IRQ 20.
      Master Capable.  Latency=64.  Min Gnt=4.Max Lat=24.
      Non-prefetchable 32 bit memory at 0xf310c000 [0xf310cfff].
      Non-prefetchable 32 bit memory at 0xf3000000 [0xf30fffff].
Alle Audiogeräte benutzt und dann alles entladen, was zu entladen ging:

Code: Alles auswählen

Module                  Size  Used by    Tainted: P
ipv6                  206900  -1 (autoclean)
usbcore                68076   1
e1000                  70340   1
cs46xx                 61076   2
i810_audio             26268   1
ac97_codec             13592   0 [cs46xx i810_audio]
soundcore               4324   5 [cs46xx i810_audio]
ide-scsi               10800   1
scsi_mod               99940   1 [ide-scsi]
nls_cp437               4348   3 (autoclean)
nls_iso8859-1           2844   5 (autoclean)
reiserfs              193872   2 (autoclean)
muss natuerlich (hab das Problem mit meiner DAB-Box, die als externes Sounddevice zusaetzlich benutzt wird) die Reihenfolge beim Laden der Module beachtet werden und eine als default definiert werden.
Da sowieso nicht ordentlich von SuSE geladen, werden sie beim Systemstart
geladen. Wer als erstes geladen wird, ist das primäres Soundgerät.
Bei dieser Angelegenheit fällt einem ohnehin auf, daß 2 (oder mehr Soundkarten)
unter Linux etwas exotisches ist. Nur wenige Tools erlauben die Angabe eines
Audiogeräts und stürzen sich nicht immer nur auf /dev/audio0.
Sonst natuerlich man alsamixer ...
Was sagt aplay -l ?
$ aplay -I
aplay: main:503: audio open error: No such device

Kann bei der Hercules auch der Masterclock gesetzt werden ?
Nichts gefunden.
Der ist durch einen ungepatchten 2.4.26 ersetzt worden
(seitdem gehen die Textkonsolen ab tty2 für Zeichen >= 128 nicht mehr).
Ein ungepatchter 2.4.29 startet gar nicht mehr.
war schon ein Fehler: Ein Suse mit Vanilla-Kernel laeuft leider nicht wirklich stabil. Bei V 9.3 wird's etwas besser, da der 2.6er-Kernel nicht dermassen gepatched wurde.
Klingt ja nicht gut. Ist das ein Patchen von Fehlern, die SuSE entdeckt hat (man
muß ja nicht wirklich suchen, um welche rein durch Codelesen zu finden) oder
sind das reingepatchte SuSE-Spezialitäten?
nunja, ich setze eben primaer (hab aber auch noch ein System mit voellig abgespeckten Suse 9.0 am laufen) auf gentoo (Stage 1), da man hier (klar gibts auch da viele bugs) das System wirklich ordentlich an die Gegebenheiten anpassen kann (warum allerdings bei der Installation der vi(m) fehlt und durch nano ersetzt wurde, bleibt mir ein Raetsel).
Allerdings dauert die vollstaendige Installation einige Tage und ein ordentlicher Internetanschluss ist mehr als sinnvoll.
Die Installation und Konfiguration jedes Betriebssystems dauert einige Tage.
Windows muß ich jede Nase lang installieren und konfigurieren (für verschiedene
Rechner). Nach ca. 3 Tagen ist man fertig. Es sind die hunderte kleine Einstellungen,
die nach einem Aufbügeln immer noch notwendig sind.

Zur Ehrenrettung von Linux. Der TOSLink-Out des Motherboards läuft nicht sauber.
Zum einen rauscht(!) er stark, zum anderen verzerrt er hörbar ab ca. -20 dB bei Musik.
Das Testsignal zum Verzerrungstest gibt er weitgehend verzerrungsfrei bis 0 dB wieder.
Sehr sehr seltsam.

Verfasst: Mo 6. Jun 2005, 09:29
von rtv
Der TOSLink-Out des Motherboards läuft nicht sauber.
Zum einen rauscht(!) er stark, zum anderen verzerrt er hörbar ab ca. -20 dB bei Musik.
Das Testsignal zum Verzerrungstest gibt er weitgehend verzerrungsfrei bis 0 dB wieder.
Das hab ich auch bei diversen onboard Sound Lösungen bemerkt. Oftmal kann man mit PCI-Bus betreffenden Bios-Optionen dieses Ärgernis reduzieren. Probieren sollte man z.B. die PCI-Latency, das Master-Read-Caching,Busmaster-Prefetch-Mode, sowie bei aktuellen Mainboards gerne auch Cool'n'Quiet oder Sleep-State-Funktionen..
(Und die TV-Karte möglich weit weg...)

Verfasst: Mo 6. Jun 2005, 10:15
von burki
Hi,
mmh, da fehlen doch einige soundmodule.
Bei mir siehts z.B. so aus:

Code: Alles auswählen

lsmod | grep snd
snd-seq-midi            3488   0  (unused)
snd-seq-midi-event      3712   0  [snd-seq-midi]
snd-seq                33392   0  [snd-seq-midi snd-seq-midi-event]
snd-ice1712            37892   0 
snd-pcm                57988   0  [snd-ice1712]
snd-timer              13628   0  [snd-seq snd-pcm]
snd-ac97-codec         44044   0  [snd-ice1712]
snd-mpu401-uart         3360   0  [snd-ice1712]
snd-rawmidi            13024   0  [snd-seq-midi snd-mpu401-uart]
snd-seq-device          3952   0  [snd-seq-midi snd-seq snd-rawmidi]
snd-cs8427              6376   0  [snd-ice1712]
snd-i2c                 2540   0  [snd-ice1712 snd-cs8427]
snd-ice17xx-ak4xxx      1536   0  [snd-ice1712]
snd-ak4xxx-adda         3596   0  [snd-ice1712 snd-ice17xx-ak4xxx]
snd                    31140   0  [snd-seq-midi snd-seq-midi-event snd-seq snd-ice1712 snd-pcm snd-timer snd-ac97-codec snd-mpu401-uart snd-rawmidi snd-seq-device snd-cs8427 snd-i2c snd-ak4xxx-adda]
soundcore               3588   0  [snd]
snd-page-alloc          6260   0  [snd-pcm]
und

Code: Alles auswählen

aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: EWX2496 [TerraTec EWX24/96], device 0: ICE1712 multi [ICE1712 multi]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
Hab jetzt immer noch nicht verstanden, ob jetzt die DigiOuts beider Karten funktionieren ...
Da sowieso nicht ordentlich von SuSE geladen, werden sie beim Systemstart
geladen. Wer als erstes geladen wird, ist das primäres Soundgerät.
Bei dieser Angelegenheit fällt einem ohnehin auf, daß 2 (oder mehr Soundkarten)
unter Linux etwas exotisches ist. Nur wenige Tools erlauben die Angabe eines
Audiogeräts und stürzen sich nicht immer nur auf /dev/audio0.
wie man es halbwegs sauber macht, ist doch bei alsa-project beschrieben.
Klingt ja nicht gut. Ist das ein Patchen von Fehlern, die SuSE entdeckt hat (man
muß ja nicht wirklich suchen, um welche rein durch Codelesen zu finden) oder
sind das reingepatchte SuSE-Spezialitäten?
es sind bei einem Suse-2.4er-Kernel schon viele Dinge vom 2.6er-Kernel integriert (ueber die Qualitaet der patches mag ich mich nicht aeussern). Einzig sinnvolles Upgrade ist (wenn man bei Suse bleiben mag) das Aufspielen neuerer Kernelsourcen von Suse selbst.
Die Installation und Konfiguration jedes Betriebssystems dauert einige Tage.
Windows muß ich jede Nase lang installieren und konfigurieren (für verschiedene
Rechner). Nach ca. 3 Tagen ist man fertig. Es sind die hunderte kleine Einstellungen,
die nach einem Aufbügeln immer noch notwendig sind.
ein Gentoo wird nicht einfach "draufgebuegelt" (vorallem wenn man stage 1 benutzt nicht), sondern benoetigt schlicht und ergreifend einiges an Zeit fuer die Vorrausplanung (mit welchen Parametern lasse ich meine Programme defaultmaessig compilieren), Download, fuer das Compilieren an sich, etwas fuer den Kernelbau ...
Erst dann kommt die "Feinarbeit" ...

Noch eins: Persoenlich taete ich (und das auch noch bei einem aelteren Suse) kein reiserfs einsetzen (Datenverlust ist da sehr wahrscheinlich). Wenn es etwas "modernes" sein soll, dann eher xfs ...
Gruss
Burkhardt

Zusatz:
Welches alsa und welche Abspielprogramme bzw. libs werden denn benutzt ?
Tritt das Problem mit dem Rauschen beim Abspielen von CDs auf (ist da gar eine interne analoge Verbindung vorhanden) ?
Bei vielen Treibern aber auch Anwendungen wurde m.E. massiv herumgefuscht (da nutzt Deine Kalibrierung nicht unbedingt so viel), was aber in der miesen Hardware begruendet ist.
Nicht umsonst benutze ich die EWX9624 unter Linux ...

Verfasst: Mo 6. Jun 2005, 12:12
von rtv
Noch eins: Persoenlich taete ich (und das auch noch bei einem aelteren Suse) kein reiserfs einsetzen (Datenverlust ist da sehr wahrscheinlich). Wenn es etwas "modernes" sein soll, dann eher xfs ...
Flamewar im nuForum ;)

Auf x86 Architekturen ist reiserfs so stabil, dass ich sogar große Kundenserver mit hoher Datenbanklast mit reiserfs ausliefere! In den Fällen wo Daten verloren gingen, waren fast immer unsaubere Shutdowns/Kernel ooops, etc beteiligt. Gut, wenn man an suspend entwickelt, oder täglich seinen X-Server mit den neuesten binären Grafiktreibern quält mag sowas vorkommen, aber dann verliert man bei XFS noch mehr Daten, da dieses zudem noch aggressiv cached!

Ich hatte bisher mit _allen_ Dateisystemen (incl ext3) Probleme. Und wenn man sich als amd64 User mal den quellcode von reiser4 anschaut, dann biegen sich einem die Zehennägel hoch..

Fazit: Für jeden Zweck das richtige Filesystem!
/boot auf ext2 wegen kompatibilität/bootloader,etc
/root auf ext3, damit man auch von live-cds warten kann, die kein xfs oder reiser integriert haben
/usr/portage auf reiser4 weil die Festplatte dann in den Urlaub gehen kann und man bei Verlusten einfach "emerge sync" zum reparieren aufrufen köööönnte..
/home niemals auf Fat-Systemen, weil man _definitiv_ Ärger mit Berechtigungen bekommen wird..