Page MenuHomeSolus

Audio doesn't work in 32-bit Wine applications/prefixes
Closed, InvalidPublic

Description

32-bit applications ran in 64-bit prefixes and 32-bit applications ran in 32-bit prefixes don't playback audio nor have an audio device to use.

I get the following errors in Terminal when any audio is attempted to be played-back:

err:dsound:get_mmdevenum CoCreateInstance failed: 80004005
err:mmdevapi:DllGetClassObject Driver initialization failed
err:ole:apartment_getclassobject DllGetClassObject returned error 0x80004005
err:ole:CoGetClassObject no class object {bcde0395-e52f-467c-8e3d-c4579291692e} could be created for context 0x1

pulseaudio-32bit, alsa-lib-32bit, alsa-plugins-32bit, and openal-soft-32bit are installed (not sure I really need most of those packages anyway, but figured I'd be thorough).

64-bit applications in 64-bit prefixes play audio fine.

Event Timeline

Any word on this? Any other information I could provide? This is currently preventing me from installing Solus on two computers :(

have you tried installing wine-32bit?

Espionage724 added a comment.EditedSep 24 2016, 6:11 PM

Yes. There doesn't appear to be an audio device presented to 32-bit apps. A quick way to test is to install 32-bit wine, create a 32-bit prefix, run winecfg and go to the Audio tab. No audio device is presented and Test Sound doesn't work.

manokara added a subscriber: manokara.EditedSep 25 2016, 8:26 AM

I had this problem, some games wouldn't even start because they could not create an audio device. Doing some digging, I found out it was because winepulse.drv.so (in /usr/lib/wine) depended on /usr/lib/libpulsecommon-6.0.so, which is actually located in the pulseaudio subfolder.

Solution: Create a symlink in /usr/lib32 that points to /usr/lib32/pulseaudio/libpulsecommon-6.0.so (do the same to the lib64 one). Reboot wine, and check if winepulse.drv is available in the Audio tab.

At the time pulseaudio was 6.0, and as of now, stable (shannon) branch has version 9.0 and the symlink, which by the way was the very last update, so it seems you have an outdated Solus.

Hmm, by the last update, you mean something that was released after Sept 18th? I ended up switching to another distro temporarily until this could be resolved, but I had daily updates going on Solus up until that point.

There is an update that may help with finding the 32bit libraries https://git.solus-project.com/packages/baselayout/commit/?id=2925239601e713e975c21ce6b2d9e93f66e05e14 once it lands in the stable repo. Don't have a scenario to test it with though (or wine).

I enabled the unstable repo and it does look like the issue is fixed there (winepulse.drv exists in 32-bit winecfg, 32-bit game plays back audio).

So I was finally able to track down the reasoning for this issue and embarrassingly it was my fault :p

I was setting enable-memfd = true as a config flag for PulseAudio, which works fine everywhere except (what appears to be) anything using 32-bit Pulse libraries. Disabling it solves this. As to why I had it enabled; it sounded interesting and I didn't really expect issues with it.

This option was introduced in PA 9.0 but disabled by-default. It'll be enabled by-default in PA 10.

The reason why it worked from the unstable repo was because I didn't do the config option (I just tossed together a quick Solus set-up). 32-bit apps also appear to work fine from the stable repo.

JoshStrobl closed this task as Invalid.Sep 29 2016, 7:30 PM