Natives Envy24 Kernel-Modul funktioniert nicht

uripui

Active Member
Hallo,

Code:
uname -a
FreeBSD  5.3-RELEASE FreeBSD 5.3-RELEASE #0: Fri Nov  5 04:19:18 UTC 2004     
root@harlow.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386

ich verwende als Soundkarte eine M-Audio Delta Audiophile 2496. In den Groups habe ich gelesen,
dass diese Karte auf dem Envy24-Chip basiert.

Bislang gibt es keine native Unterstützung durch den Kernel als solches. Daher habe ich die OSS-
Variante probiert. Leider funktioniert auch OSS nicht (siehe dazu meinen Forum-Eintrag unter:
http://www.4front-tech.com/forum/viewtopic.php?t=238)

Dann habe ich den Groups gelesen, dass vor einiger Zeit sich mal ein Japaner daran versucht hat,
ein natives Kernel-Modul für den Envy24-Chip zu schreiben.

Also habe ich es unter:
http://people.freebsd.org/~lofi/envy24.tar.gz
heruntergeladen und in "/usr/src/sys" entpackt.

Eine Kompilerung mittels "make" jeweils in den Verzeichnissen
"/usr/src/sys/modules/drivers/sound/envy24"
und
"/usr/src/sys/modules/sound/driver/ak452x"
schlug fehl. Hatte einige Defines und Headers nicht gefunden und paar Funktionsaufrufe waren
nicht korrekt.

Danach habe ich die Quelldateien modifiziert ("diff <original> <modifiziert>"):
Code:
:/usr/src/sys/modules/sound/driver/envy24# diff /root/krempel/envy24/dev/sound/pci/ak452x.c /usr/src/sys/dev/sound/pci/ak452x.c
122c122
<       codec->lock = snd_mtxcreate(codec->name);
---
>       codec->lock = snd_mtxcreate(codec->name, codec->name);
246c246
< MODULE_DEPEND(snd_ak452x, snd_pcm, PCM_MINVER, PCM_PREFVER, PCM_MAXVER);
---
> MODULE_DEPEND(snd_ak452x, sound, SOUND_MINVER, SOUND_PREFVER, SOUND_MAXVER);

Code:
:/usr/src/sys/modules/sound/driver/envy24# diff /root/krempel/envy24/dev/sound/pci/envy24.c /usr/src/sys/dev/sound/pci/envy24.c
34,35c34,35
< #include <pci/pcireg.h>
< #include <pci/pcivar.h>
---
> #include <dev/pci/pcireg.h>
> #include <dev/pci/pcivar.h>
2282<           /*flags*/0, &sc->dmat) != 0) {
---
>           /*flags*/0, /*lockfunc*/busdma_lock_mutex,
>           /*lockarg*/&Giant, &sc->dmat) != 0) {
2311c2312
<       sc->lock = snd_mtxcreate(name);
---
>       sc->lock = snd_mtxcreate(name, name);
2443,2444c2444,2445
< MODULE_DEPEND(snd_envy24, snd_pcm, PCM_MINVER, PCM_PREFVER, PCM_MAXVER);
< MODULE_DEPEND(snd_envy24, snd_ak452x, PCM_MINVER, PCM_PREFVER, PCM_MAXVER);
---
> MODULE_DEPEND(snd_envy24, sound, SOUND_MINVER, SOUND_PREFVER, SOUND_MAXVER);
> MODULE_DEPEND(snd_envy24, snd_ak452x, SOUND_MINVER, SOUND_PREFVER, SOUND_MAXVER);
c2282,2283

Eine erneute Kompilerung (wie oben genannt) funktionierte bis auf viele Warnings. Anschließende
"make install"-Ausführungen kopierten dann die Module in mein Modul-Verzeichnis.

Ein "kldload snd_envy24" funktionierte.

Hier der Output von kldstat:
Code:
:/usr/src/sys/modules/sound/driver/envy24# kldstat
Id Refs Address    Size     Name
 1   14 0xc0400000 5cdad0   kernel
 2    2 0xc09ce000 1c180    linux.ko
 3    1 0xc09eb000 4ad9c8   nvidia.ko
 4   14 0xc0e99000 537f0    acpi.ko
 5    1 0xc2a7a000 9000     ntfs.ko
 6    1 0xc2b42000 2000     star_saver.ko
 8    3 0xc36dd000 18000    sound.ko
11    1 0xc3760000 7000     snd_envy24.ko
12    1 0xc3ef5000 2000     snd_ak452x.ko


Hier der Output von dmesg:
Code:
:/usr/src/sys/modules/sound/driver/envy24# dmesg | tail
pcm0: system configuration
  SubVendorID: 0xd634, SubDeviceID: 0x1412
  XIN2 Clock Source: 22.5792MHz(44.1kHz*512)
  MPU-401 UART(s) #: 1
  AC'97 codec: not exist
  ADC #: 1
  DAC #: 1
  Multi-track converter type: I2S(96KHz support, 24bit resolution, ID#0x2)
  S/PDIF(IN/OUT): 1/1 ID# 0x00
  GPIO(mask/dir/state): 0x04/0xfb/0xfe

Hier der Output von sndstat:
Code:
:/usr/src/sys/modules/sound/driver/envy24# cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0: <Envy24 audio(Generic)> at io 0xd800:32,0xd400:16,0xd000:16,0xcc00:64 irq 19 
(5p/3r/0v channels duplex default)

Nur gibt's keinen Mucks aus den Lautsprechern. Weder bei "cat /boot/support.4th > /dev/dsp"
noch bei allen anderen dsp*.*

Code:
:/usr/src/sys/modules/sound/driver/envy24# ll /dev/dsp*
crw-rw-rw-  1 root  wheel   30,   3 26 Nov 22:19 /dev/dsp0.0
crw-rw-rw-  1 root  wheel   30, 0x00010003 26 Nov 20:51 /dev/dsp0.1
crw-rw-rw-  1 root  wheel   30, 0x00020003 26 Nov 20:51 /dev/dsp0.2
crw-rw-rw-  1 root  wheel   30, 0x00030003 26 Nov 20:51 /dev/dsp0.3
crw-rw-rw-  1 root  wheel   30, 0x00040003 26 Nov 20:51 /dev/dsp0.4
crw-rw-rw-  1 root  wheel   30, 0x00050003 26 Nov 20:51 /dev/dsp0.5
crw-rw-rw-  1 root  wheel   30, 0x00060003 26 Nov 20:51 /dev/dsp0.6
crw-rw-rw-  1 root  wheel   30, 0x00070003 26 Nov 20:51 /dev/dsp0.7
crw-rw-rw-  1 root  wheel   30,   5 26 Nov 20:51 /dev/dspW0.0
crw-rw-rw-  1 root  wheel   30, 0x00010005 26 Nov 20:51 /dev/dspW0.1
crw-rw-rw-  1 root  wheel   30, 0x00020005 26 Nov 20:51 /dev/dspW0.2
crw-rw-rw-  1 root  wheel   30, 0x00030005 26 Nov 20:51 /dev/dspW0.3
crw-rw-rw-  1 root  wheel   30, 0x00040005 26 Nov 20:51 /dev/dspW0.4
crw-rw-rw-  1 root  wheel   30, 0x00050005 26 Nov 20:51 /dev/dspW0.5
crw-rw-rw-  1 root  wheel   30, 0x00060005 26 Nov 20:51 /dev/dspW0.6
crw-rw-rw-  1 root  wheel   30, 0x00070005 26 Nov 20:51 /dev/dspW0.7
crw-rw-rw-  1 root  wheel   30, 0x0005000b 26 Nov 20:51 /dev/dspr0.5
crw-rw-rw-  1 root  wheel   30, 0x0006000b 26 Nov 20:51 /dev/dspr0.6
crw-rw-rw-  1 root  wheel   30, 0x0007000b 26 Nov 20:51 /dev/dspr0.7


Hier meine Mixer-Einstellungen
Code:
:/usr/src/sys/modules/sound/driver/envy24# mixer
Mixer vol      is currently set to  75:75
Mixer bass     is currently set to   0:0
Mixer treble   is currently set to   0:0
Mixer synth    is currently set to   0:0
Mixer pcm      is currently set to  75:75
Mixer speaker  is currently set to   0:0
Mixer line     is currently set to  75:75
Mixer mic      is currently set to   0:0
Mixer cd       is currently set to   0:0
Mixer mix      is currently set to   0:0
Recording source: mic

Jetzt weiß ich nicht mehr weiter. Keine Ahnung, was an dem Source-Code der Envy24-Module
evtl. noch verkehrt sein könnte.

Weiß jemand von Euch Rat?


Danke und Gruß,
Uri
 
Zuletzt bearbeitet:
Ärger mit dem Envy24- OSS-Treiber...

Hallo,

Ich habe gestern auch versucht den Oss-treiber zu installieren. Schon der Sofort-Test führte zu keinem Ton (ansders als das bei 5.2.1 der Fall war). Dein Bericht über den kld_envy24 entmutigt mich zusätzlich. Ich schreibe das hier eigentlich nur, um zu signalisieren, daß noch mehr Leute an dieser Problematik Interesse haben, vielleicht nimmt sich ja mal einer des Problems an!?
Ich hatte hier auch schon mal einem Programmierer die 50 Euro Lizensgebühr angeboten, wenn er den vorhandenen Linux-Treiber mal auf FreeBSD anpaßt...aber das war wohl zu wenig Geld ,-))

