Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Installation fails on Kali #110

Closed
SanderVeeken opened this issue Feb 27, 2024 · 17 comments
Closed

Installation fails on Kali #110

SanderVeeken opened this issue Feb 27, 2024 · 17 comments

Comments

@SanderVeeken
Copy link

SanderVeeken commented Feb 27, 2024

TL;DR for whoever comes across this:

  • Check if your Kali installation uses Pipewire or Pulseaudio. If Pipewire, use: https://github.com/neutrinolabs/pipewire-module-xrdp
  • If your install fails and the log file says doxygen couldn't be found, edit the install script:
    scripts/install_pulseaudio_sources_apt.sh, find the line where it says "Kali" and make sure the version is the same that you're running (usually, "Kali-YYYY*" where YYYY is the current year. In my case it was "Kali-2024*". The script said "Kali-2022*".

Hello,

I've been trying to get this working on my Kali Linux VM but I can't. XRDP is working fine, for what it's worth, but no audio. I tried the Debian convenience script, that outputs:

─$ sudo scripts/install_pulseaudio_sources_apt_wrapper.sh

  • Creating kali-rolling build root. Log file in /var/tmp/pa-build-root-debootstrap.log
  • Creating schroot config file /etc/schroot/chroot.d/pa-build-root.conf
  • Copying /etc/apt/sources.list to the root
  • Creating the build directory /build
  • Copying the wrapped script to the build directory
  • Building PA sources. Log file in /var/tmp/pa-build-root-schroot.log
    ** schroot failed. Check log file /var/tmp/pa-build-root-schroot.log

The referenced log file ends with:

Configuring doxygen.conf using configuration

doxygen/meson.build:9:0: ERROR: Program 'doxygen' not found or not executable

A full log can be found at /build/pulseaudio-16.1+dfsg1/build/meson-logs/meson-log.txt
WARNING: Running the setup command as meson [options] instead of meson setup [options] is ambiguous and deprecated.

The final lines from that log are similar;

Configuring doxygen.conf using configuration

doxygen/meson.build:9:0: ERROR: Program 'doxygen' not found or not executable

A full log can be found at /build/pulseaudio-16.1+dfsg1/build/meson-logs/meson-log.txt
WARNING: Running the setup command as meson [options] instead of meson setup [options] is ambiguous and deprecated.

FWIW of course I tried installing Doxygen manually as follows;

└─$ sudo apt install doxygen
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
doxygen is already the newest version (1.9.8+ds-2).
0 upgraded, 0 newly installed, 0 to remove and 11 not upgraded.

But it makes no difference.

The second thing I tried was doing a custom build using the "other distro" instructions. While the instructions didn't line up completely I got as far as actually having the "end result" files as shown by the suggested command:

└─$ ls $(pkg-config --variable=modlibexecdir libpulse) | grep xrdp
module-xrdp-sink.la
module-xrdp-sink.so
module-xrdp-source.la
module-xrdp-source.so

However no "xrdp-sink" audio device shows up anywhere and if I try to manually use the loading script I get errors as if the modules are not installed:

└─$ ./load_pa_modules.sh
Failure: No such entity
? Can't load pulseaudio xrdp-sink
Failure: No such entity
? Can't load pulseaudio xrdp-source

If I use a sudo command to run the script I get no response (presumably then it's loaded correctly?) but still no other audio device than "Dummy Audio" shows up anywhere and there is no sound.

I feel like I'm getting close but I'm too much of a noob to get it further than this. Hopefully this can be solved?

@matt335672
Copy link
Member

Are you running the latest version of the script from the repo (rather than the release)?

This looks a lot like #90

@SanderVeeken
Copy link
Author

Thanks for that, sorry I overlooked that topic. It sure looks like the same thing. I don't really know what you mean with the latest from the repo vs the release. I just used git clone from this page. Is there any way to get anything more recent than that? I'll try using the suggested patch file.

I'm relatively new to Linux and when I'm trying different things to troubleshoot sometimes it's hard to know how to undo/clean up and start fresh. I'll report back after I've tried the fix from the other thread.

@SanderVeeken
Copy link
Author

SanderVeeken commented Feb 27, 2024

Unfortunately I still can't get it to work. I took the suggested code (but changed the OS version to mine), put it in a file called patch1.txt in the pulseaudio-module-xrdp folder:

diff --git a/scripts/install_pulseaudio_sources_apt.sh b/scripts/install_pulseaudio_sources_apt.sh
index 5e0aef8..2572a15 100755
--- a/scripts/install_pulseaudio_sources_apt.sh
+++ b/scripts/install_pulseaudio_sources_apt.sh
@@ -118,6 +118,14 @@ if [ ! -d "$PULSE_DIR" ]; then
         Kali-2024*)
             sudo apt-get install -y doxygen
             ;;
