(SiS 7018, FreeBSD 6.2) pcm0:record:0:dsp0.0: record interrupt timeout, channel dead

ghost

Geistreich!?
hallo allerseits!

ich habe ein problem mit der aufnahme von tönen über das mikrophon,
sowohl das interne mikro meines laptops, als auch das externe funktionieren nicht.
wenn versucht wird aus /dev/dspr0.0 zu lesen, tritt nach ca. 1 sekunde der folgende fehler auf:
Code:
pcm0:record:0:dsp0.0: record interrupt timeout, channel dead

ich benutze den standard kernel (GENERIC) und habe als alternative zu den standard treibern von freebsd das open sound system probiert.
aufnahmen mit den kernelmodulen des oss funktionieren, nur erscheint nach ca. 20 minuten folgende meldung:
Code:
trident0: <SiS 7018> port 0xd400-0xd4ff mem 0xdfff0000-0xdfff0fff irq 11 at device 1.4 on pci0
OSS: Unable to allocate 65536 bytes for a DMA buffer
run soundoff and run soundon again.
trident: oss: Failed to allocate a DMA buffer.
osscore: Failed to allocate DMA buffer for audio engine 0/SiS 7018 (rev 2)

und ich muss das system neu starten, da "soundoff" die oss-module nicht entladen kann.


uname -a:
Code:
FreeBSD ghost.lap 6.2-RELEASE FreeBSD 6.2-RELEASE #0: Fri Jan 12 10:40:27 UTC 2007     root@dessler.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386

kldload snd_t4dwave:
Code:
pcm0: <SiS 7018> port 0xd400-0xd4ff mem 0xdfff0000-0xdfff0fff irq 11 at device 1.4 on pci0
pcm0: <Avance Logic ALC200 AC97 Codec>
pcm0: [GIANT-LOCKED]

cat /dev/sndstat:
Code:
pcm0: <SiS 7018> at io 0xd400 irq 11 kld snd_t4dwave (4p/1r/0v channels duplex default)

ich habe alles was an diffs für "t4dwave.c" bei google zu finden war probiert, inklusive den patches von ariff und Pyun YongHyeon, leider erfolglos.
ebenso war eine erhöhung der vchans erfolglos.

kennt jemand einen workaround, außer oss, oder weiß jemand rat?

vielen dank!
 
Moin Ghost,

zu deinem Fehler von OSS von 4Front kann man schlecht etwas sagen, da es sich um Closed-Source handelt. Ggf. dort im Forum mal nachfragen: http://www.4front-tech.com.

Zu den Patches von Ariff ist noch zu sagen, dass es sich nicht um Patches für OSS handelt, sondern Patches des Source-Trees. D.h. es wird ein komplett neuer Soundtreiber (snd_hda) in den Source-Tree eingepatcht. Du musst dementsprechend dann auch kldload snd_hda eingeben, damit der richtige Treiber geladen wird.

Gruss, Elwood
 
Zuletzt bearbeitet:
Zu den Patches von Ariff ist noch zu sagen, dass es sich nicht um Patches für OSS handelt, sondern Patches des Source-Trees.
ich weiß. ;-)

danke für den tip mit snd_hda.
ich werde die ariff patches noch einmal einspielen und schauen ob es funktioniert.
(ich hatte nach dem ersten einspielen der patches weiterhin snd_t4dwave geladen, statt snd_hda.)

mfg
 
