ESS Maestro3 no sound

Muzaffar Ariff mus.bsd at
Mon Jul 11 09:03:21 GMT 2005

After much searching on how to do the patching I think i got it right,
but it still does not solve my problem. Here is what I did:

1. Tired to use the patch command and didn't work, because it can't
find line 1023  in the original maestro3.c (on my machine). I knew
about this but just gave it a try, hoping that I don't have to go the
long way :-)

2. Went to locate my sound driver modules and found it in
/usr/src/sys/modules/sound/driver/maestro3. Use to the make command to
see what it does.
*Q1: Is this the source code for the maestro3?

3. I then located and modified my maestro3.c file in
/usr/src/sys/dev/sound/pci/maestro3.c (before that made a copy of the
old one). Add and commenting out the stuff that you suggested.

4. went back to ~/sound/driver/maestro3 and recompiled it again. It
compiled without a problem and I then loaded the module by using
#kldload snd_driver. Look up /dev/sndstat and it showed the same thing
as before:

Installed devices:
pcm0: <ESS Technology Maestro3> at io 0xd800 irq 5 kld snd_maestro3
(4p/1r/0v channels duplex default)

5. Restarted my machine by having snd_maestro3_load="YES" loaded into

6. Tried using xmms and the same problem happened, the xmms plays the
song but with no sound. Looked at /var/run/dmesg.boot to see what went
wrong and it output the same problem:

pci0: <bridge, PCI-unknown> at device 7.3 (no driver attached)
pcm0: <ESS Technology Maestro3> port 0xd800-0xd8ff mem
0xf3ffe000-0xf3ffffff irq 5 at device 8.0 on pci0
pcm0: failed: rid 0x10 is ioport, requested 3

Q2: Now I might have compiled the code right but did I load the module
correctly? (i seem to be at the same conclusion, so I'm guessing it
didn't load).
Q3: If this does not work do I need to tweek the source to make my
card work? If so
looking at the code I don't know where to begin :( 

Hopeless and confuse

Muzaffar Ariff

On 7/1/05, Pyun YongHyeon <yongari at> wrote:
> On Wed, Jun 29, 2005 at 09:07:59AM -0600, Scott Long wrote:
> [...]
>  > It looks like yet more decay in the driver.  When I wrote it, I was lazy
>  > and didn't want to figure out which chip versions preferred IOPORT
>  > mapping and which ones preferred MEMIO, so I just had it try MEMIO first
>  > (since that is a better choice) and then fail back to IOPORT.  The
>  > resource manager seemed to tolerate this back then, but apparently it
>  > doesn't now.  My guess is that the first call to bus_alloc_resource
>  > returns success but actually fails, and in the process it leaks the
>  > resource out of the resource manager.  Then when you unload and load
>  > again, the resource is unavailable (since it was leaked) so the first
>  > call to fails, prompting it to go to the second call which succeeds
>  > fully.  This would mean that there are now a number of bugs in the
>  > resource manager which need to be fixed.
>  >
>  > Based on what I've seen over the years, it might be safe to assume that
>  > BAR0 on both the meastro3 and allegro1 is IOPORT and that BAR1 on the
>  > maestro3 is MEMIO.  Thus, the easiest change might be to just remove
>  > the first bus_alloc_resource call and force the driver to always use
>  > IOPORT.  I'd still like to use this as a test case for fixing the deeper
>  > bugs in the resource manager, though.
>  >
> Thanks for detailed explanation. :-)
> Here is patch. Muzaffar, does the patch change your situation?
> Btw, I encountered dreasful message "play interrupt timeout, channel dead"
> again. Unloading the driver and then reloading the driver fixed it.
> Since I see "pci_link2: Unable to choose an IRQ" during driver load
> I can't sure it's fault of maestro3(4) driver.
> --
> Regards,
> Pyun YongHyeon
>      |       yongari at

Muzaffar Ariff
mus.bsd at

More information about the freebsd-multimedia mailing list