Die Audiophile 24/96 ist nämlich eine säuisch gute soundkarte für rel. kleines Geld!

Ciao

-Marcus
 
Hallo Marcus,

erstmal vielen Dank für Dein Posting. Hab' schon gedacht, mein Thread hier würde restlos in der Einsamkeit untergehen (so wie in dem 4Front-Forum). Bin froh, dass ich doch nicht alleine da stehe. Danke Dir. :) :) :)


marcus schrieb:
Hallo,
Ich schreibe das hier eigentlich nur, um zu signalisieren, daß noch mehr Leute an dieser Problematik Interesse haben, vielleicht nimmt sich ja mal einer des Problems an!?

Ich bin zwar kein Programmierer, aber ich werde mir am Wochenende mal die Quellen für das alsa-ice1712-Modul angucken und mit den envy24-Quellen vergleichen, ob die bei alsa da was anderes machen.

Komischerweise lädt ja der FreeBSD 5.3-Kernel das envy24-Modul, aber es ertönt nichts.


marcus schrieb:
Ich hatte hier auch schon mal einem Programmierer die 50 Euro Lizensgebühr angeboten, wenn er den vorhandenen Linux-Treiber mal auf FreeBSD anpaßt...aber das war wohl zu wenig Geld ,-))

Ich denke auch mal, dass es so ist wie bei ATI: "kein Interesse wegen zu wenig Nachfragen". Erst wenn Du als Einzelner 10.000 NeuMark spenden würdest, dann ja. ;)
Dann gäb's native Treiber für *BSD.

