(Halb-)Defekte Hardware unter Linux
Da wollte ich Skype unter Linux ausprobieren, doch mir wurde ein Strich durch die Rechnung gemacht. Sobald ich Skype geöffnet hatte, hing der PC immer für einige Sekunden, lief dann wieder ein paar usw. Erst nach einem Reboot verhielt er sich wieder normal. Der Sound klang beim Abspielen von normalem Ton in den letzten Tagen manchmal verzerrt und das letzte Kernel-Update lag auch erst ein paar Tage zurück, also dachte ich daher zuerst an einen Treiberproblem/Treiberfehler, aber alles war korrekt für meine ESS ES1938 (Solo-1) eingestellt. Nach erneutem Abspielen eines Sounds zeigte sich dann noch das hier:
[sourcecode language="css"]# tail /var/log/messages
Apr 19 21:28:03 nuw snd_es1938_write_cmd timeout (0x02a1/0×0280)
Apr 19 21:28:03 nuw snd_es1938_write_cmd timeout (0x02e8/0×0280)
Apr 19 21:28:03 nuw snd_es1938_write_cmd timeout (0x02a2/0×0280)
Apr 19 21:28:03 nuw snd_es1938_write_cmd timeout (0x02fa/0×0280)
[/sourcecode]
Aha! Also schnell in den Quellcode des Treibers (/usr/src/linux/sound/pci/es1938.c) geschaut (wofür benutze ich schließlich ein Open-Source System?):
[sourcecode language="css"]
/* —————————————————————–
* Write command to Controller Registers
* —————————————————————–*/
static void snd_es1938_write_cmd(struct es1938 *chip, unsigned char cmd)
{
int i;
unsigned char v;
for (i = 0; i < WRITE_LOOP_TIMEOUT; i++) {
if (!(v = inb(SLSB_REG(chip, READSTATUS)) & 0×80)) {
outb(cmd, SLSB_REG(chip, WRITEDATA));
return;
}
}
printk(KERN_ERR "snd_es1938_write_cmd timeout (0×02%x/0×02%x)n", cmd, v);
}
[/sourcecode]
Die Karte wird zwar noch korrekt erkannt, hat aber scheinbar Probleme damit, in die Controller Register zu schreiben. Altersschwäche! Gut, die war immerhin schon über 7 Jahre im Dienst und hatte sich nun die ewige Ruhe verdient. Glücklicherweise lag im prall gefüllten Schrank noch Ersatz parat!
Unter anderen Betriebssystemen hätte man kaum eine Chance gehabt, den Fehler zu finden – außer durch Ausprobieren / schrittweises Ersetzen der Komponenten!



matthias
Einfach den Teil auskommentieren, wo das blöde Ding in die Controller Register schreiben will. Dann gibts auch keine Fehler mehr
Der Adminblogger
Waren bestimmt deine Lautsprecher mit Wackelkontakt und Du hast die gute Soundkarte ausgebaut…
Stefan
Jaja genau