pulseaudio-win32
An up-to-date PulseAudio build for Windows with an installer, service, and other improvements.
Features
- Various fixes and improvements.
- Standalone.
- Optional installer.
- Can run as a Windows Service.
- Working
pactl
/pacat
. - Working auto-connection to user and system instances.
- Working unix sockets for both user and system instances on Windows 10.
- Working modules.
- HTML documentation.
- Works on Windows 7 and later.
Limitations
- There are still some hard-coded paths which don't automatically relocate to the installation directory. This mainly affects the documentation.
- Locale files aren't currently included.
Building
mkdir -p ./build &&
docker build --tag pulseaudio-win32 --build-arg "PAW32_VERSION=$(echo "$(git describe --always --tags --dirty || echo unknown)" | sed -e "s/^v//g")" ./src &&
docker save pulseaudio-win32 |
tar -xOf - --wildcards '*/layer.tar' |
tar -xvf - -C ./build
Troubleshooting
- Service
- Error: The process terminated unexpectedly
Check PulseAudio's log. Note that it gets truncated every time PulseAudio starts. - Error: The environment is incorrect
Something went wrong when finding the AppData folder. This error shouldn't happen. - Error: The specified service has been marked for deletion
If you haveservices.msc
open, close it and try again (it prevents service deletions from working properly). Otherwise, try killingpulseaudio.exe
andpasvc.exe
. - Permission errors for ProgramData
If you attempted to run pulseaudio with the--system
option manually or otherwise created conflicting files in ProgramData, delete them and start the service again. - Invalid argument errors when attempting to create the Unix socket for the system service
This is caused by file permission errors when PulseAudio cannot delete or write to the socket file or the directory it's in. Try deleting the ProgramData folder for PulseAudio and restarting the service.
- Error: The process terminated unexpectedly
- Installer
- The service does not get installed and/or started
Try installing it manually from the command line with
pasvc install
. - The firewall rules do not get installed
Try installing it manually from the command line with
pasvcfw install
.
- The service does not get installed and/or started
Try installing it manually from the command line with
- PulseAudio
- Error: cannot create wakeup pipe
If you are startingpulseaudio.exe
from another process, ensure theSystemRoot
environment variable is defined. - Audio is much louder than other apps at the same volume level or is distorted even when relatively quiet
Try disabling audio effects on the output devices. Dolby Audio (e.g. the one preloaded on many devices) can cause this to happen if it is enabled even if all individual effects are turned off.
- Error: cannot create wakeup pipe
Silent installation
The installer uses Inno Setup 6 and supports the usual flags (e.g. /SILENT
,
/VERYSILENT
).
The following components are available (all are selected by default) and can be
passed as a comma separated list to /COMPONENTS=
:
pulseaudio
(required) - PulseAudio daemon, modules, and toolsdocumentation
- HTML documentation.service
- Windows Service.uninstall
- Uninstallation support.
The following tasks are available when the service
component is selected and
can be passed as a comma separated list to /TASKS=
:
firewall
- Add a firewall rule (4713/tcp).firewall/deny
- Deny all external connections.firewall/allow
- Allow external connections on private networks.firewall/allowall
- Allow all external connections.firewall/allowalledge
- Allow all external connections including edge traversal.
svcmodload
- Allow loading additional modules (note that this is a potential security risk).
The included configuration files in the installation directory will be
overwritten on install and deleted on uninstall. To preserve your changes, place
your custom configuration files in *.pa.d\*.pa
and *.conf.d\*.conf
.
Uninstalling will remove everything except for custom configuration files in the aforementioned folders.
Notes
While this repository is licensed under the MIT license, the icon and build output is licensed under the LGPL like PulseAudio itself (the PulseAudio build isn't linked to GPL libraries).
Patches
The following patches were created for pulseaudio-win32.
Link | Patch Description | Upstream Status |
---|---|---|
Patch | win32: Fix duplicate definitions in arpa-inet.h, arpa-inet.c, and poll.h | Merged |
Patch | win32: Use __MINGW_PRINTF_FORMAT instead of __printf__ for MinGW builds | Merged |
Patch | win32: Fix format specifiers for DWORD values | Merged |
Patch | win32: Fix privlibdir for running on Windows | Merged |
Patch | waveout: Fix compile warnings | Merged |
Patch | win32: Fix WSAStartup issues | Merged |
Patch | cli: Fix crash when using .include with an empty directory | Merged |
Patch | client: Make auto_connect_localhost respect HAVE_IPv6 and OS_IS_WIN32 | Merged |
Patch | client-conf: Enable auto-connect-localhost by default | N/A |
Patch | system.pa: Tweaks for custom build | N/A |
Patch | cli-command: Replace config dir with toplevel for .include on win32 | Merged |
Patch | win32: Fix minimum Windows version for inet_{ntop,pton} | Merged |
Patch | win32: Fix environment variables set with pa_{unset,set}_env not taking effect | Merged |
Patch | daemon: Add support for running as a service on win32 | Merged |
Patch | build-sys: meson: Merge system_conf config data from default_conf | Merged |
Patch | win32: Misc Unix socket fixes | Merged |
Patch | system.pa: Tweaks for custom build with unix sockets | N/A |
Patch | win32: Use DACLs when setting socket permissions | Merged |
Patch | win32: Add DACLs for directories created by system daemon | Merged |
Patch | build-sys: meson: Fix building without GIO | Not Submitted |