Ich frage mich sowieso, woher der japanische Autor die Informationen für seinen Quellcode her hat.


marcus schrieb:
Die Audiophile 24/96 ist nämlich eine säuisch gute soundkarte für rel. kleines Geld!

Das unterschreibe ich Dir sofort. :) Auf jeden Fall. Ich benutze Sie, um für mich bissel Musik zu machen (inkl. ext. MIDI-Geräten); und es wäre genial, wenn das auch unter FreeBSD gehen würde.


Nochmals Danke für Dein Posting und Gruß,
Uri
 
Hi uripui,

ich dachte mir schon, daß Du Dich einsam fühlst! ;-))

Ich muß auch sagen, daß der ENVY24 Linux-Treiber auch nie _sofort_ Sound geliefert hat, sondern immer erst noch über diese "Router-Gui" konfiguriert werden mußte. Wenn ich mich recht entsinne, dann musste man von Hand das Signal auf den Monitor Ausgang legen, um am analogen out ein Signal zu haben.
Ich war daher positiv überrascht, als der OSS Treiber unter 5.2.1 ohne Weiteres sofort lief...

Wenn Du zu einem Ergebnis kommst bei Deinen Studien, dann lass es uns doch bitte wissen ;-))!? Am besten mit einem trottelsicheren HOWTO ;-))

ciao

-Marcus
 
Hallo Marcus,

marcus schrieb:
ach noch was: Dein Mixer hat bei "Speaker" den Wert 0, macht Dich das nicht auch stutzig?

Hmm, ich bin davon ausgegangen, dass "Speaker" den Level für den PC-Lautsprecher (Piepser) angibt. Werde ich aber mal zu Hause testen.


marcus schrieb:
Ich muß auch sagen, daß der ENVY24 Linux-Treiber auch nie _sofort_ Sound geliefert hat, sondern immer erst noch über diese "Router-Gui" konfiguriert werden mußte. Wenn ich mich recht entsinne, dann musste man von Hand das Signal auf den Monitor Ausgang legen, um am analogen out ein Signal zu haben.

:)
Hey, _das_ könnte die Lösung sein. Vielleicht ist es so, dass standardmäßig S/PDIF als Ausgabeziel aktiv ist. Oder sonst irgendwelche Lautstärken nicht stimmen, die mit "mixer" nicht eingestellt werden können.

