Install Pulseaudio On Windows

Specifically, the failure is as follows: socketpair(PFLOCAL, SOCKDGRAM, 0, 0x21daae0) = -1 ESOCKTNOSUPPORT (Socket type not supported) write(2, 'AO: pulse Init failed: Connect'., 44AO: pulse Init failed: Connection refused) = 44 On real-Ubuntu, the equivalent socketpair call succeeds. My understanding is that Pulse uses local sockets for some sort of internal communication. I think, though I'm not sure, that it starts a helper process to handle communication with the remote server, and it handles communication with that process using this socket pair.

  1. Ubuntu Pulseaudio Install
  • PulseAudio Dependencies: section tells you about the packages which will be required by PulseAudio5. Required and Recommended packages are necessary and you've to install them first before you can install PulseAudio5. Though you can neglect Optional packages.
  • Centralized PulseAudio setup. There is no PulseAudio client for Windows yet, although one could use the very old WinESD driver and Pulse's ESounD compatibility.

Streaming audio from Windows to Linux using PulseAudio. Stream audio from Windows to Linux. Install JACK and ASIO Bridge on the Windows box.

So I commented on the other thread with some info, and I also found some other stuff: By default, Pulse loads a module called module-native-protocol-unix, and another module called module-native-protocol-tcp can also be enabled. I wonder if you can start pulse with a config that does not enable module-native-protocol-unix at all, then disable all of the non-native modules that listen over datagram-mode unix sockets. It looks like this might be possible, and if it is, Pulse won't try opening that unix socket and should startup fine, I think. As I mentioned in the other thread though, I won't be able to test it this weekend bc hardware problems, but maybe this could help. Here is a list of the modules that have both TCP and unix variants: Maybe if you turn off all of the unix modules and replace them with TCP variants, you can start the pulse server.

Nope, it runs those as well as the sink modules on the linux side. That's why I mentioned 'trunking' from one to the other. Basically, there are two modes, a 'bridging mode' that basically pipes all of the channels in multiplex to the remote server (Windows), to allow mixing of channels, etc on the remote machine, and a 'flattened' version where the mixing and filtering and stuff are done on the 'linux side' and then the output of the mix is piped to the Windows 'client'. However, both modes of operation do have to use some kind of socket or port. For example, OSS sound (for which pulse has a sink) uses unix ports, so Pulse's OSS sink module will trick all OSS applications into piping their output to a unix socket opened by Pulse.

Similarly, you can have a pulse module for Alsa, etc. In addition to those sink modules, pulse has a 'pulse sink' for pulse-aware programs.

