# Soundkarte + Onboardsound ?

## HangLoose

moin moin

ich habe mir ne Terratec DMX XFire 1024 zugelegt, läuft auch soweit ohne probleme, wenn ich allerdings rtcw spielen will, bekomme ich folgende fehlermeldung

/dev/dsp: Input/output error

 Could not mmap /dev/dsp

nach ein bißchen googeln, hab ich rausgefunden das es wohl an den (alsa)treibern für die soundkarte liegt. ich verwende übrigens  die version 0.9.0_rc6.

nun wollte ich für das spiel den onboard soundchip verwenden. ich kann die module dafür auch ohne probleme laden.

lsmod

Module                  Size  Used by    Tainted: P

snd-pcm-oss            38916   0  (autoclean)

snd-mixer-oss          12824   0  (autoclean) [snd-pcm-oss]

snd-via82xx             9004   0

snd-mpu401-uart         3120   0  [snd-via82xx]

snd-cs46xx             65332   1

snd-pcm                59776   0  [snd-pcm-oss snd-via82xx snd-cs46xx]

snd-timer              10728   0  [snd-pcm]

snd-ac97-codec         30500   0  [snd-via82xx snd-cs46xx]

snd-rawmidi            13152   0  [snd-mpu401-uart snd-cs46xx]

snd-seq-device          4204   0  [snd-rawmidi]

snd                    26668   1  [snd-pcm-oss snd-mixer-oss snd-via82xx snd-mpu401-uart snd-cs46xx snd-pcm snd-timer snd-ac97-codec snd-rawmidi snd-seq-device]

allerdings hab ich nur ein /dev/dsp etc. zur verfügung. kann mir jemand sagen, wie ich vorgehen muss, um ein /dev/dsp1 etc. zu erzeugen? reicht es aus, wenn ich in der /etc/devsfd.conf die zusätzlichen einträge mache?

# ALSA/OSS stuff

# Comment/change these if you want to change the permissions on

# the audio devices

LOOKUP          snd          MODLOAD ACTION snd

LOOKUP          dsp          MODLOAD

LOOKUP          mixer        MODLOAD

LOOKUP          midi         MODLOAD

REGISTER        sound/.*     PERMISSIONS root.audio 660

REGISTER        snd/.*       PERMISSIONS root.audio 660

also ein

LOOKUP          dsp1          MODLOAD

LOOKUP          mixer1        MODLOAD

LOOKUP          midi1         MODLOAD

einfüge?

Gruß HangLoose

----------

## choenig

Hi, 

Spuckt der syslog irgendeine meldung aus, wenn du das modul der 2. soundkarte (also vom obsound) modprobst?

(Ziel: devfs hat probleme mit >=2 soundkarten, vielleicht kann ich dir helfen, wenn es dieses problem ist)

take care, have fun

/christian

----------

## HangLoose

hi

folgende fehlermeldung hab ich gefunden

Dec 16 23:46:49 [devfsd] error calling: "unlink" in "GLOBAL"

hier vielleicht auch nochmal meine /etc/modules.d/alsa

# Alsa 0.9.X kernel modules' configuration file.

# $Header: /home/cvsroot/gentoo-x86/media-sound/alsa-driver/files/alsa-modules.conf,v 1.3 2002/06/24 18:05:58 agenkin Exp $

# ALSA portion

alias char-major-116 snd

alias char-major-14 off

options snd snd_major=116 snd_cards_limit=2

options snd-via82xx snd_ac97_clock=48000 snd_enable=2 snd_index=0

options snd-cs46xx snd_enable=1 snd_external_amp=0 snd_index=1 snd_mmap_valid=0 snd_thinkpad=0

# OSS/Free portion

#alias char-major-14 soundcore

#alias sound-slot-0 snd-card-0

#alias sound-slot-1 snd-card-1

##

## IMPORTANT:

## You need to customise this section for your specific sound card(s)

## and then run `update-modules' command.

## Read alsa-driver's INSTALL file in /usr/share/doc for more info.

##

##  ALSA portion