+        Debian-n/a)
+            # Debian testing build
+            case "$codename" in
+                bookworm)
+                    sudo apt-get install -y doxygen
+                    ;;
+            esac
+            ;;
     esac
 
     cd "$(dirname $PULSE_DIR)"

then ran the patch command like this:

└─$ patch -p1 < patch1.txt
patching file scripts/install_pulseaudio_sources_apt.sh
Hunk #1 succeeded at 137 with fuzz 2 (offset 19 lines).

then ran the script again with sudo ./scripts/...etc.
but it ends with the same error.

I already did sudo apt install doxygen manually by the way. Your script says apt-get. I understood apt was kind of the trimmed down version of apt-get but should still do basically the same thing, just with less options.

What's so weird is that if I just type "doxygen" in terminal it opens (and complains I didn't give it a file etc.), so it does actually work and run - just not from the script.

@matt335672
Copy link
Member

'git clone' is fine.

Here are some explanations of your other comments, which I hope is helpful. I'll get to the actual problem further below.

  1. apt-get is still the official command to use in scripts to install packages. apt looks superficially the same but the interface is still subject to change and (according to the manpage) is better designed for interactive use. Personally I think it's a bit bonkers having two similar but different commands to do this, but that's Debian package management for you.
  2. The convenience script is designed to install all the packages needed to build the sources in a mini copy of the operating system called a chroot environment. When the build is finished, the copy is thrown away. It means you don't need to pollute your run-time environment with lots of development files you don't want or need.

Please come back to me if any of the above don't make sense.

The error suggests that doxygen is not being installed in the chroot environment for some reason.

Are you able to post the whole contents of the log file /var/tmp/pa-build-root-schroot.log? The answer will probably be in there somewhere.

@SanderVeeken
Copy link
Author

See the attached file. There's a few things in there that seem suspicious to me but I don't have enough experience to really say for sure. For example, the pulse-audio package wasn't installed in the sandboxed environment because access was denied to some file, and cmake wasn't found for my build. But...? I don't see any line there where it tries to install doxygen except at the end where it fails to configure doxygen because it's not installed.

Thank you for the explanation of what the script is doing by the way, that makes a lot of sense. Reminds me a little of a one-off docker container.

build-log.txt

@SanderVeeken
Copy link
Author

Some progress. It seems something failed with the patch file. I went into the install_pulseaudio_sources_apt.sh file manually and it still said Kali 2022*, I changed that to Kali 2024* and ran it again. It took forever with very little visible CPU usage but it completed successfully this time.

For the next steps I did:
./bootstrap && ./configure PULSE_DIR=$HOME/pulseaudio.src
but I had to do this as root (sudo su), otherwise it failed. I tried a simple sudo and referring to /root/pulseaudio.src but some operations still failed.
Then I did
make
also as root, it still installed everything in my home/[username] folder.
Finally I exited root and did
sudo make install
When I check the build using your command:
ls $(pkg-config --variable=modlibexecdir libpulse) | grep xrdp
I get:

─$ ls $(pkg-config --variable=modlibexecdir libpulse) | grep xrdp
module-xrdp-sink.la
module-xrdp-sink.so
module-xrdp-source.la
module-xrdp-source.so

However, no audio device other than dummy audio is shown and I hear no sound. If I try manually starting the loading script I get:

└─$ ./load_pa_modules.sh
Failure: No such entity
? Can't load pulseaudio xrdp-sink
Failure: No such entity
? Can't load pulseaudio xrdp-source

If I start the script as sudo I get no response but also still no audio device. Disconnecting xrdp and reconnecting doesn't make a difference.

@SanderVeeken
Copy link
Author

I am no confused as to whether my system is using pipewire or pulse, I understand only pulseaudio is supported. I definitely have " some" pipewire on my system as I can see it if I run task manager. I also have something called " pipewire-pulse" and the pavumeter works just fine (only showing dummy output but response with the meter). I also of course installed pulseaudio using the installer script. How do I make sure I'm actually using pulse for playback, not pipewire?

@matt335672
Copy link
Member

pipewire-pulse is a pulseaudio compatible server which pushes sound through pipewire.

What does pactl info tell you?

@matt335672
Copy link
Member

To go back to your previous post (if still relevant):-

For the next steps I did:
./bootstrap && ./configure PULSE_DIR=$HOME/pulseaudio.src
but I had to do this as root (sudo su), otherwise it failed. I tried a simple sudo and referring to /root/pulseaudio.src but some operations still failed.

Not only shouldn't you do this as root, but you mustn't. Building software (rather than installing it) should be entirely non-privileged these days.

You've probably got files owned by root in your home account. You can find them with:-

find . -user root

Off the top of my head, you can change them to be owned by your user account (in $USER) with something like:-

sudo find . -user root -exec chown -h $USER: {} +

A breakdown:-

  1. sudo ...
    Runs the command ... as root. You need to do this to change ownership of files.
  2. find . -user root -exec ... {} +
    Finds files owned by root and executes the command ... multiple times, passing as many arguments as will fit at once.
  3. chown -h $USER:
    Changes file ownership. -h says not to follow any symbolic links, and $USER translates to your username. The trailing : is important as it changes the group ownership of the files too to your primary group.

Having done that, the make should work normally. Then sudo make install will install the files.

@matt335672
Copy link
Member

PS: If you are using pipewire, look at:-

https://github.com/neutrinolabs/pipewire-module-xrdp

@SanderVeeken
Copy link
Author

pactl info gave me this:

─$ pactl info
Server String: /run/user/1000/pulse/native
Library Protocol Version: 35
Server Protocol Version: 35
Is Local: yes
Client Index: 65
Tile Size: 65472
User Name: sander
Host Name: KaliVM
Server Name: PulseAudio (on PipeWire 1.0.3)
Server Version: 15.0.0
Default Sample Specification: float32le 2ch 48000Hz
Default Channel Map: front-left,front-right
Default Sink: auto_null
Default Source: auto_null.monitor
Cookie: e9e9:e9e4

Doesn't say pulseaudio 16.1 anywhere which is what should have been installed...
Doing the find . gave me a list of files that were owned by root, all in the pulseaudio-module-xrdp repo folder in my home dir.
After changing ownership with your command the permissions were fixed. However, running "make" gave:

