This is a read-only archive of the Mumble forums.

This website archives and makes accessible historical state. It receives no updates or corrections. It is provided only to keep the information accessible as-is, under their old address.

For up-to-date information please refer to the Mumble website and its linked documentation and other resources. For support please refer to one of our other community/support channels.

Jump to content

Overlay in Linux


Epsilon
 Share

Recommended Posts

I'm running Mumble and Steam on Arch Linux, installed through the official repositories, although I had similar issues when I used to use (K)ubuntu.


Mumble and Team Fortress 2 (TF2) both work fine for me individually, but I cannot get mumble-overlay working, either independently or within TF2.


I've tried putting each of the following launch options into TF2's properties in Steam, none of which have worked. (N.B. I'm also using bumblebee for an Optimus switchable graphics card, and a 64-bit computer.)

 

mumble-overlay primusrun %command%
mumble-overlay primusrun %command% -nod3d9ex
mumble-overlay primusrun %command% -d3d9ex -32bit
LD_PRELOAD=/usr/lib/mumble/libmumble.so.1.2 primusrun %command%

 

How can I get the overlay working? TF2 is in windowed mode, so I'd be happy with mumble producing its own overlay that wasn't injected into TF2.


(I originally asked this on stackexchange, with no responses.)

Link to comment
Share on other sites

What do you mean with put into the TF properties in steam?

In Steam, you can set launch options for games, as per this link.

 

Dunno what primusrun is.

primusrun is a command used by bumblebee, which allows Linux users to use their NVIDIA Optimus graphics cards. Usually, the integrated Intel processor is used as the GPU. However, launching a program with `primusrun COMMAND` allows Linux users to specify usage of the discrete NVIDIA GPU.

 

Did you try starting TF2 from the command line?

I didn't, but I think it's non-trivial to know how to run the program with a wrapper.


Also, I've just troubleshooted more, and I realised that a vanilla `mumble-overlay glxgears` fails with:

X Error of failed request:  GLXBadDrawable
 Major opcode of failed request:  155 (GLX)
 Minor opcode of failed request:  29 (X_GLXGetDrawableAttributes)
 Serial number of failed request:  43
 Current serial number in output stream:  43

 

I can get it to work with either of

$ LIBGL_DRIVERS_PATH=/usr/lib/dri mumble-overlay glxgears
$ LIBGL_DRIVERS_PATH=/usr/lib32/dri mumble-overlay glxgears

but in both cases I get similar errors

libGL error: dlopen /usr/lib/dri/i965_dri.so failed (/usr/lib/dri/i965_dri.so: cannot open shared object file: No such file or directory)
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: dlopen /usr/lib/dri/swrast_dri.so failed (/usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory)
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast

I tried to find the missing file.

$ locate i965_dri.so
/usr/lib/xorg/modules/dri/i965_dri.so
/usr/lib32/xorg/modules/dri/i965_dri.so

Then tried

$ LIBGL_DRIVERS_PATH=/usr/lib/xorg/modules/dri mumble-overlay glxgears

But this fails again with

X Error of failed request:  GLXBadDrawable
 Major opcode of failed request:  155 (GLX)
 Minor opcode of failed request:  29 (X_GLXGetDrawableAttributes)
 Serial number of failed request:  42
 Current serial number in output stream:  42

Link to comment
Share on other sites

  • Administrators
What do you mean with put into the TF properties in steam?

In Steam, you can set launch options for games, as per this link.

So it’s the same as for windows. Those launch options are not the place to use mumble-overlay or primusrun at. It’s for (internal) game-settings only, as described on the page you linked.


Do you know where the TF2 executable is? Which you can launch the game with?


/usr/lib/dri looks like an incomplete path, that should continue with *driver.

Are you sure that's the complete path? Where do you have it from?

Link to comment
Share on other sites

Those launch options are not the place to use mumble-overlay or primusrun at. It’s for (internal) game-settings only, as described on the page you linked.

Ah okay.

 

Do you know where the TF2 executable is? Which you can launch the game with?

It's complicated (at least in Linux). There is an executable at `~/.local/share/Steam/SteamApps/common/Team Fortress 2/hl2.sh` which calls `~/.local/share/Steam/SteamApps/common/Team Fortress 2/hl2_linux`. However, neither will launch TF2 when called directly (with primusrun).


However, I attempted to use a script from here to launch TF2. It sets environmental variables, etc. then launches with primusrun. It was actually written for an older version called optirun, but modified it to work with primusrun, and it launches fine.


Then, I further modified the script to call

mumble-overlay primusrun ./hl2_linux

This launches TF2, but there is no overlay, and it outputs the following errors.

ERROR: ld.so: object '/usr/lib64/mumble/libmumble.so.1' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.

I thought this might have something to do with not having 32-bit mumble-overlay libraries, so I attempted to install them. However it still failed, this time with

ERROR: ld.so: object '/usr/lib32/libmumble.so.1' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/usr/lib64/mumble/libmumble.so.1' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.

 

/usr/lib/dri looks like an incomplete path, that should continue with *driver.

Are you sure that's the complete path? Where do you have it from?

No, I'm not sure at all! I just got that path from searching the web. With this path, mumble-overlay at least worked, even if it complained about errors. As you can see further in my last post, I attempted to search my system for the proper path, but I couldn't even launch my test program when I used that.

Link to comment
Share on other sites

  • Administrators

mumble-overlay primusrun ./hl2_linux

This launches TF2, but there is no overlay, and it outputs the following errors.

ERROR: ld.so: object '/usr/lib64/mumble/libmumble.so.1' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.

Now that’s a helpful error message! :)

I guess hl2_linux is 32-bit, so instead of /usr/lib64 I hope there is a /usr/lib/mumble/libmumble.so.1 for you to use!?

Link to comment
Share on other sites

Now that’s a helpful error message! :)

I guess hl2_linux is 32-bit, so instead of /usr/lib64 I hope there is a /usr/lib/mumble/libmumble.so.1 for you to use!?

Yes, that's what I thought too! But, as I mentioned in the second part of my last reply, I attempted to install the 32-bit libraries, and the new error messages suggest that these are also insufficient.

Link to comment
Share on other sites

What do you mean, install the 32-bit libraries? I thought you were talking about stdc libraries, from the OS package repository.

As mentioned earlier, I installed them from the Arch Linux AUR. This is the the "non-official" repositories. The installation script looks fairly straight forward. It looks like it builds mumble-overlay with the 32-bit flag, then links the libraries.

 

Did you try to use a 32-bit /usr/lib libmumble? Did you use the manual approach as per wiki? [1]


[1] http://wiki.mumble.info/wiki/Overlay#Manual_approach

 

Sort of. The link states that the manual approach is only necessary if I didn't install the binaries, which is incorrect. Nevertheless, I did try it. The link states that I need to preload `libmumble.so.1.1`, however this doesn't exist. I tried to locate similar files.

 

$ locate libmumble.so.1
/usr/lib/mumble/libmumble.so.1
/usr/lib/mumble/libmumble.so.1.2
/usr/lib/mumble/libmumble.so.1.2.8
/usr/lib32/libmumble.so.1
/usr/lib32/libmumble.so.1.2
/usr/lib32/libmumble.so.1.2.8

 

I tried launching TF2 with `LD_PRELOAD=/usr/lib32/libmumble.so.1` instead. However, I still get the same errors as before.

ERROR: ld.so: object '/usr/lib32/libmumble.so.1' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/usr/lib64/mumble/libmumble.so.1' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.

Link to comment
Share on other sites

 Share

×
×
  • Create New...