alias snd-card-0 snd-via82xx

alias snd-card-1 snd-cs46xx

## alias snd-card-1 snd-ens1371

##  OSS/Free portion

#alias sound-slot-0 snd-card-0

#alias char-major-14 soundcore

#alias sound-slot-1 snd-card-1

##

# OSS/Free portion - card #1

#alias sound-service-0-0 snd-mixer-oss

#alias sound-service-0-1 snd-seq-oss

#alias sound-service-0-3 snd-pcm-oss

#alias sound-service-0-8 snd-seq-oss

#alias sound-service-0-12 snd-pcm-oss

##  OSS/Free portion - card #2

# alias sound-service-1-0 snd-mixer-oss

# alias sound-service-1-3 snd-pcm-oss

# alias sound-service-1-12 snd-pcm-oss

alias /dev/mixer snd-mixer-oss

alias /dev/dsp snd-pcm-oss

alias /dev/midi snd-seq-oss

#alias /dev/mixer1 snd-mixer-oss

#alias /dev/dsp1 snd-pcm-oss

#alias /dev/midi1 snd-seq-oss

Gruß HL

----------

## choenig

Hmmm, 

Ich erwartete eher eine fehlermeldung, die irgendwas von "Error -17" sagt, naja, der modules.d/alsa kram nuetzt mir net, weil ich leider net weiss, wie deine soundkarten initialisiert werden muessen.

Naja, versuch mal als erstes ein 'touch /dev/dsp1' ... wenn nix passiert, kannste mal versuche, folgenden patch http://groups.google.com/groups?q=alsa+patch+devfs+%22-17%22&hl=de&lr=&ie=UTF-8&selm=linux.kernel.200201061836.g06IaXx1005807%40twopit.underworld&rnum=2 (der devfs >=2 soundkarten bei bringt) zu applien und dann weiter versuchen (evtl. nochmal ein 'touch /dev/dsp1')

take care, have fun

/christian

----------

## HangLoose

hi

ein err -17 hab ich auch gefunden, den hab ich allerdings meiner grafikkarte zugeschrieben  :Wink: 

danke für den tip  :Smile: 

edit => devfs_register(unknown): could not append to parent, err: -17

Gruß HL

----------

## HangLoose

hi

ich hab es eben mal als root versucht

root@linux-client rip # touch /dev/dsp1

touch: Erzeugen von »/dev/dsp1«: Keine Berechtigung

das heißt ich komme um ein patchen nicht drum rum?

Gruß HL

----------

## choenig

Hi,

 *HangLoose wrote:*   

> 
> 
> das heißt ich komme um ein patchen nicht drum rum?
> 
> 

 

vermutlich nicht, ich habe hier den patch auch mit Erfolg laufen (auch um OBsound und sblaster laufen zu haben).

Ich find sehr schade, dass der (wo er doch schon was aelter ist) nicht im 2.4er branch drin ist.

Also berichte mal, ob es geklappt hat.

take care, have fun

/christian

----------

## HangLoose

moin moin

nochmal ne blöde frage, hab noch nie nen kernel gepatcht. ich hab mir folgendes file

--- linux-2.4.17/drivers/sound/sound_core.c.orig Sun Jan 6 17:31:30 2002 

+++ linux-2.4.17/drivers/sound/sound_core.c Sun Jan 6 17:39:43 2002 

@@ -17,7 +17,7 @@ 

* plug into this. The fact they dont all go via OSS doesn't mean 

* they don't have to implement the OSS API. There is a lot of logic 

* to keeping much of the OSS weight out of the code in a compatibility 

- * module, but its up to the driver to rember to load it... 

+ * module, but it's up to the driver to remember to load it... 

* 

* The code provides a set of functions for registration of devices 

* by type. This is done rather than providing a single call so that 

@@ -173,10 +173,10 @@ 

return r; 

} 

- if (r == low) 

+ if ( r < SOUND_STEP ) 

sprintf (name_buf, "%s", name); 

else 

- sprintf (name_buf, "%s%d", name, (r - low) / SOUND_STEP); 