Ich schau' mal, ob ich http://www.alsa-project.org/alsa/ftp/others/envy24control/ bei mir kompilieren und verwenden kann.

Danke für den Hinweis.


marcus schrieb:
Ich war daher positiv überrascht, als der OSS Treiber unter 5.2.1 ohne Weiteres sofort lief...

Vielleicht liegt's auch an irgendeiner Kernel-Einstellung beim 5.3er. Später probiere ich es mal mit deaktivertem ACPI. Wäre nicht schlecht, wenn OSS funktionieren würde, da es zzt doch für FreeBSD-User kostenlos ist, richtig?

Na, mal sehen. Auf jeden Fall geht's wieder vorwärts...


Gruß,
Uri
 
Hi nochmal,

ja, der Treiber unter 5.2.1 hätte 50 USD gekostet, brauchte aber wohl nicht notwendigerweise gekauft zu werden. Allerdings kam dann auch immer diese häßliche ACHTUNG! -Meldung beim booten ;-)
Ich hatte mich auch gar nicht wirklich damit beschäftigt, weil 5.2.1 nur relativ kurz bei mir drauf war und der Treiber wie gesagt ohne Zicken sofort lief. Sonst waren aber immer Einstellungen notwendig...

...wenn du schon dabei bist, dann komipliere doch auch gleich noch "ardour" für FreeBSD, dann würdest Du uns weit nach vorne schießen ;-))

Wenn Dir was gelingt, dann laß mich nicht in der Stille sterben, bitte ;-)) !

ciao

-Marcus
 
So,

kann man also Alles total vergessen:

OSS "envy24":
Läuft weder mit noch ohne ACPI. Ich hab' keine Ahnung, an welchen Kernel-Einstellungen ich feilen müsste.


Natives "envy24":
Ein Versuch der Umpatcherei im envy24control Patchbay läuft nicht, da ich dieses Tool aus dem Alsa-Projekt überhaupt nicht kompiliert bekomme. Es benötigt die Alsa-Headerdateien, die ich ihm beibringen konnte, aber auch die Alsa-Bibliothek, die sich ausschließlich unter Linux kompilieren lassen und dort laufen. Zumindest habe ich es nicht hinbekommen, da er etliche Kernel-Sourcen nicht finden konnte.


ardour:
Benötigt ebenfalls die Alsa-Headerdateien. Die hat er gefressen (mittels configure --with-include-dir=xxxxx). Auch wollte er eine Kernel-Headerdatei haben, die auf meinem System aber unter "sys/endian.h" zu finden war. Dann stimmten einige GTK-Header-Dateien nicht, die ich ihm manuell zugeordnet habe. Dazu musste ich in den Quell-Dateien von ardour was verändern, dass er auf andere Header-Verzeichnisse zugreift, also statt "gtk--/object.h" beispielsweise "gtk/gtkobject.h". Zudem kannte er einige 64er Variablengrößen nicht wie "fopen64" (oder so ähnlich, bin grade unter Windoze). Hab' dann die 64 einfach gestrichen. Dann kanne er "lrfint" (oder so ähnlich) nicht, habe dann einfach einen int-cast genommen.

Soweit konnte ich irgendwie noch Alles so hinwurschteln. Aber dann meckerte er bei den "proxy"-Quelldateien von der gtkmm-Bibliothek, die bei ardour dabei sind, dass ein "forward declaration" gemacht wurde. Im Netz habe ich dazu gelesen, dass das neue gcc 3.x wohl strikter bei der Quellen-Syntax ist. Aber auch die älteren gccs scheiterten. Und wie man jetzt diese Fehlermeldung umgehen kann, ist mir absoult schleierhaft. Sorry. Selbst wenn ardour vollständig kompilieren sollte, weiß ich absolut nicht, ob das Programm überhaupt laufen wird.

Dazu fehlen mir einfach die Kenntnisse...


Leider keine erfolgreichen Nachrichten, Marcus. Also erstmal weiter warten. Im 4front-Forum (Opensound) ist bislang immer noch keine Antwort gekommen.


Kopf hoch und Gruß,
Uri
 
Hi uripui,

vielen Dank für Deine ausfühlichen Reports. Es ist sehr schade, daß wir hier auf absehbare Zeit nicht weiterkommen. In der Tat mache ich mich mit dem Gedanken vertraut, wieder zu Linux zurück zu müssen....

cieo

-Marcus
 
Zurück
Oben