It is easy to get vmware to use alsa in linux, but this is not supported:
\- Install the libaoss library (part of alsa-oss on my ubuntu distribution).
\- Ensure the /usr/lib/libaoss.so.0.0.0 library is setuid (chmod +s /usr/lib/libaoss.so.*)
\- Rename vmware-vmx to vmware-vmx-real
\- Replace vmware-vmx with the following script:
#!/bin/sh
PATH_TO_VMWARE_BIN=`dirname $0`
LD_PRELOAD=libaoss.so exec $PATH_TO_VMWARE_BIN/vmw
This shouldn't cause any problems if the libaoss library is not installed or not setuid, it will simply work through the old OSS library as normal.
This could probably be quite easily be integrated as a configuration option into a future version of your product.
It does actually provide useful functionality as the sound is mixed with other applications using dmix.
Thanks for that very useful.
Dave
One more point actually, this tip is posted around the net for vmware 3 but used to break in 4 and 5. I think the reason it now works again is that the newer versions of libaoss override the open64 function in addition to the open function, the newer versions of vmware use this to open the sound device.
Could you please explain what is "vmw" in your script? No files with that name exist, maybe you mean vmware-vmx-real?
This is my vmware-vmx script:
PATH_TO_VMWARE_BIN=`/usr/lib64/vmware/bin $0`
LD_PRELOAD=libaoss.so exec $PATH_TO_VMWARE_BIN/vmware-vmx-real[/i]
Unfortunately now when I try to power on the virtual machine I get this fatal error:
Unable to change virtual machine power state: Failed to connect to peer process.[/i]
Where is the problem?
Thanks.
Finally I've made it work, it's very simple, you don't need to rename anything.
Just use this script:
#! /bin/bash
LD_PRELOAD=libaoss.so exec /opt/vmware/workstation/bin/vmware "$@"
Obviously the path depends on where you have vmware installed.
I hope this can help.
Cristiano
I notice yesterday that running "/usr/share/alsa-base/snddevices" (as root) will set a working "/dev/dsp". Only a "/dev/snd" directory exists on my Debian Unstable if I doesn't run it.
All features are on : mixer, micro support, etc.
For the virtual machine, "/dev/dsp" is the sound card, windows mixer is OK
Message was edited by:
KnuX
Hm sorry, vmware's sound are not mixed with alsa's sound (alsaplayer for example)
I made a script called "starvmware" which is located in my ~/ directory :
LD_PRELOAD=libaoss.so exec /usr/bin/vmware "$@"[/i]
It works, but for example I can't run a virtual machine which works without the script, I got this message :
Cannot open the disk '/home/knux/vmware/Windows XP Professional/Windows XP Professional.vmdk' or one of the snapshot disks it depends on.
Reason: File too large.[/i]
File is :
-rw------- 1 knux knux 2,9G 2006-05-18 18:56 Windows XP Professional.vmdk[/i]
The unique virtual machine I can use, is one with a 6Gb .vmdk file, pre-allocated. Others virtual machines have their .vmdk file > 2Gb, not pre-allocated.
Is there a workaround for this problem ? I'm on Debian Unstable and I don't understand why this happens 😕
Well I'd love to see that Petr's esd and arts wrappers would also support alsa natively. I once tried to patch something together, but never got very far.
I think that would really solve everyone's problems. Or even better, get ALSA support natively into vmware. Maybe for version 6.0?
thanks
Philipp
$ LD_PRELOAD=libaoss.so exec vmware "$@"
/usr/lib/vmware/bin/vmware: /usr/lib/vmware/lib/libpng12.so.0/libpng12.so.0: no version information available (required by /usr/lib/libcairo.so.2)
ERROR: ld.so: object 'libaoss.so' from LD_PRELOAD cannot be preloaded: ignored.
It seems to be hard for the moment to get vmware working with alsa on Debian Testing...
Anyone has an idea of why I can diagnostic this problem in order to resolve it ?
Preloading is possible using root access...
"sudo aoss vmware"
I don't know how to adjust libaoss permissions...
$ ll /usr/lib/libaoss*
-rw-rr 1 root root 15K 2006-09-11 13:26 /usr/lib/libaoss.a
-rw-rr 1 root root 851 2006-09-11 13:26 /usr/lib/libaoss.la
lrwxrwxrwx 1 root root 16 2006-10-10 23:10 /usr/lib/libaoss.so -> libaoss.so.0.0.0
lrwxrwxrwx 1 root root 16 2006-10-10 23:10 /usr/lib/libaoss.so.0 -> libaoss.so.0.0.0
-rw-rr 1 root root 15K 2006-09-11 13:26 /usr/lib/libaoss.so.0.0.0
This is what I did in order to have VMware alsa sound on Debian:
1. sudo aptitude install alsa-oss
2. sudo chmod +s /usr/lib/libaoss.so.*
3. sudo mv /usr/bin/vmware /usr/bin/vmware2
4. sudo touch /usr/bin/vmware
5. echo '#!/bin/bash' >> /usr/bin/vmware
6. echo 'LD_PRELOAD=libaoss.so exec /usr/bin/vmware2 "$@"' >> /usr/bin/vmware
7. vmware
Tested on VMware version 5.5.2 build-29772.
Hope it helps.
Step 6.5:
chmod +x /usr/bin/vmware
Message was edited by:
hsk
Well, with 6.0, things got even worse.
Now absolutely no preloaded libs work. This basically means for me that I have no sound. Absolutely no sound.
I wonder how much work it would have been to add ALSA support. Not too much I reckon.
Is there any way of getting sound out of vmware workstation 6.0 on an ALSA system without kernel level OSS emulation? As I stated, libaoss doesn't work, and it just simply doesn't, no preload errors or anything, Vmware just states that it failed to open /dev/dsp.
with WS6 I got rid of the /dev/dsp busy ... sound will start disconnected ... message by forcing the preloading of libaoss on all vmware executable by
installing libaoss (ny host is ubuntu 704)
and then editing
/usr/lib/vmware/lib/wrapper-gtk24.sh
by inserting at the end (before the call to vm_run) the following export statement
export LD_PRELOAD=libaoss.so:$LD_PRELOAD
vm_run "$@"
seems to work for me now.
Arghh...That does not work in Fedora Core 7
There seems to be no sound adaptor detected by the windows XP guest/
I can't believe vmware support for linux is so poor..do they think we will listen
to sound in only the guest OS or the Host but not both at the same time?
mrkrell,
I am also running Fedora 7 . I yum install alsa-oss , then after it installed, I restarted vmware. I then had sound on XP guess and also Fedora host at same time. I still have to get the internet going yet but maybe this will help you .
Kurt
Hi folks,
I have added to Petr's vmdsp driver an ALSA-plugin. It works so far pretty well with only a few quirks:
\* No mixer control. - Well, I use the ALSA-mixer in Linux or my speakers anyway, so I did not implement this yet.
\* Sometimes (Might and Magic VI, intro video) the playback rate is wrong. You might her the sound being played at a too high rate. I have not found the reason for this yet.
\* I did not test the recording interface.
\* I removed 64-bit support for the time being to have a cleaner build structure.
Besides this, like I said above, it works pretty well. Feel free to download the source code from here:
https://www.sokrates.homelinux.net/~thomas/Private/Soft/vmwaredsp/vmwaredsp-1.4.tar.bz2
This file includes the ESD and the ARTS portion as well. This tarball (https://www.sokrates.homelinux.net/~thomas/Private/Soft/vmwaredsp/vmwaredsp-alsa-1.4.tar.bz2) contains the two additional files only.
Any feedback is appreciated.
Just use 'lowlatency' kernel packages and leave all presets as original. You will get sound through ALSA (and/or OSS if you want), on any simultaneous applications that you dare to run at once, including VMWARE, INNOTEK, PARALLELS, WIN4LIN PRO, AMAROK, name it!
It works perfectly on Kubuntu Feisty 704 (kernel 2.6.20-16-lowlatency)
Hi Thomas_J,
when I try to make install (Fedora 7) of your source code I get the following error:
\# make install
make -C src install
make[1]: Entering directory `/tmp/vmwaredsp-1.4/src'
cc -c -g -W -Wall -O2 -fPIC -o vmdsp.o vmdsp.c
cc -shared -Wl,-version-script=vmdsp.map -o libvmdsp.so vmdsp.o -lpthread -ldl -lc
cc -c -g -W -Wall -O2 -fPIC -o vmdsp_esd.o vmdsp_esd.c
vmdsp_esd.c:18:17: error: esd.h: No such file or directory
vmdsp_esd.c:24: error: ESD_NAME_MAX undeclared here (not in a function)
vmdsp_esd.c: In function esdp_new_dsp:
vmdsp_esd.c:80: warning: implicit declaration of function esd_open_sound
vmdsp_esd.c: In function esdp_find_player:
vmdsp_esd.c:147: error: esd_info_t undeclared (first use in this function)
vmdsp_esd.c:147: error: (Each undeclared identifier is reported only once
vmdsp_esd.c:147: error: for each function it appears in.)
vmdsp_esd.c:147: error: ei undeclared (first use in this function)
vmdsp_esd.c:149: warning: implicit declaration of function esd_get_all_info
vmdsp_esd.c:151: error: esd_player_info_t undeclared (first use in this function)
vmdsp_esd.c:151: error: player undeclared (first use in this function)
vmdsp_esd.c:154: error: ESD_MASK_FUNC undeclared (first use in this function)
vmdsp_esd.c:162: warning: implicit declaration of function esd_free_all_info
vmdsp_esd.c: In function esdp_set_volume:
vmdsp_esd.c:178: warning: implicit declaration of function esd_set_stream_pan
vmdsp_esd.c: In function dspp_start_playback:
vmdsp_esd.c:199: error: ESD_PROTO_STREAM_PLAY undeclared (first use in this function)
vmdsp_esd.c:200: error: ESD_STREAM undeclared (first use in this function)
vmdsp_esd.c:200: error: ESD_PLAY undeclared (first use in this function)
vmdsp_esd.c:201: error: ESD_BITS16 undeclared (first use in this function)
vmdsp_esd.c:201: error: ESD_BITS8 undeclared (first use in this function)
vmdsp_esd.c:202: error: ESD_STEREO undeclared (first use in this function)
vmdsp_esd.c:202: error: ESD_MONO undeclared (first use in this function)
vmdsp_esd.c: In function mixerp_set_volume:
vmdsp_esd.c:368: error: ESD_RECORD undeclared (first use in this function)
vmdsp_esd.c:373: error: ESD_MONITOR undeclared (first use in this function)
vmdsp_esd.c:378: error: ESD_PLAY undeclared (first use in this function)
make[1]: *** \[vmdsp_esd.o] Error 1
rm vmdsp.o
make[1]: Leaving directory `/tmp/vmwaredsp-1.4/src'
make: *** \[install] Error 2
Where am I wrong?