+ sprintf (name_buf, "%s%d", name, (r / SOUND_STEP)); 

s->de = devfs_register (devfs_handle, name_buf, 

DEVFS_FL_NONE, SOUND_MAJOR, s->unit_minor, 

S_IFCHR | mode, fops, NULL); 

@@ -231,17 +231,20 @@ 

int register_sound_special(struct file_operations *fops, int unit) 

{ 

- char *name; 

+ const int chain = (unit & 0x0F); 

+ int max_unit = chain + 128; 

+ const char *name; 

- switch (unit) { 

+ switch (chain) { 

case 0: 

name = "mixer"; 

break; 

case 1: 

name = "sequencer"; 

+ max_unit = unit + 1; 

break; 

case 2: 

- name = "midi00"; 

+ name = "midi"; 

break; 

case 3: 

name = "dsp"; 

@@ -260,6 +263,7 @@ 

break; 

case 8: 

name = "sequencer2"; 

+ max_unit = unit + 1; 

break; 

case 9: 

name = "dmmidi"; 

@@ -280,10 +284,10 @@ 

name = "admmidi"; 

break; 

default: 

- name = "unknown"; 

+ name = "unknownX"; 

break; 

} 

- return sound_insert_unit(&chains[unit&15], fops, -1, unit, unit+1, 

+ return sound_insert_unit(&chains[chain], fops, -1, unit, max_unit, 

name, S_IRUSR | S_IWUSR); 

}

in ein file gespeichert. dann bin ich in das entsprechende verzeichnis, in dem der patch liegt, gewechselt und habe /usr/src/linux/scripts/patch-kernel aufgerufen. mehr wie ein 

Current kernel version is 2.4.19

kommt allerdings nicht zurück. ich kann wohl nicht davon ausgehen, das der kernel schon gepatcht wurde, oder?  :Wink: 

Gruß HL

----------

## A.Stranger

Hi,

soviel Ahnung vom Kernel-Patchen habe ich leider auch nicht. Aber bei mir hat eigentlich folgendes immer geklappt:

- Patch in Datei speichern (z.B. patch.txt)

- Patch in Kernel-Verzeichnis kopieren (/usr/src/linux)

- Patch installieren => "patch -p1 < patch.txt" (ohne ")

----------

## HangLoose

thx  :Wink: 

werd nochmal mein glück versuchen

Gruß HL

----------

## HangLoose

@A.Stranger

wenn ich, wie von dir vorgeschlagen, von hand patche scheint es zu gehen.  :Smile:  bin grade am compilieren.

ps: hoffentlich lohnt sich der ganze aufwand auch, denn wenn ich der onboard soundkarte das device /dev/dsp nicht *fest zuweisen* kann, war der ganze aufwand umsonst  :Wink: 

Gruß HL

----------

## HangLoose

hi

irgendwas ist wohl schief gelaufen. nach dem patchen hab ich den kernel neu compiliert, die alsa treiber neu emerged. die module für die beiden karten werden auch geladen. allerdings steht mir auch weiterhin nur ein /dev/dsp zur verfügung.

wenn ich allerdings ins /dev/snd verzeichnis schaue, sind dort glaube ich neue devices aufgetaucht

ls /dev/snd

controlC0  

controlC1  

midiC1D0  

pcmC0D0c  

pcmC0D0p  

pcmC1D0c  

pcmC1D0p  

timer

oder hat snd gar nichts mit den soundkarten zu tun?

ps: und der ganze aufstand nur wegen rtcw  :Wink: 

pps: das stand übrigens in der .out nach dem patchen

patch: **** malformed patch at line 4: * plug into this. The fact they dont all go via OSS doesn't mean sagt mir ehrlich gesagt nichts  :Wink: 

Gruß HL

----------

## choenig

Aloa,

leider bin ich auch net so bewandert, was diesen kram angeht (sound ist ja eh ein besonderer Bereich in der linuxwelt).

Hast du ein /dev/sound ?

Wenn ja, was ist da drin?

was macht jetzt ein touch /dev/dsp1 ?

worauf zeig der link '/dev/dsp' ?

take care, have fun

/christian

----------

## HangLoose

hi

 *Quote:*   

> (sound ist ja eh ein besonderer Bereich in der linuxwelt). 
> 
> 

 

full ack  :Smile: 

 *Quote:*   

> Hast du ein /dev/sound ? 
> 
> Wenn ja, was ist da drin? 

 

ls /dev/sound

audio  

dsp  

mixer  

unknown

wobei sich das ändert, je nachdem welche karte ich in der alsa.conf als 1. definiert habe.

 *Quote:*   

> was macht jetzt ein touch /dev/dsp1 ? 
> 
> 

 

alles beim alten, keine berechtigung

 *Quote:*   

> worauf zeig der link '/dev/dsp' ? 

 

auf /dev/sound/dsp

ich bin mit meinem latein auch erstmal am ende aber danke schonmal für deine hilfe  :Wink: 

Gruß HL

----------

## choenig

hmmm, 

das 'unknown' in /dev/sound spricht dafuer, dass der patch net aktiv ist, das ist genau das verhalten, was es ohne patch hat.

Sicher, dass er richtig applied ist?

/christian

----------

## HangLoose

hm

also ich hab jetzt nicht mehr den genauen wortlaut parat, aber sowas in der art sound_core.c erfolgreich gepatcht. und in der .out stand nur folgende zeile

patch: **** malformed patch at line 4: * plug into this. The fact they dont all go via OSS doesn't mean

gibt's noch ne andere möglichkeit zu überprüfen, ob das mit dem patche geklappt hat?

Gruß HL

----------

## choenig

such halt mal in der sound_core.* nach dem inhalt des patches.

du hast auch die soundunterstuetzung im kernel aktiviert?  :Wink: 

/christian

----------

## HangLoose

hi

thx erstmal  :Smile: 

ich werd mich morgen mal auf die suche begeben, für heute hab ich erstmal die faxen dicke von sound_core's und patchen  :Wink: 

 *Quote:*   

> du hast auch die soundunterstuetzung im kernel aktiviert? 
> 
> 

 

abwechselnd gehen die beiden wunderbar  :Smile: 

Gruß HL

----------

## choenig

OK, bis morgen  :Wink: 

take care, have fun

/christian

----------

## HangLoose

hi nevertheless

das mit dem patchen des kernels ist wohl irgendwie in die hose gegangen. jedenfalls hab ich es nicht hinbekommen, das ich neben /dev/dsp auch noch ein /dev/dsp1 zur verfügung habe.

aber ich habe heute nochmal ein wenig gegoogelt und bin auf die lösung zu meinem problem mit der terratec karte und rtcw gestoßen. in die /etc/modules.d/alsa einfach folgende option

options snd-cs46xx mmap_valid=1

und schon funzt auch rtcw mit der terratec  :Smile: 

Gruß HL

----------

## choenig

Hi,  

long time no see  :Wink: 

So, ich hab gerade nen neuen kernel installiert, und bin dann auch auf das Problem mit dem kernelpatchen gestossen. Dann hab ich ein bissle rumexperimentiert, und kam auf folgendes:

```

elara / # cd /usr/src/linux

elara /usr/src/linux # patch -l -p1 < ~/patch

```

Dabei ist das -l das wichtige, denn das sorgt dafuer, dass patch die whitespaces ignoriert. Also damit klappt dann auch das patchen und dann kannste auch beide "Soundkarten" gleichzeitig nutzen  :Smile: 

take care, have fun

/christian

----------

## HangLoose

moin moin

ich konnte *mein problem* ja mittlerweile anders lösen und hab mich deshalb nicht mehr um das patchen gekümmert. aber die option -l hatte ich nicht genommen. danke für den tip  :Smile: 

wenn ich mal langeweile habe, werde ich das eventuell nochmal versuchen  :Wink: 

viel spaß mit deinen beiden *krachmachern*  :Smile: 

Gruß HL

----------

