protonscr

Skyrim won't launch: no audio device detected

protonclosed
ValveSoftware/Proton#270 · opened 2018-08-23 by fizyk20 · updated 2018-08-23 · 3 comments · github
1 matching comments, n / p to jump
Ffizyk20 2018-08-23 github

I've tried setting up Steam with Proton on Gentoo. SkyrimLauncher starts, but the game can't be launched, because it claims there is no audio device.

My debugging went roughly the following way:

  • First, I checked winecfg in Proton's Wine environment. The sound was set to Pulseaudio and the test sound worked.
  • I tried switching the sound driver to ALSA (via regedit), the driver got changed and the sound in winecfg still works, but Skyrim still won't launch.
  • I started looking at the logs. WINEDEBUG=+sound revealed err:dsound:get_mmdevenum CoCreateInstance failed: 80040154 right next to err:ole:CoGetClassObject class {bcde0395-e52f-467c-8e3d-c4579291692e} not registered. I checked the registry (regedit again), but the class is there.
  • I started fiddling with the class in the registry (changing case - I know, shouldn't matter), but it didn't help.

A larger part of the relevant log:

0029:Call ole32.CoInitialize(00000000) ret=7e199ddd
0029:trace:ole:CoInitializeEx ((nil), 2)
0029:Ret  ole32.CoInitialize() retval=00000001 ret=7e199ddd
0029:Call ole32.CoCreateInstance(7e1ac848,00000000,00000001,7e1ac878,0033f878) ret=7e199df7
0029:trace:ole:CoCreateInstance (rclsid={bcde0395-e52f-467c-8e3d-c4579291692e}, pUnkOuter=(nil), dwClsContext=00000001, riid={a95664d2-9614-4f35-a746-de8db63617e6}, ppv=0x33f878)
0029:trace:ole:CoCreateInstanceEx ({bcde0395-e52f-467c-8e3d-c4579291692e} (nil) 1 (nil) 1 0x33f794)
0029:trace:ole:CoGetTreatAsClass ({bcde0395-e52f-467c-8e3d-c4579291692e},0x33f71c)
0029:Call ntdll.RtlInitUnicodeString(0033f550,7e6e2180 L"\\Registry\\Machine\\Software\\Classes") ret=7e62dc1c
0029:Ret  ntdll.RtlInitUnicodeString() retval=00000046 ret=7e62dc1c
0029:Call ntdll.NtCreateKey(0033f54c,02000000,0033f558,00000000,00000000,00000000,00000000) ret=7e62da32
0029:trace:reg:NtCreateKey ((nil),L"\\Registry\\Machine\\Software\\Classes",<null>,0,2000000,0x33f54c)
0029:trace:reg:NtCreateKey <- 0x80
0029:Ret  ntdll.NtCreateKey() retval=00000000 ret=7e62da32
0029:trace:ole:create_classes_root_hkey L"\\Registry\\Machine\\Software\\Classes" -> 0x80
0029:Call ntdll.RtlInitUnicodeString(0033f590,0033f5d6 L"CLSID\\{BCDE0395-E52F-467C-8E3D-C4579291692E}") ret=7e630346
0029:Ret  ntdll.RtlInitUnicodeString() retval=0000005a ret=7e630346
0029:Call ntdll.NtOpenKey(0033f5d0,00020019,0033f598) ret=7e630358
0029:trace:reg:open_key (0x80,L"CLSID\\{BCDE0395-E52F-467C-8E3D-C4579291692E}",20019,0x33f5d0)
0029:trace:reg:open_key <- (nil)
0029:Ret  ntdll.NtOpenKey() retval=c0000034 ret=7e630358
0029:Call ntdll.RtlNtStatusToDosError(c0000034) ret=7e630360
0029:Ret  ntdll.RtlNtStatusToDosError() retval=00000002 ret=7e630360
0029:trace:ole:apartment_addref 2800000029: before = 1
0029:trace:ole:apartment_release 2800000029: after = 1
0029:trace:ole:CoGetClassObject CLSID: {bcde0395-e52f-467c-8e3d-c4579291692e},IID: {00000001-0000-0000-c000-000000000046}
0029:trace:ole:apartment_addref 2800000029: before = 1
0029:Call KERNEL32.FindActCtxSectionGuid(00000001,00000000,00000004,0033f71c,0033f670) ret=7e63363d
0029:Ret  KERNEL32.FindActCtxSectionGuid() retval=00000000 ret=7e63363d
0029:Call ntdll.RtlInitUnicodeString(0033f570,0033f5b6 L"CLSID\\{BCDE0395-E52F-467C-8E3D-C4579291692E}") ret=7e630346
0029:Ret  ntdll.RtlInitUnicodeString() retval=0000005a ret=7e630346
0029:Call ntdll.NtOpenKey(0033f5b0,00020019,0033f578) ret=7e630358
0029:trace:reg:open_key (0x80,L"CLSID\\{BCDE0395-E52F-467C-8E3D-C4579291692E}",20019,0x33f5b0)
0029:trace:reg:open_key <- (nil)
0029:Ret  ntdll.NtOpenKey() retval=c0000034 ret=7e630358
0029:Call ntdll.RtlNtStatusToDosError(c0000034) ret=7e630360
0029:Ret  ntdll.RtlNtStatusToDosError() retval=00000002 ret=7e630360
0029:err:ole:CoGetClassObject class {bcde0395-e52f-467c-8e3d-c4579291692e} not registered
0029:trace:ole:apartment_release 2800000029: after = 1
0029:err:ole:CoGetClassObject no class object {bcde0395-e52f-467c-8e3d-c4579291692e} could be created for context 0x1
0029:Ret  ole32.CoCreateInstance() retval=80040154 ret=7e199df7
0029:Call ole32.CoUninitialize() ret=7e199e1c
0029:trace:ole:CoUninitialize ()
0029:Ret  ole32.CoUninitialize() retval=00000000 ret=7e199e1c
0029:err:dsound:get_mmdevenum CoCreateInstance failed: 80040154
0029:Call ntdll.RtlFreeHeap(00110000,00000000,00950a00) ret=7e197551
0029:Ret  ntdll.RtlFreeHeap() retval=00000001 ret=7e197551
0029:Ret  dsound.DirectSoundCreate8() retval=80070057 ret=004083c2

The thing that puzzles me the most is that this part of code seems to attempt to open HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{bcde0395-...}, which exists in all Wine environments I have, but it fails every time.

Any ideas about the cause or how to fix this will be greatly appreciated!

Ddjhi 2018-08-23 github

I had the same error with Fallout New Vegas. Fixed it by installing xact with winetricks (see #54):

WINEPREFIX=~/.steam/steam/steamapps/compatdata/22380/pfx winetricks xact

Replace 22380 with the id for Skyrim which you can find in its store page url.

Kkisak-valve maintainer 2018-08-23 github

Closing in favor of #4.

Ffizyk20 2018-08-23 github

@djhi That worked, thanks a lot! It gets stuck on loading a save, though, but that's a different problem, obviously ;)