└─$ make
make all-recursive
make[1]: Entering directory '/home/sander/tmp/pulseaudio-module-xrdp'
Making all in src
make[2]: Entering directory '/home/sander/tmp/pulseaudio-module-xrdp/src'
make[2]: stat: /root/pulseaudio.src/build/config.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/rtclock.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/cdecl.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/sample.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/gccmacro.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/timeval.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/xmalloc.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/core-error.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/sink.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/typedefs.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/def.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/format.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/proplist.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/channelmap.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/volume.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/core.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/mainloop-api.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/cpu.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/cpu-x86.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/macro.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/log.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/cpu-arm.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/idxset.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/hashmap.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/memblock.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/atomic.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/memchunk.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/mem.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/creds.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/socket.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/resampler.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/sconv.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/remap.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/filter/lfe-filter.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/memblockq.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/llist.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/hook-list.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/asyncmsgq.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/asyncq.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/msgobject.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/object.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/refcnt.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/sample-util.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/source.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/module.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/dynarray.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/rtpoll.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/fdsem.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/card.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/device-port.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/queue.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/thread-mq.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/source-output.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/client.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/sink-input.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/core-subscribe.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/native-common.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/pdispatch.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/tagstruct.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/packet.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/pstream.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/iochannel.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/srbchannel.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/core-util.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/i18n.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/modargs.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/thread.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/once.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/mutex.h: Permission denied
CC module_xrdp_sink_la-module-xrdp-sink.lo
cc1: error: /root/pulseaudio.src/build: Permission denied
cc1: error: /root/pulseaudio.src/src: Permission denied
make[2]: *** [Makefile:485: module_xrdp_sink_la-module-xrdp-sink.lo] Error 1
make[2]: Leaving directory '/home/sander/tmp/pulseaudio-module-xrdp/src'
make[1]: *** [Makefile:423: all-recursive] Error 1
make[1]: Leaving directory '/home/sander/tmp/pulseaudio-module-xrdp'
make: *** [Makefile:355: all] Error 2
Maybe because I ran the command as root before? So I removed the install dir /var/lib/pa-build/root and ran the script again without sudo. It completed much quicker this time but when I do make again I get:

└─$ make
make all-recursive
make[1]: Entering directory '/home/sander/tmp/pulseaudio-module-xrdp'
Making all in src
make[2]: Entering directory '/home/sander/tmp/pulseaudio-module-xrdp/src'
make[2]: stat: /root/pulseaudio.src/build/config.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/rtclock.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/cdecl.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/sample.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/gccmacro.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/timeval.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/xmalloc.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/core-error.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/sink.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/typedefs.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/def.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/format.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/proplist.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/channelmap.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/volume.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/core.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulse/mainloop-api.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/cpu.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/cpu-x86.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/macro.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/log.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/cpu-arm.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/idxset.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/hashmap.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/memblock.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/atomic.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/memchunk.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/mem.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/creds.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/socket.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/resampler.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/sconv.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/remap.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/filter/lfe-filter.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/memblockq.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/llist.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/hook-list.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/asyncmsgq.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/asyncq.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/msgobject.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/object.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/refcnt.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/sample-util.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/source.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/module.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/dynarray.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/rtpoll.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/fdsem.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/card.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/device-port.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/queue.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/thread-mq.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/source-output.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/client.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/sink-input.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/core-subscribe.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/native-common.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/pdispatch.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/tagstruct.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/packet.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/pstream.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/iochannel.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/srbchannel.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/core-util.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/i18n.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/modargs.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/thread.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/once.h: Permission denied
make[2]: stat: /root/pulseaudio.src/src/pulsecore/mutex.h: Permission denied
CC module_xrdp_sink_la-module-xrdp-sink.lo
cc1: error: /root/pulseaudio.src/build: Permission denied
cc1: error: /root/pulseaudio.src/src: Permission denied
make[2]: *** [Makefile:485: module_xrdp_sink_la-module-xrdp-sink.lo] Error 1
make[2]: Leaving directory '/home/sander/tmp/pulseaudio-module-xrdp/src'
make[1]: *** [Makefile:423: all-recursive] Error 1
make[1]: Leaving directory '/home/sander/tmp/pulseaudio-module-xrdp'
make: *** [Makefile:355: all] Error 2

I'm starting to think I should just trash this VM and start over. Unless this shows some obvious error to you?

@SanderVeeken
Copy link
Author

Sorry, I forgot the "bootstrap" step that time. Everything completed this time, although sudo make install complains that it doesn't have much to do:

