Hallo, Forum.
Da wine ja anscheinend momentan ALSA nicht wirklich unterstützt (bei mir jedenfalls und nach meinen Recherchen auch bei vielen anderen Leuten), hab ich zwei Skripte geschrieben, die es mir ermöglichen, beide Soundsysteme auf einem System zu benutzen - ALSA für den Hausgebrauch und OSS für wine.
Das Ganze bezieht sich auf kernel-2.6.4.
Vorgehensweise:
- Kompiliert die sowohl die OSS- als auch die ALSA-Module für den Kernel.
- Dieses Skript muß beim Booten ausgeführt werden (bei Gentoo: in /etc/conf.d/local.start eintragen), um das OSS-Modul wieder zu entfernen, das automatisch geladen wurde (es sei denn ihr laßt beim Konfigurieren des Kernels die Option "Loadable Modul Support | Automatic kernel module loading" aus.
Code:#!/bin/bash #remove-oss status=`/etc/init.d/alsasound status | cut -d " " -f 5` module="i810_audio" if [ $status = "started" ]; then lsmod | grep $module if [ $? -eq 0 ] ; then echo "Alsasound Status: $status" echo "Entferne $module" rmmod $module echo $! else echo "Alsasoud Status: $status" echo "$module ist nicht geladen" fi fi- Dieses Skript kann dazu benutzt werden, um vom einen zum anderen Soundsystem zu wechseln:
Code:#! /bin/bash #---------------# # Beschreibung: # #---------------#---------------#-------------------# # switchsound: # # Dieses Skript dient zum Wechseln von OSS zu ALSA. # #---------------------------------------------------# #-------------------------------------# # Author: reyneke_at_web_dot_de # #-------------------------------------# #------------# # Variablen: # #------------# alsastatus=`/etc/init.d/alsasound status | cut -d " " -f 5` oss_mod="i810_audio" version="0.9" script="`basename $0`-$version" #-------------# # Funktionen: # #-------------# show_help() { cat << FOO $script: Dient zum sicheren Wechseln von OSS zu ALSA und zurück. Optionen: < show > - zeigt momentan benutztes Soundsystem an. < oss > - wechselt von ALSA zu OSS oder startet OSS. < alsa > - wechselt von OSS zu ALSA oder startet ALSA. < > - das haben Sie ja schon rausgefunden. Der Author reyneke_at_web_dot_de übernimmt keinerlei Haftung für Schäden, die mittelbar, unmittelbar oder adäquat-kausal aus dem Gebrauch des Skripts entstehen. This software comes as is and without any warranty. Licensed under the GPL FOO } sound_check() { ( lsmod | grep $oss_mod ) > /dev/null if [ $? -eq 0 ]; then soundsys="oss" elif [ $? -eq 1 ]; then if [ $alsastatus = "started" ]; then soundsys="alsa" else soundsys="none" fi fi } start_oss() { case $soundsys in "oss") echo "OSS läuft bereits" ;; "alsa") /etc/init.d/alsasound stop echo "Lade $oss_mod ..." modprobe $oss_mod if [ $? -eq 0 ]; then echo "OK." else echo "Fehlgeschlagen." fi ;; "none") echo "Lade $oss_mod ..." modprobe $oss_mod if [ $? -eq 0 ]; then echo "OK." else echo "Fehlgeschlagen." fi ;; esac } start_alsa() { case $soundsys in "alsa") echo "ALSA läuft bereits" ;; "oss") /etc/init.d/alsasound start echo "Entferne $oss_mod ..." rmmod $oss_mod if [ $? -eq 0 ]; then echo "OK." else echo "Fehlgeschlagen." fi ;; "none") /etc/init.d/alsasound start esac } #-------# # Main: # #-------# sound_check case $1 in alsa) start_alsa ;; oss) start_oss ;; show) echo "Momentanes Sound-System: $soundsys." ;; * | help) show_help esac
Den Namen des OSS-Moduls müßt ihr natürlich an eure Hardware anpassen.
BUGS: Kann sein, daß nach dem Start von KDE alsasound nochmal "restarted" werden muß, um /dev/dsp zu erzeugen.
Wie gesagt, keine Garantie, daß es euer System nicht zerschießt oder ähnliches. Bei mir funktioniert's jedenfalls. Für Verbesserungsvorschläge bin ich jederzeit offen.
Lesezeichen