This 'pulse sink' module is 'pulse-native-protocol-.' . Remember, pulse needs a some kind of socket that the linux programs have to talk to on the linux side. Then Pulse can either bundle them up and pipe a multiplexed stream to another Pulse server for processing or process them and then pipe a single processed stream to the other pulse server. I believe (and I can't check bc my pc broke) that if you disable linux-side pulse from using any modules that use unix sockets, it should launch fine.

Basically, this hypothesized fix should work similar to how the dbus fix works, I think. Oh, seems like that should work. You are saying that you aren't running pulse on the Linux side, but you also told me that it crashes, which seems like you are running it. Or are you saying you used a workaround to get it to work?

(Also, fwiw, the benefit of running Pulse as a remote server and connecting it to another instance of pulse on your local machine is that not every Linux application with sound will output audio to pulse over tcp, mostly older programs or games. That's why pulse in Linux has all of those sink modules). Oh, sorry, terminology confusion. Let me define some more-specific terms:. libpulse - the client library that pulse-based applications link.

Linux pulseaudio - the daemon that run on Linux. pulseaudio.exe - the daemon that runs on Windows By editing /etc/pulse/client.conf in WSL, I have configured Linux binary applications that link libpulse (tested with both paplay and mplayer) to connect over TCP to localhost. I have also configured pulseaudio.exe to listen on TCP localhost.

I have not configured Linux pulseaudio, nor attempted to start it. I am observing a failure (not a crash, simply an error as well as no audio) coming from libpulse inside WSL, when I run applications that link libpulse. If I modify the IP addresses used in this setup and use libpulse on a real Linux system (but still pulseaudio.exe on Windows), I do not see this failure, and I do hear audio, so the Windows side of the setup seems to be working properly. When I strace the application that's calling into the relevant libpulse code, I observe that the first syscall that obviously differs between the working Linux execution and the failing WSL execution is socketpair. Socketpair generates a pair of sockets that's typically used to communicate between a parent and a child process, or two threads within the same process; it has no on-disk nor TCP representation so AFAIK it can't be easily used to emulate any of these protocols. I was looking around on the Internet and I thought I read somewhere (unfortunately I don't remember the source; it was unofficial) that libpulse actually tries to internally start is own mini Linux pulseaudio subsystem, to handle communication with the actual target pulseaudio.

My suspicion, though I didn't read enough code to prove it, was that this socket was for communicating between the client application and that application's own custom pulseaudio instance. Good point re: disabling automatic spawning.

Unfortunately, I tried it and it doesn't seem to help. I tried running a local pulse daemon (which started after I disabled a bunch of plugins for things like bluetooth and hardware autodiscovery); that actually failed differently.

Ubuntu Pulseaudio Install

In libpulse, as run from paplay: getsockopt(7, SOLSOCKET, SOERROR, 0x7fffd7c21f08, 0x7fffd7c21f0c) = -1 EINVAL (Invalid argument) write(2, 'getsockopt: Invalid argument n', 31getsockopt: Invalid argument ) = 31 mplayer segfaults in this configuration. I haven't dug into the root cause, but prior to segfaulting, one of its pids tries a getsockopt(SOERROR) and fails in the same ways as above. I got paplay working with 9.0 on WSL and the win32 server. Build instructions are. Interestingly, I didn't need to patch the source, just judiciously disable some stuff with configure.

The SOERROR problem that found, which is in, doesn't appear to be in the control flow for paplay, for whatever reason. On the WSL (ie, client) side, all you need is: export PULSESERVER=tcp:localhost /usr/local/bin/paplay -p You can also edit /etc/pulse/client.conf and set default-server = tcp:localhost. The server is never launched on WSL, so you can ignore default.pa. Heads up that paplay doesn't support.mp3 files. You can get the list of supported formats with paplay -list-file-formats. That's the good news.

The bad news is that mplayer and minimodem don't work because: futex(0xb325c4, FUTEXCMPREQUEUEPIPRIVATE, 1, 0xbbe770, 2) = -1 ENOSYS (Function not implemented) Firefox and VLC also don't make noise yet, but I haven't tracked why. They do open the socket to the win32 server before choking, though. Performance (if that is the word) is great. The amount of cpu horsepower and memory bandwidth required to push a couple of audio channels over localhost is dwarfed by what it takes to decode an H.264 video stream coming down from GoogleCorp.

That is, the difference between having audio and not audio isn't measurable. I pessimistically just assumed there was going to be sync problems (which is an A/V problem on a good day), because 'buffering', but apparently not. Tracking this one down was pretty straightforward because the failing syscall is futexey, and there's only one place the in PA library that calls those.

Widely ported OSS packages always have build configuration knobs to tweak because the FreeBSD, Android, IoT and OS X guys don't necessarily have all the esoteric Linux syscalls or crazy /proc and /sys stuff either. When in doubt, you just turn the feature off. If anyone wants to try this without rebuilding pulseaudio: I've taken yakkety's pulseaudio package (which is based on v9) and backported it to trusty, using a modification of 's build instructions plus some playing around to get the packaging right (since a bunch of different modules are being built / not being built). I posted that package to a PPA: If you:. Add that PPA. Run sudo apt-get update; sudo apt-get install libpulse0. Add default-server = 127.0.0.1 to /etc/pulse/client.conf.

Download and configure Pulseaudio on the Windows side as discussed above (I'll put together a more-complete unified set of instructions sometime) then pulseaudio-based applications should play sound for you. I did this on Trusty FWIW, but I put the dependency list together after the fact so if something was missing that isn't too surprising. đź‘Ť on the PPA. People who are used to adding export DISPLAY=:0 to their.bashrc for X might find it easier to use export PULSESERVER=tcp:localhost and pretend the config files don't exist. For people setting up the Win32 side, the tl;dr is you need the following in your etc/pulse/default.pa: load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24 auth-anonymous=1. Interesting; it was partly the packages that were listed as well as packages that were omitted. For example, trusty's official repo doesn't have a package for gcc 6.

There were a couple others as well; I forget the list, you can check out the Build-Deps in the PPA if you're curious. For default.pa on the Windows side, I think it would be correct and safer to omit;192.168.0.0/24? Otherwise, yeah, that's the main thing. I also found that the Windows server was automatically exiting after some period of time (order of a minute?) of being idle, but only after I stopped playing music (not before I started). I think there's a setting for that too? But I forget which setting offhand. The gcc-6 thing was an omission on my part; apologies for that.

I updated the yesterday, probably just after you read them. PA seems to prefer a C11 compiler (Xenial doesn't have gcc-6 either). Sudo add-apt-repository ppa:ubuntu-toolchain-r/test Yes omitting 192.168.0.0/24 would be safer. As for the timeout yeah that is annoying too. For those playing along you just need the following in daemon.conf: exit-idle-time = -1 I don't have a microphone so I also needed the following in default.pa: load-module module-waveout record=0 sinkname=output load-module module-null-sink sinkname=input That's probably enough in a nutshell for your HOWTO. 'C11 compiler' - thanks for the update! PPA packages are built in Launchpad's build environment, which AFAIK can only install official Ubuntu packages, so I had to play around a little more to get things working.

Also, thanks for the additional config directives; they'll be useful to have. For the PPA, sorry for the confusion - the URL above is for the pretty webpage, not the apt repo.

For the actual repo, sudo add-apt-repository ppa:aseering/wsl-pulseaudio adds the following to sources.list; feel free to tweak it to taste: deb trusty main deb-src trusty main. I have a suggestion: For GTK apps to run with font hinting and antialiasing enabled, (and without running the very very heavy gnome-settings-daemon or unity-settings-daemon), you could ship with xsettingsd and a sane default config (I think the config is called.xsettingsrc). Xsettingsd must be run with a display chosen (DISPLAY=:0 xsettingsd), and therefore must run after vcXsrv. This will allow proper running of things like gnome-terminal with reasonable fonts and maybe even adding solarized and other color schemes to the defaults. The easiest way to generate a good sane xsettingsrc file is to use xsettingsd in dump mode with unity-settings-daemon running, then paring it down. I can make one and post it somewhere, if you want! The previous PPA was generated for Ubuntu Trusty (which was current at the time).

WSL now defaults to Xenial. Aplay -l won't list any sound cards because there aren't any ( a stands for) kernel drivers in WSL. This is, a which is made up of a user mode library and a server/service component. Typically the server runs on Linux (and talks to Linux kernel sound drivers). Here the server runs on Windows (and talks, ultimately, to NT sound drivers). There is no reboot necessary. It is just a user mode library ( libpulse.so.0).

Install

A good launch point for PulseAudio is. The page is geared to Arch Linux but the principles apply equally to Ubuntu. Bonne chance. Short export PULSESERVER=tcp:localhost /usr/local/bin/paplay -p YRMV (I have not run audio on WSL myself in ages, though nothing has changed that would break anything since then.) PA runs on WSL the same as on any Real Linux box which has no sound card. You can find the PulseAudio community. The Windows (sic) Pulse Audio server, linked previously, can be found.

The port has gone a little stale, but still works. I am sure the PA community would appreciate someone bringing the Windows port up to a newer version. There is also an autoinstaller for WSL, although I have never run it personally. But be aware there have been no updates to the github repo since, so you would need to adapt it to the new PPA.

Sudo apt-get install pulseaudio-equalizer Using Pulse Audio Equalizer This equalizer program is straightforward and easy to use. To use it, just look for pulse audio equalizer in your menus and open it. Once it’s installed, all you’ll need to do is launch it to bring up the main configuration window. From here, just go to the pre-set drop-down menu, scroll through the list and select the equalizer pre-set that you feel sounds the best with your computer’s sound system, etc.

After that, just select the EQ Enabled box, the “Keep Settings” box and click the Apply button. This will apply the equalizer’s settings directly to the Pulse sound system (it’ll also take over as the main audio output in Pulse). Your newly applied settings should go into effect almost immediately. From then on, all audio played through your Linux install will be filtered through your newly applied equalizer.

There shouldn’t be any issues, as this program is stable and works quite well on Ubuntu. Quick Tip If you have some problems with the equalizer starting up right away (after installing it and configuring it) just log out of your session and then back in. In 99% of cases, this should fix the problem.

Alternatively, you could head on over to the Ubuntu sound settings, have a look around and tweak it. Conclusion Pulse Audio Equalizer is part of the reason that I’ve always favored the way Linux does sound.

It might not be the most polished, but the fact that some guy can write a program that solves a problem so that you can quick install it and have it interact with existing tech is awesome. I can’t overstate that fact. I hope that this program has helped make your audio experience on Linux even more awesome than it was before. Know of some other equalizers on Linux worth checking out? Sound off in the comments below! While Pulse Audio Equalizer may improve the sound coming out of a linux based computer, I doubt out-of-the-box Ubuntu would satisfy a true audiophile. Much better approach (although waaaay more complicated) would be to install Ubuntu minimal, add alsa stuff and install jack sound server instead of pulse audio.

After that much better (professional grade) EQ software can be attached via qjackctl: EQs by LinuxDSP (It is proprietary, though) or by Calf-plugins. Simpler way is to install special audiophile distro, Audiophile Linux (www.ap-linux.com). I’ve been using the Pulse-audio Equalizer for years, both under Ubuntu and now Mint.

People should know from the save button provided (or easily figure out) that you can setup and save your own audio profiles in the equalizer as well. Start by modifying one of the existing profile settings as you need and then save. Be careful though. If you name a profile something like voice-1 and need a voice-2 (or 3) you’ll lose your work unless you change the name by adding the 3 first, then back-filling the “voice” portion of the name after. Type voice first and your new settings will revert to the existing voice profile(s).

For those of us running Mint there is also an applet to launch the settings mode (or turn off the equalizer) from your task bar, appropriately named Equalizer from and available applets control panel. I rewrote this equaliser in python, as I didn’t like the complicated scripting that sits behind this program. The result can be found at This Linux python utility provides a GUI front end to modify the sound of audio using pulseaudio’s ladspa module with Steve Hariss’ mbeq1197 and Frank Neumann’s split1406 plugins. Multiband equaliser and Mono to Stereo splitter respectively. The Bauer Binaural filter is built in from version 1.4, which is designed to make long headphone sessions easier on the ear.