Hi,
after this patch:
http://cvs.winehq.org/patch.py?id=16795
the installation of Zoo Tycoon 1 demo shows:
ALSA lib control.c:654:(snd_ctl_open_noupdate) Invalid CTL plug:hw:0
my .config:
;"Drivers" = "wineoss.drv" ; default for most common configurations ;"Drivers" = "winearts.drv" ; for KDE "Drivers" = "winealsa.drv" ; for ALSA users ;"Drivers" = "winejack.drv" ; for Jack sound server ;"Drivers" = "winenas.drv" ; for NAS sound system ;"Drivers" = "wineaudioio.drv" ; for Solaris machines ;"Drivers" = "" ; to disable sound
sound doesn't seem to be affected.
Any idea's if this is serious enough?
Paul.
Hmm. That's my patch, but it bumps into one from Robert Reif.
Robert, is plug:hw:N the correct device naming convention for PCM opens? I've always done plughw:N. It appears as though the snd_hctl_open of plug:hw:0 is failing.
I can't tell because of the lack of Alsa documentation which is supposed to be right; if we're supposed to do plughw:0 instead of plug:hw:0, I'll have to fudge that code for the volume control stuff.
Paul, you can test this for yourself by adding a
[ALSA] "PlaybackDevice"="plughw"
to your config (or just try "hw" if that fails too).
and seeing if everything still works (if the error below goes away but a new one pops up, then I have work to do :-/).
Cheers,
Jeremy
Paul Vriens wrote:
Hi,
after this patch:
http://cvs.winehq.org/patch.py?id=16795
the installation of Zoo Tycoon 1 demo shows:
ALSA lib control.c:654:(snd_ctl_open_noupdate) Invalid CTL plug:hw:0
my .config:
;"Drivers" = "wineoss.drv" ; default for most common configurations ;"Drivers" = "winearts.drv" ; for KDE "Drivers" = "winealsa.drv" ; for ALSA users ;"Drivers" = "winejack.drv" ; for Jack sound server ;"Drivers" = "winenas.drv" ; for NAS sound system ;"Drivers" = "wineaudioio.drv" ; for Solaris machines ;"Drivers" = "" ; to disable sound
sound doesn't seem to be affected.
Any idea's if this is serious enough?
Paul.
On Thu, 2005-03-24 at 21:26, Jeremy White wrote:
Hmm. That's my patch, but it bumps into one from Robert Reif.
Robert, is plug:hw:N the correct device naming convention for PCM opens? I've always done plughw:N. It appears as though the snd_hctl_open of plug:hw:0 is failing.
I can't tell because of the lack of Alsa documentation which is supposed to be right; if we're supposed to do plughw:0 instead of plug:hw:0, I'll have to fudge that code for the volume control stuff.
Paul, you can test this for yourself by adding a
[ALSA] "PlaybackDevice"="plughw"
This doesn't make a difference.
to your config (or just try "hw" if that fails too).
The error message disappears but a new is there:
fixme:wave:ALSA_WaveInit -
and seeing if everything still works (if the error below goes away but a new one pops up, then I have work to do :-/).
Cheers,
Jeremy
It doesn't seem to affect the sound though.
Running current CVS with a +wave gives:
trace:wave:ALSA_WaveInit using waveout device "plug:hw:0" trace:wave:ALSA_WaveInit dev=0 id=Intel ICH name=Intel 82801DB-ICH4 subdev=0 subdev_name=subdevice #0 subdev_avail=0 subdev_num=1 stream=PLAYBACK subclass=GENERIC MIX trace:wave:ALSA_TraceParameters FLAGS: sampleres=false overrng=true pause=true resume=true syncstart=true batch=true block=true double=true halfd=true joint=true trace:wave:ALSA_TraceParameters access=(null) trace:wave:ALSA_TraceParameters format=(null) trace:wave:ALSA_TraceParameters channels_min=1, channels_min_max=10000 trace:wave:ALSA_TraceParameters buffer_size_min=1, buffer_size_min_max=4294967294 trace:wave:ALSA_TraceParameters rate_min=4000 rate_max=4294967295 trace:wave:ALSA_TraceParameters buffer_time_min=1 buffer_time_max=4294967295 trace:wave:ALSA_TraceParameters periods_min=0 periods_max=4294967295 trace:wave:ALSA_TraceParameters period_size_min=0, period_size_min_max=4294967295 trace:wave:ALSA_TraceParameters period_time_min=83 period_time_max=2048000 trace:wave:ALSA_TraceParameters tick_time=1000 trace:wave:ALSA_WaveInit Configured with dwFmts=000fffff dwSupport=00000060 ALSA lib control.c:654:(snd_ctl_open_noupdate) Invalid CTL plug:hw:0 trace:wave:ALSA_WaveInit using waveout device "plug:hw:1" trace:wave:ALSA_WaveInit using wavein device "plug:hw:0" trace:wave:ALSA_WaveInit dev=0 id=Intel ICH name=Intel 82801DB-ICH4 subdev=0 subdev_name=subdevice #0 subdev_avail=0 subdev_num=1 stream=CAPTURE subclass=GENERIC MIX trace:wave:ALSA_TraceParameters FLAGS: sampleres=false overrng=true pause=true resume=true syncstart=true batch=true block=true double=true halfd=true joint=true trace:wave:ALSA_TraceParameters access=(null) trace:wave:ALSA_TraceParameters format=(null) trace:wave:ALSA_TraceParameters channels_min=1, channels_min_max=10000 trace:wave:ALSA_TraceParameters buffer_size_min=1, buffer_size_min_max=4294967294 trace:wave:ALSA_TraceParameters rate_min=4000 rate_max=4294967295 trace:wave:ALSA_TraceParameters buffer_time_min=1 buffer_time_max=4294967295 trace:wave:ALSA_TraceParameters periods_min=0 periods_max=4294967295 trace:wave:ALSA_TraceParameters period_size_min=0, period_size_min_max=4294967295 trace:wave:ALSA_TraceParameters period_time_min=166 period_time_max=2048000 trace:wave:ALSA_TraceParameters tick_time=1000 trace:wave:ALSA_WaveInit Configured with dwFmts=000fffff trace:wave:ALSA_WaveInit using wavein device "plug:hw:1" trace:wave:ALSA_widMessage (0, DRVM_INIT, 00000000, 00000000, 00000000); trace:wave:ALSA_widMessage (0, WIDM_GETNUMDEVS, 00000000, 00000000, 00000000); trace:wave:ALSA_wodMessage (0, DRVM_INIT, 00000000, 00000000, 00000000); trace:wave:ALSA_wodMessage (0, WODM_GETNUMDEVS, 00000000, 00000000, 00000000);
The message is already present after a clean tools/wineinstall and:
regsvr32 ir50_32.dll (needed for AVI).
Cheers,
Paul.
Hi Paul,
I see the same behavior after Robert's change to use plug:hw:0 (and removing my settings in ~/.wine/config).
The attached patch 'fixes' the problem for me; can you try it?
However, to be honest, the real issue is that I don't really understand what's going on. It appears as though the plug: devices are legitimate PCM device names, but that you can't use them for the control interface. If that's true, then this patch is correct. I just can't find any sensible Alsa document to give me comfort that this is right.
I'd appreciate affirmation of this or a pointer to better Alsa doco <grin>.
Cheers,
Jeremy
Paul Vriens wrote:
On Thu, 2005-03-24 at 21:26, Jeremy White wrote:
Hmm. That's my patch, but it bumps into one from Robert Reif.
Robert, is plug:hw:N the correct device naming convention for PCM opens? I've always done plughw:N. It appears as though the snd_hctl_open of plug:hw:0 is failing.
I can't tell because of the lack of Alsa documentation which is supposed to be right; if we're supposed to do plughw:0 instead of plug:hw:0, I'll have to fudge that code for the volume control stuff.
Paul, you can test this for yourself by adding a
[ALSA] "PlaybackDevice"="plughw"
This doesn't make a difference.
to your config (or just try "hw" if that fails too).
The error message disappears but a new is there:
fixme:wave:ALSA_WaveInit -
and seeing if everything still works (if the error below goes away but a new one pops up, then I have work to do :-/).
Cheers,
Jeremy
It doesn't seem to affect the sound though.
Running current CVS with a +wave gives:
trace:wave:ALSA_WaveInit using waveout device "plug:hw:0" trace:wave:ALSA_WaveInit dev=0 id=Intel ICH name=Intel 82801DB-ICH4 subdev=0 subdev_name=subdevice #0 subdev_avail=0 subdev_num=1 stream=PLAYBACK subclass=GENERIC MIX trace:wave:ALSA_TraceParameters FLAGS: sampleres=false overrng=true pause=true resume=true syncstart=true batch=true block=true double=true halfd=true joint=true trace:wave:ALSA_TraceParameters access=(null) trace:wave:ALSA_TraceParameters format=(null) trace:wave:ALSA_TraceParameters channels_min=1, channels_min_max=10000 trace:wave:ALSA_TraceParameters buffer_size_min=1, buffer_size_min_max=4294967294 trace:wave:ALSA_TraceParameters rate_min=4000 rate_max=4294967295 trace:wave:ALSA_TraceParameters buffer_time_min=1 buffer_time_max=4294967295 trace:wave:ALSA_TraceParameters periods_min=0 periods_max=4294967295 trace:wave:ALSA_TraceParameters period_size_min=0, period_size_min_max=4294967295 trace:wave:ALSA_TraceParameters period_time_min=83 period_time_max=2048000 trace:wave:ALSA_TraceParameters tick_time=1000 trace:wave:ALSA_WaveInit Configured with dwFmts=000fffff dwSupport=00000060 ALSA lib control.c:654:(snd_ctl_open_noupdate) Invalid CTL plug:hw:0 trace:wave:ALSA_WaveInit using waveout device "plug:hw:1" trace:wave:ALSA_WaveInit using wavein device "plug:hw:0" trace:wave:ALSA_WaveInit dev=0 id=Intel ICH name=Intel 82801DB-ICH4 subdev=0 subdev_name=subdevice #0 subdev_avail=0 subdev_num=1 stream=CAPTURE subclass=GENERIC MIX trace:wave:ALSA_TraceParameters FLAGS: sampleres=false overrng=true pause=true resume=true syncstart=true batch=true block=true double=true halfd=true joint=true trace:wave:ALSA_TraceParameters access=(null) trace:wave:ALSA_TraceParameters format=(null) trace:wave:ALSA_TraceParameters channels_min=1, channels_min_max=10000 trace:wave:ALSA_TraceParameters buffer_size_min=1, buffer_size_min_max=4294967294 trace:wave:ALSA_TraceParameters rate_min=4000 rate_max=4294967295 trace:wave:ALSA_TraceParameters buffer_time_min=1 buffer_time_max=4294967295 trace:wave:ALSA_TraceParameters periods_min=0 periods_max=4294967295 trace:wave:ALSA_TraceParameters period_size_min=0, period_size_min_max=4294967295 trace:wave:ALSA_TraceParameters period_time_min=166 period_time_max=2048000 trace:wave:ALSA_TraceParameters tick_time=1000 trace:wave:ALSA_WaveInit Configured with dwFmts=000fffff trace:wave:ALSA_WaveInit using wavein device "plug:hw:1" trace:wave:ALSA_widMessage (0, DRVM_INIT, 00000000, 00000000, 00000000); trace:wave:ALSA_widMessage (0, WIDM_GETNUMDEVS, 00000000, 00000000, 00000000); trace:wave:ALSA_wodMessage (0, DRVM_INIT, 00000000, 00000000, 00000000); trace:wave:ALSA_wodMessage (0, WODM_GETNUMDEVS, 00000000, 00000000, 00000000);
The message is already present after a clean tools/wineinstall and:
regsvr32 ir50_32.dll (needed for AVI).
Cheers,
Paul.
Jeremy White wrote:
Hi Paul,
I see the same behavior after Robert's change to use plug:hw:0 (and removing my settings in ~/.wine/config).
The attached patch 'fixes' the problem for me; can you try it?
However, to be honest, the real issue is that I don't really understand what's going on. It appears as though the plug: devices are legitimate PCM device names, but that you can't use them for the control interface. If that's true, then this patch is correct. I just can't find any sensible Alsa document to give me comfort that this is right.
I'd appreciate affirmation of this or a pointer to better Alsa doco <grin>.
Cheers,
Jeremy
I am an alsa developer, what exactly is the problem? For normal stereo playback use: "plug:front" For 5.1 playback use: "plug:surround51" For stereo capture (record) use: "plug:front" For mixer control interface use: "hw"
The alsa api is an abstraction layer. One defines in an alsa config file what "plug:front" actually talks to. Then any alsa applications can then talk to same device name, even though the underlying hardware might have different features.
As a generaly rule, don't use "hw" anywhere in the sound channel's device name.
If you have more than one sound card, things are a bit different: First card: Stereo playback: "plug:front:0" surround51 playback: "plug:surround51:0" Stereo capture: "plug:front:0" Mixer: "hw:0"
For second card: Stereo playback: "plug:front:1" surround51 playback: "plug:surround51:1" Stereo capture: "plug:front:1" Mixer: "hw:1"
For third card: Stereo playback: "plug:front:2" surround51 playback: "plug:surround51:2" Stereo capture: "plug:front:2" Mixer: "hw:2"
etc.
Now the user might want to edit their alsa config files, so ideally wine should allow for multiple device names to be entered for each card.
Hey James,
I am an alsa developer, what exactly is the problem? For normal stereo playback use: "plug:front" For 5.1 playback use: "plug:surround51" For stereo capture (record) use: "plug:front" For mixer control interface use: "hw"
Robert has tweaked the code so that the user can specify what device name to use for Playback or for Capture; the default value is "plug:hw" (and he then iterates over multiple cards, adding a :n where n is the device number). He does a snd_pcm_open with STREAM_PLAYBACK on the playback device, and a STREAM_CAPTURE on the capture device.
To manage volume, I've got it using an snd_hctl_open, using the same device name as that used by either Playback or Capture (the old behavior was to always use a device of "hw").
It sounds like the volume control should just always use hw:n, where n is the device number. Does that sound right?
Cheers,
Jeremy