also, ariffs snd_RELENG_6 diff in die sound sourcen patchen und die sound-module neu bauen geht nicht.
Code:
cc -O2 -fno-strict-aliasing -pipe -Werror -D_KERNEL -DKLD_MODULE -nostdinc -I-   -I. -I@ -I@/contrib/altq -I@/../include -finline-limit=8000 -fno-common  -mno-align-long-strings -mpreferred-stack-boundary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -ffreestanding -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -fformat-extensions -std=c99 -c /usr/src/sys/modules/sound/driver/ich/../../../../dev/sound/pci/ich.c
/usr/src/sys/modules/sound/driver/ich/../../../../dev/sound/pci/ich.c: In function `ich_pci_attach':
/usr/src/sys/modules/sound/driver/ich/../../../../dev/sound/pci/ich.c:910: error: `ICH_MIN_BUFSZ' undeclared (first use in this function)
/usr/src/sys/modules/sound/driver/ich/../../../../dev/sound/pci/ich.c:910: error: (Each undeclared identifier is reported only once
/usr/src/sys/modules/sound/driver/ich/../../../../dev/sound/pci/ich.c:910: error: for each function it appears in.)
/usr/src/sys/modules/sound/driver/ich/../../../../dev/sound/pci/ich.c:919: error: `ICH_MIN_BLKCNT' undeclared (first use in this function)
/usr/src/sys/modules/sound/driver/ich/../../../../dev/sound/pci/ich.c:921: error: `ICH_MAX_BLKCNT' undeclared (first use in this function)
/usr/src/sys/modules/sound/driver/ich/../../../../dev/sound/pci/ich.c:924: error: `ICH_DEFAULT_BLKCNT' undeclared (first use in this function)
*** Error code 1

Stop in /usr/src/sys/modules/sound/driver/ich.
*** Error code 1

Stop in /usr/src/sys/modules/sound/driver.
*** Error code 1

Stop in /usr/src/sys/modules/sound.

das einspielen des binärpaketes nach "/boot/kernel" funktioniert.

wenn ich jetzt snd_hda lade passiert nichts.
der sound funktioniert nur, wenn ich wie gewohnt snd_t4dwave lade.

aber gut, nach einem "kldload snd_t4dwave" kommen töne aus den lautsprechern und wenn ich ins mikro spreche bleiben die im eröffnungspost genannten fehlermeldungen aus.

komisch ist aber:
"cat /dev/dsp >> tstrec.snd" resp. "cat /dev/dsp0.r0 >> tstrec.snd"
macht nichts.
wenn ich ins mikro spreche oder musik über den mikrofon anschluss einspiele bleibt die datei tstrec.snd leer, aber es kommt was aus den lautsprechern.

also mit skype getestet, skype meldet weiterhin probleme mit dem audiogerät.
(wortwörtliche meldung im skypefenster: "Es besteht ein Problem mit dem Audiogerät.")

in den einstellungen von skype steht "/dev/dsp" als einziges audiogerät.
Code:
ghost# ls /dev | grep -x "dsp"
ghost#
ghost# ls -a /dev | grep -x "dsp"
ghost#
d.h. /dev/dsp ist nicht vorhanden, aber:
Code:
ghost# ln -s /dev/dsp0.r0 /dev/dsp
ln: /dev/dsp: File exists
ghost#
wie das - verstehe ich nicht?!

außerdem ist mir bei exzessivem testen des mikros
(symbolische links zu versch. dspX.xX in /dev/, versch. einstellungen testen, diverse "cat /dev/sdpX.xX" etc.)
an einem tag 3 mal der laptop abgeschmiert.
kein b.s.o.d. oder hänger, er hat sich ohne meldung in den logs o.ä.
neu gestartet.
seltsam - zufall oder kann es an den ariff-modulen, bzw. an mir liegen?
die eingespielten binärmodule sind für fbsd6.0, in ermangelung von alternativen für fbsd6.2 habe ich sie aber trotzdem eingespielt.

mfg
 
Moin,

@ghost: Das ist richtig... die aktuellen Sourcen lassen sich zur Zeit nicht patchen, da es im src-tree Änderungen gab, die Ariff noch nicht im Patch berücksichtigt hat, also etwas Geduld oder wie schon geschrieben Binaries nehmen.

Bei Skype bekomme ich keine Fehlermeldung, aber bei echo123 wird bei mir zZt. nichts aufgenommen. Hab mich damit allerdings jetzt nicht weiter beschäftigt, sry.
Mir ist jetzt nur nicht klar, warum du nicht kldload snd_hda eingibst, um die Binaries zu laden?!?! :)

Gruss, Elwood
 
mahlzeit!

zu snd_hda:
Code:
ghost# kldload snd_hda
ghost# kldstat
Id Refs Address    Size     Name
 1   15 0xc0400000 6f6544   kernel
 2    1 0xc0af7000 59f20    acpi.ko
 3    1 0xc23c3000 d000     ipfw.ko
 4    1 0xc23ef000 16000    linux.ko
 5    1 0xc36a1000 3000     sis.ko
 6    1 0xc36a7000 e000     drm.ko
58    1 0xc34e6000 f000     snd_hda.ko
59    1 0xc3913000 33000    sound.ko
ghost# cat /dev/sndstat
FreeBSD Audio Driver (newpcm: 64bit)
Installed devices:
ghost# kldunload snd_hda
ghost#

aber

Code:
ghost# kldload snd_t4dwave
pcm0: <SiS 7018> port 0xd400-0xd4ff mem 0xdfff0000-0xdfff0fff irq 11 at device 1.4 on pci0
pcm0: <Avance Logic ALC200 AC97 Codec>
pcm0: [GIANT-LOCKED]
ghost# kldstat
Id Refs Address    Size     Name
 1   15 0xc0400000 6f6544   kernel
 2    1 0xc0af7000 59f20    acpi.ko
 3    1 0xc23c3000 d000     ipfw.ko
 4    1 0xc23ef000 16000    linux.ko
 5    1 0xc36a1000 3000     sis.ko
 6    1 0xc36a7000 e000     drm.ko
58    1 0xc34e6000 4000     snd_t4dwave.ko
59    1 0xc3913000 33000    sound.ko
ghost# cat /dev/sndstat
FreeBSD Audio Driver (newpcm: 64bit)
Installed devices:
pcm0: <SiS 7018> at io 0xd400 irq 11 kld snd_t4dwave (4p/1r/1v channels duplex default)
ghost#

deswegen kann ich kein "kldload snd_hda" benutzen.

gruß
 
ich habe grade versucht den current.diff auf die ungepatcheten 6.2 sourcen anzuwenden
-> geht nicht.
und den current.diff auf die mit dem 6.0RELENG gepatcheten sourcen scheiterte auch (nicht am compilen, sondern schon beim patchen).

was aber passiert, wenn ich die nun beide zusammen schneide,
also händisch ein einziges diff draus mache und dass einspiele?!?

lohnt sich der aufwand, könnte das funktionieren?

salute
 
geht auch anders. hab mal n patch gemacht:
Code:
*** ich.c       Sun Feb 11 17:31:47 2007
--- ich.c.fix   Sun Feb 11 17:31:47 2007
***************
*** 41,46 ****
--- 41,52 ----
  #define ICH_DEFAULT_BUFSZ 16384
  #define ICH_MAX_BUFSZ 65536
  
+ /* COMPILE FIX */
+ #define ICH_MIN_BUFSZ 4096
+ #define ICH_DEFAULT_BLKCNT 2
+ #define ICH_MAX_BLKCNT 32
+ #define ICH_MIN_BLKCNT 2
+ 
  #define INTEL_VENDORID        0x8086
  #define SIS_VENDORID  0x1039
  #define NVIDIA_VENDORID       0x10de

einfach auf ich.c in /usr/src/sys/dev/sound/pci/ anwenden.
 
@Elwood
ja, hab ich auch grade (freudig erregt :-) ) festgestellt.

ich habe mir mit meinem rumgepatche wahrscheinlich den src-tree vermurkst,
deswegen cvsup'pe ich mir grad die sourcen neu und werde dann mal den neuen ariff-patch testen.

ich melde mich wieder wenn ich mehr weiß und getestet habe.

danke!

grüße
 
so, hier meine ergebnisse:

Code:
ghost# gzcat snd_RELENG_6_20070212_142_lowlatency.diff.gz | patch -p0 -d /usr/src >& patch.log
ghost# cat patch.log | grep -nC 3 failed
565-|+++ sys/dev/sound/pci/ich.c	Sat Feb 10 02:40:46 2007
566---------------------------
567-Patching file sys/dev/sound/pci/ich.c using Plan A...
568:Hunk #1 failed at 32.
569-Hunk #2 succeeded at 76.
570-Hunk #3 succeeded at 137.
571-Hunk #4 succeeded at 163.
--
607-Hunk #40 succeeded at 1130.
608-Hunk #41 succeeded at 1138.
609-Hunk #42 succeeded at 1149.
610:1 out of 42 hunks failed--saving rejects to sys/dev/sound/pci/ich.c.rej
611-Hmm...  The next patch looks like a unified diff to me...
612-The text leading up to this was:
613---------------------------
--
804-|+++ sys/dev/sound/pcm/buffer.c	Sat Feb 10 02:40:46 2007
805---------------------------
806-Patching file sys/dev/sound/pcm/buffer.c using Plan A...
807:Hunk #1 failed at 28.
808:Hunk #2 failed at 48.
809:Hunk #3 failed at 126.
810-Hunk #4 succeeded at 175 (offset -10 lines).
811-Hunk #5 succeeded at 197 (offset -10 lines).
812-Hunk #6 succeeded at 216 (offset -10 lines).
--
822-Hunk #16 succeeded at 639 (offset -10 lines).
823-Hunk #17 succeeded at 659 (offset -10 lines).
824-Hunk #18 succeeded at 711 (offset -10 lines).
825:3 out of 18 hunks failed--saving rejects to sys/dev/sound/pcm/buffer.c.rej
826-Hmm...  The next patch looks like a unified diff to me...
827-The text leading up to this was:
828---------------------------
--
830-|+++ sys/dev/sound/pcm/buffer.h	Sat Feb 10 02:40:46 2007
831---------------------------
832-Patching file sys/dev/sound/pcm/buffer.h using Plan A...
833:Hunk #1 failed at 23.
834-Hunk #2 succeeded at 38 (offset -1 lines).
835-Hunk #3 succeeded at 72 (offset -1 lines).
836-Hunk #4 succeeded at 97 (offset -1 lines).
837-Hunk #5 succeeded at 107 (offset -1 lines).
838-Hunk #6 succeeded at 124 (offset -1 lines).
839:1 out of 6 hunks failed--saving rejects to sys/dev/sound/pcm/buffer.h.rej
840-Hmm...  The next patch looks like a unified diff to me...
841-The text leading up to this was:
842---------------------------
--
1142---------------------------
1143-Patching file sys/dev/sound/pcm/vchan.c using Plan A...
1144-Hunk #1 succeeded at 1.
1145:Hunk #2 failed at 23.
1146-Hunk #3 succeeded at 245.
1147-Hunk #4 succeeded at 338 (offset -1 lines).
1148-Hunk #5 succeeded at 353 (offset -1 lines).
--
1166-Hunk #23 succeeded at 857 (offset -1 lines).
1167-Hunk #24 succeeded at 895 (offset -1 lines).
1168-Hunk #25 succeeded at 930 (offset -1 lines).
1169:1 out of 25 hunks failed--saving rejects to sys/dev/sound/pcm/vchan.c.rej
1170-Hmm...  The next patch looks like a unified diff to me...
1171-The text leading up to this was:
1172---------------------------
ghost#

ich habe es trotzdem darauf ankommen lassen...

Code:
ghost# cd /usr/src/sys/modules/sound
ghost# make && echo "Was hier folgt hab ich rausgeschnitten weil zu viel."
ghost# echo "Also nochmal (diesmal kuerzer):"
ghost# make >& build.txt && echo "build.txt siehe Anhang des Postings :-)"

wie gesagt, meinen src-tree hab ich kurz vorher aktualisiert.

mfg
 

Anhänge

hm, ich habe jetzt auch die neuen binarys getestet.

Code:
ghost# kldload snd_t4dwave
pcm0: <SiS 7018> port 0xd400-0xd4ff mem 0xdfff0000-0xdfff0fff irq 11 at device 1.4 on pci0
pcm0: <Avance Logic ALC200 AC97 Codec>
pcm0: [GIANT-LOCKED]
ghost# cat /dev/dsp0.r0
pcm0:record:0:dsp0.r0: record interrupt timeout, channel dead
cat: /dev/dsp0.r0: Invaild argument.
ghost# cat /dev/dsp
pcm0:record:0:dsp0.r0: record interrupt timeout, channel dead
cat: /dev/dsp0.r0: Invaild argument.

womit wir wieder am anfang wäre(n).
aufnehmen geht nicht, abspielen funktioniert.

mal eine frage, wo kommt das "Invalid argument" her?
das gerät ist ja da, auch noch nach dem der fehler aufgetreten ist.

mfg
 
Moin Ghost,
also der neue Patch läuft hier prima (sprich: es läßt sich wieder kompilen). Ich habe mir jetzt den Ariff-Patch angeguckt: der t4dwave Treiber wird in keiner Weise geändert. Also Ariff-Patch vergessen und weglassen -> falsche Baustelle!

Erstmal ratlos... Elwood
 
Entschuldigung für das pushen...

Hallo!
Nun, es ist ja schon eine ganze Weile her, dass ich diesen Thread gestartet habe
und ich bin mehr oder minder seither auf Windows 2000 umgestiegen.

Nun brauche ich aber das aus Kompatibilitätsgründen installierte Windows nicht mehr
und wollte mich erkundigen ob sich im t4dwave Treiber etwas getan hat.

D.h. wie sieht es unter FreeBSD 7.0 aus. Tritt der Fehler dort immernoch auf?

Vielen Dank!

mfg
 
Zuletzt bearbeitet:
Ich habe HIER
ein DIFF gefunden, welches Augenscheinlich auch auf mein Problem passt.

Code:
--- t4dwave.c.orig	Tue Mar  1 17:58:05 2005
+++ t4dwave.c	Wed Oct 11 09:57:42 2006
@@ -93,6 +93,7 @@
 
 	struct mtx *lock;
 
+	u_int32_t numchans;
 	u_int32_t playchns;
 	unsigned int bufsz;
 
@@ -725,7 +726,7 @@
 	intsrc = tr_rd(tr, TR_REG_MISCINT, 4);
 	if (intsrc & TR_INT_ADDR) {
 		chnum = 0;
-		while (chnum < 64) {
+		while (chnum < tr->numchans) {
 			mask = 0x00000001;
 			active = tr_rd(tr, (chnum < 32)? TR_REG_ADDRINTA : TR_REG_ADDRINTB, 4);
 			bufhalf = tr_rd(tr, (chnum < 32)? TR_REG_CSPF_A : TR_REG_CSPF_B, 4);
@@ -773,6 +774,7 @@
 		tr_wr(tr, SPA_REG_CODECST, SPA_RST_OFF, 4);
 		break;
 	case TDX_PCI_ID:
+	case ALI_PCI_ID:
 		tr_wr(tr, TDX_REG_CODECST, TDX_CDC_ON, 4);
 		break;
 	case TNX_PCI_ID:
@@ -846,6 +848,10 @@
 		device_printf(dev, "unable to initialize the card\n");
 		goto bad;
 	}
+	if (tr->type == ALI_PCI_ID)
+		tr->numchans = 32;
+	else
+		tr->numchans = 64;
 	tr->playchns = 0;
 
 	codec = AC97_CREATE(dev, tr, tr_ac97);

Wäre jemand so nett und würde das für mich testen?
(Ich weiß, eigentlich soll man keine "Kann das mal jemand .."; "Macht ihr mir mal..." etc. Fragen stellen, aber ich habe grade noch keine FBSD Installation am Laufen. Sorry)

Danke!
 
Lösung?
Auf FBSD7 umsteigen oder versuchen unter FBSD < 7.0 die pcm Sourcen
zu bauen. Das werde ich aber nicht noch probieren. :ugly:

[OFFTOPIC]
Nachdem ich jetzt wieder vollständig auf FBSD umgestiegen bin, habe ich bemerkt, dass FreeBSD ein Problem mit meiner WG511T Netgear WLan Karte hat:

Code:
ghost# dmesg | grep irq11
interrupt storm detected on "irq11:"; throttling interrupt source
ghost# echo "Das o.g. kommt ziemlich oft vor, also:" acd0: CDRW <UJDA710/1.06> at ata1-master UDMA33
GEOM_LABEL: Label for provider acd0 is iso9660/MP_390.
acd0: FAILURE - INQUIRY ILLEGAL REQUEST asc=0x24 ascq=0x00 sks=0x40 0x00 0x01
>> /dev/null
ghost# vmstat -i | grep irq11
irq11: pcm0 cbb0+                 976251         28
ghost# dmesg | grep cbb0
cbb0: <O2Micro OZ6812/6872 PCI-CardBus Bridge> at device 3.0 on pci0
cardbus0: <CardBus bus> on cbb0
cbb0: [ITHREAD]
ghost# dmesg | grep cardbus0
cardbus0: <CardBus bus> on cbb0
ath0: <Atheros 5212> mem 0x88000000-0x8800ffff irq 11 at device 0.0 on cardbus0
ghost#

ein Problem mit einem USB-Bluetooth-Stick hat:
Code:
ghost# echo Wir stecken einen Acer Bluetooth 1\.2 USB Dongle vom Typ \"BT-900\" ein\.\.\. >> /dev/null
ghost# echo "Nichts passiert, also:" >> /dev/null
ghost# dmesg | tail -n 5
ath0: device timeout
interrupt storm detected on "irq11:"; throttling interrupt source
interrupt storm detected on "irq11:"; throttling interrupt source
uhub0: device problem (IOERROR), disabling port 1
uhub0: device problem (IOERROR), disabling port 1
ghost#

Super, uhub0 steigt beim "BT-900" aus... :eek:
ath0 wird bei Dauerbetrieb immer langsamer, sodas ich nach 2 Tagen trotz 16MBit-DSL mit 24k unterwegs bin... ;'(
mein CD-Laufwerk auch irgendwelche Kopfschmerzen hat, die dmesg mir
gerne mitteilt:
Code:
ghost# dmesg | grep acd0
acd0: CDRW <UJDA710/1.06> at ata1-master UDMA33
acd0: FAILURE - INQUIRY ILLEGAL REQUEST asc=0x24 ascq=0x00 sks=0x40 0x00 0x01
ghost#
...

Aber wenigstens die eigenen Schreie und Flüche kann ich in meinen Laptoplautsprechern hören, weil "/dev/dsp0.r0" bei
Code:
ghost# cat /dev/dsp0.r0
cat: /dev/dsp0.r0: Device busy
ghost#
wie zu sehen zwar beschäftigt ist, aber ansonsten die Töne gut vom Mic nach /dev/dsp0.0 kommen, und das glücklicherweise ohne
Code:
pcm0:record:0:dsp0.0: record interrupt timeout, channel dead
:grumble:
[/OFFTOPIC]

Also Alles in Allem war die Unternehmung für das Aufnehmen von Sprache über das Mikrofon auf FBSD7 zu warten erfolgreich. Dafür geht jetzt einiges nicht mehr, was bei FBSD6.2 keine Probleme bereitete.

Sorry für den Ausbruch, bin grad irgendwie sehr verzweifelt...
Mfg
 
Zurück
Oben