─$ sudo make install
[sudo] password for sander:
Making install in src
make[1]: Entering directory '/home/sander/tmp/pulseaudio-module-xrdp/src'
make[2]: Entering directory '/home/sander/tmp/pulseaudio-module-xrdp/src'
/usr/bin/mkdir -p '/usr/lib/pulse-16.1+dfsg1/modules'
/bin/bash ../libtool --mode=install /usr/bin/install -c module-xrdp-sink.la module-xrdp-source.la '/usr/lib/pulse-16.1+dfsg1/modules'
libtool: install: /usr/bin/install -c .libs/module-xrdp-sink.so /usr/lib/pulse-16.1+dfsg1/modules/module-xrdp-sink.so
libtool: install: /usr/bin/install -c .libs/module-xrdp-sink.lai /usr/lib/pulse-16.1+dfsg1/modules/module-xrdp-sink.la
libtool: install: /usr/bin/install -c .libs/module-xrdp-source.so /usr/lib/pulse-16.1+dfsg1/modules/module-xrdp-source.so
libtool: install: /usr/bin/install -c .libs/module-xrdp-source.lai /usr/lib/pulse-16.1+dfsg1/modules/module-xrdp-source.la
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/lib/pulse-16.1+dfsg1/modules

Libraries have been installed in:
/usr/lib/pulse-16.1+dfsg1/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:

  • add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
    during execution
  • add LIBDIR to the 'LD_RUN_PATH' environment variable
    during linking
  • use the '-Wl,-rpath -Wl,LIBDIR' linker flag
  • have your system administrator add LIBDIR to '/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.

make[2]: Nothing to be done for 'install-data-am'.
make[2]: Leaving directory '/home/sander/tmp/pulseaudio-module-xrdp/src'
make[1]: Leaving directory '/home/sander/tmp/pulseaudio-module-xrdp/src'
Making install in instfiles
make[1]: Entering directory '/home/sander/tmp/pulseaudio-module-xrdp/instfiles'
make[2]: Entering directory '/home/sander/tmp/pulseaudio-module-xrdp/instfiles'
/usr/bin/mkdir -p '/usr/libexec/pulseaudio-module-xrdp'
/usr/bin/install -c load_pa_modules.sh '/usr/libexec/pulseaudio-module-xrdp'
/usr/bin/mkdir -p '/etc/xdg/autostart'
/usr/bin/install -c -m 644 pulseaudio-xrdp.desktop '/etc/xdg/autostart'
make[2]: Leaving directory '/home/sander/tmp/pulseaudio-module-xrdp/instfiles'
make[1]: Leaving directory '/home/sander/tmp/pulseaudio-module-xrdp/instfiles'
make[1]: Entering directory '/home/sander/tmp/pulseaudio-module-xrdp'
make[2]: Entering directory '/home/sander/tmp/pulseaudio-module-xrdp'
make[2]: Nothing to be done for 'install-exec-am'.
make[2]: Nothing to be done for 'install-data-am'.
make[2]: Leaving directory '/home/sander/tmp/pulseaudio-module-xrdp'
make[1]: Leaving directory '/home/sander/tmp/pulseaudio-module-xrdp'

I'll have a look at the pipewire page now, thanks for that.

@SanderVeeken
Copy link
Author

I installed the pipewire module as per the other page. I don't want to mix up the topics too much but suffice to say the install was a lot easier and completed without errors - however, no audio device other than "dummy audio device" appears, so still no sound.

@SanderVeeken
Copy link
Author

I spoke to soon, somehow, a reboot or two more seems to have fixed it, for now. I still don't completely understand which step finally did it. But the audio device "xrdp-sink" suddenly replaced the "dummy audio device" and I can actually hear sound. Annoyingly, it's incredibly choppy when viewing something on YouTube. That isn't necessarily the primary purpose of this exercise but still disappointing.

Thank you for all your guidance, I hope I can do it all right the first time with the next VM!

@matt335672
Copy link
Member

The choppy nature could be down to bandwidth limitations. When you're watching a video with sound, you're trying to squeeze a lot of data down a (potentially) quite small pipe at the same time.

These may be of interest to you.:-

  1. If you're running over a WAN, have a look at Improve performance on long fat networks (LFNs) xrdp#2910. This may improve things.
  2. We're getting close to releasing a new major version of xrdp v0.10.x which supports better compression. This could help quite a bit.

Can I close this one now?

@SanderVeeken
Copy link
Author

SanderVeeken commented Mar 1, 2024 via email

@matt335672
Copy link
Member

We don't have a way to prioritise audio over video yet I'm afraid.

Thanks for the update, and please try the next version when we get it out the door!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants