Forum Replies Created
-
AuthorPosts
-
TromeganParticipant
Not sure if this is distribution specific, but here is what I observed. If I run “pw-dump” in a terminal of a user with an active pipewire session – this is what I see in STRACE:
for user:
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 12
connect(12, {sa_family=AF_UNIX, sun_path=”/run/user/1000/pipewire-0″}, 28) = 0for root (same box same time):
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 12
connect(12, {sa_family=AF_UNIX, sun_path=”/run/pipewire/pipewire-0″}, 27) = -1 ENOENT (No such file or directory)This is not dependent on environment variables, so something else is telling pw-dump which socket to use – since creating a sym-link solves the problem it seems like NoMachine is for some reason trying to use pipewire socket path as if it is run for a user who doesn’t have an active session..
TromeganParticipantHi unfortunately from what I have observed just having “unix:native” doesn’t work – is there any possibility to enable debug log to print what path is NoMachine trying to use while communicating with PipeWire?
TromeganParticipantOk, thanks, so I got this to work – though in what seems to be a rather ugly way.
It seems like the issue I am having is due to the fact that I run per-user pipewire, while NoMachine seems to expect system-wide PipeWire.
What I had to do to make things work:
1) I modified my pipewire-pulse.conf to spawn a socket under /var/run/pulse/native
pulse.properties = {
# the addresses this server listens on
server.address = [
“unix:native”
“unix:/var/run/pulse/native”
“unix:/tmp/pulse-socket” # absolute paths may be used2) I created a sym link from /var/run/pipewire/pipewire-0 to /var/run/user/{uid}/pipewire/pipewire-0
With these done – I got pipewire to be properly recognized and I got sound on the client side – is there any way to do this in a more clear fashion? Especially the symlink part looks like a hack 😉
TromeganParticipantI guess this is the problem:
Connection failure: Connection refused
pa_context_connect() failed: Connection refused
875407 875723 2023-05-15 10:27:47 954.177 AudioProxyCore: Cannot check whether PulseAudio or PipeWire is used.Where is it trying to connect? Is there a way to suggest where it should be connecting?
user@host ~/.nx/node $ pactl info
Server String: tcp:127.0.0.1:4713
Library Protocol Version: 35
Server Protocol Version: 35
Is Local: no
Client Index: 41438
Tile Size: 65472
User Name: user
Host Name: host
Server Name: PulseAudio (on PipeWire 0.3.67)
Server Version: 15.0.0
Default Sample Specification: float32le 2ch 48000Hz
Default Channel Map: front-left,front-right
Default Sink: alsa_output.pci-0000_00_1f.3.analog-stereo
Default Source: alsa_input.pci-0000_00_1f.3.analog-stereo
Cookie: 14e9:9f97And this is how my pipewire-pulse.conf is configured:
pulse.properties = {
server.address = [
“unix:native”
“unix:/tmp/pulse-socket” # absolute paths may be used
“tcp:127.0.0.1:4713” # IPv4 on a single address
]
vm.overrides = {
pulse.min.quantum = 1024/48000 # 22ms
}
}Also in ~/.nx/nxserver.log I see that it seems to be calling pw-cli and seems to be getting something out of it:
875407 875407 2023-05-15 10:27:46 837.915 NXNODE Process ‘/usr/bin/pw-cli ls Node’ with pid ‘875672/875672’ finished with exit code 0 after 0,006 seconds.
875407 875407 2023-05-15 10:27:46 837.951 NXNODE nxDefaultExitCodeHandler: process with pid 875672 just died.
875407 875407 2023-05-15 10:27:46 837.982 NXNODE handleSIGCHLD checking child: 875428
875407 875407 2023-05-15 10:27:46 838.022 NXNODE Checking not child process ‘1363’.
875407 875407 2023-05-15 10:27:46 838.081 NXNODE NXRunCommand: nxwaitpid 875672 return 875672
875407 875407 2023-05-15 10:27:46 838.114 NXNODE NXRunCommand: process ‘875672’ exit status was ‘0’
875407 875407 2023-05-15 10:27:46 838.150 NXNODE NXRunCommand: process ‘875672’ stderr was ”
875407 875407 2023-05-15 10:27:46 838.181 NXNODE NXRunCommand: return: 0
875407 875407 2023-05-15 10:27:46 838.269 NXNODE PW_ExecuteCommandPwcli: /usr/bin/pw-cli ls Node: [0]: stdout[ id 28, type PipeWire:Interface:Node/3\n object.serial = “28”\n factory.id = “10”\n priority.driver = “20000”\n node.name = “Dummy-Driver”\n id 29, type PipeWire:Interface:Node/3\n object.serial = “29”\n factory.id = “10”\n priority.driver = “19000”\n node.name = “Freewheel-Driver”\n id 34, type PipeWire:Interface:Node/3\n object.serial = “35”\n factory.id = “10”\n client.id = “32”\n node.name = “Midi-Bridge”\n media.class = “Midi/Bridge”\n id 40, type PipeWire:Interface:Node/3\n object.serial = “41”\n object.path = “alsa:pcm:0:front:0:playback”\n factory.id = “18”\n client.id = “32”\n device.id = “39”\n priority.session = “1009”\n priority.driver = “1009”\n node.description = “Built-in Audio Analog Stereo”\n node.name = “alsa_output.pci-0000_00_1f.3.analog-stereo”\n node.nick = “ALC892 Analog”\n media.class = “Audio/Sink”\n id 41, type PipeWire:Interface:Node/3\n object.serial = “42”\n object.path = “alsa:pcm:0:front:0:capture”\n factory.id = “18”\n client.id = “32”\n device.id = “39”\n priority.session = “2009”\n priority.driver = “2009”\n node.description = “Built-in Audio Analog Stereo”\n node.name = “alsa_input.pci-0000_00_1f.3.analog-stereo”\n node.nick = “ALC892 Analog”\n media.class = “Audio/Source”\n id 70, type PipeWire:Interface:Node/3\n object.serial = “33106”\n factory.id = “7”\n client.id = “54”\n node.description = “/usr/bin/pw-loopback-646856″\n node.name = “input./usr/bin/pw-loopback-646856″\n media.class = “Stream/Input/Audio”\n id 82, type PipeWire:Interface:Node/3\n object.serial = “33098”\n factory.id = “18”\n node.description = “NoMachine Output”\n node.name = “nx_voice_out”\n media.class = “Audio/Sink”\n id 89, type PipeWire:Interface:Node/3\n object.serial = “33105”\n factory.id = “7”\n client.id = “54”\n node.description = “Remapped nx_voice_out”\n node.name = “nx_remapped_out”\n media.class = “Audio/Source”\n id 101, type PipeWire:Interface:Node/3\n object.serial = “41361”\n factory.id = “18”\n node.description = “NoMachine Output”\n node.name = “nx_voice_out”\n media.class = “Audio/Sink”\n].
875407 875407 2023-05-15 10:27:46 838.340 NXNODE PW_GetDeviceId: command output: id 28, type PipeWire:Interface:Node/3\n object.serial = “28”\n factory.id = “10”\n priority.driver = “20000”\n node.name = “Dummy-Driver”\n id 29, type PipeWire:Interface:Node/3\n object.serial = “29”\n factory.id = “10”\n priority.driver = “19000”\n node.name = “Freewheel-Driver”\n id 34, type PipeWire:Interface:Node/3\n object.serial = “35”\n factory.id = “10”\n client.id = “32”\n node.name = “Midi-Bridge”\n media.class = “Midi/Bridge”\n id 40, type PipeWire:Interface:Node/3\n object.serial = “41”\n object.path = “alsa:pcm:0:front:0:playback”\n factory.id = “18”\n client.id = “32”\n device.id = “39”\n priority.session = “1009”\n priority.driver = “1009”\n node.description = “Built-in Audio Analog Stereo”\n node.name = “alsa_output.pci-0000_00_1f.3.analog-stereo”\n node.nick = “ALC892 Analog”\n media.class = “Audio/Sink”\n id 41, type PipeWire:Interface:Node/3\n object.serial = “42”\n object.path = “alsa:pcm:0:front:0:capture”\n factory.id = “18”\n client.id = “32”\n device.id = “39”\n priority.session = “2009”\n priority.driver = “2009”\n node.description = “Built-in Audio Analog Stereo”\n node.name = “alsa_input.pci-0000_00_1f.3.analog-stereo”\n node.nick = “ALC892 Analog”\n media.class = “Audio/Source”\n id 70, type PipeWire:Interface:Node/3\n object.serial = “33106”\n factory.id = “7”\n client.id = “54”\n node.description = “/usr/bin/pw-loopback-646856″\n node.name = “input./usr/bin/pw-loopback-646856″\n media.class = “Stream/Input/Audio”\n id 82, type PipeWire:Interface:Node/3\n object.serial = “33098”\n factory.id = “18”\n node.description = “NoMachine Output”\n node.name = “nx_voice_out”\n media.class = “Audio/Sink”\n id 89, type PipeWire:Interface:Node/3\n object.serial = “33105”\n factory.id = “7”\n client.id = “54”\n node.description = “Remapped nx_voice_out”\n node.name = “nx_remapped_out”\n media.class = “Audio/Source”\n id 101, type PipeWire:Interface:Node/3\n object.serial = “41361”\n factory.id = “18”\n node.description = “NoMachine Output”\n node.name = “nx_voice_out”\n media.class = “Audio/Sink”TromeganParticipantHi All!
I have updated to 8.5.3 (both client Win11 and server Gentoo Linux) some new observations – it seems like this version does detect pipewire – as pw-loopback process is now created (it does require I configure AudioInterface to “pulseaudio” and doesn’t work with “alsa”):
user 14523 11931 0 02:57 ? 00:00:00 /usr/bin/pw-loopback –playback-props=media.class=Audio/Source node.name=nx_remapped_out node.description=”Remapped nx_voice_out” tar
I also see some new devices now in ‘pavucontrol’ – under “Output” – I see “NoMachine Output” and under “Input” I see “Monitor of NoMachine Output” and “Remapped nx_voice_out”. Also under recording I see “/usr/bin/pw-loopback” taking input from my default output device.
With all this happening – where should I look for why sound is not audible on the client?
Thanks!
TromeganParticipantHi @kubaszym1 – thanks a lot for your response – looking forward to the upcoming version.
As for the current version – I have 8.4.2 on client and server – I also do have pw-cli under ‘/usr/bin/pw-cli’
When it comes to sockets and their creation – the log says:
2580686 2580686 2023-03-22 12:17:40 653.053 NXNODE Starting audio service with session type ‘physicalAttachDesktop’.
2580686 2580686 2023-03-22 12:17:40 653.091 NXNODE Audio is enabled in configuration.
2580686 2580686 2023-03-22 12:17:40 653.143 NXNODE AUDIO returning 5:9:opus:fifo-/home/user/.nx/nxdevice/D-1002-70F1C3A3919CFF56CD4C4CE8603E2F64/audio/audio_in.fifo:1.
2580686 2580686 2023-03-22 12:17:40 653.199 NXNODE AUDIO returning 5:11:speex:fifo-/home/user/.nx/nxdevice/D-1002-70F1C3A3919CFF56CD4C4CE8603E2F64/audio/voice_out.fifo:1.
2580686 2580686 2023-03-22 12:17:40 653.352 NXNODE NXOptionsFile: Created options string ‘nx/nx,keyboard=evdev/en_US,cpus=6,threads=auto,priority=realtime,client=winnt,servercopysize=0,clientcopysize=0,audioin=5:9:opus:fifo-/home/user/.nx/nxdevice/D-1002-*****/audio/audio_in.fifo:1,voiceout=5:11:speex:fifo-/home/user/.nx/nxdevice/D-1002-*****/audio/voice_out.fifo:1,volume=0,devicesmartcard=1,deviceports=1,devicenetwork=1,legacykb=0,slave=1,cache=16M,images=64M,link=9,type=physical-desktop,clipboard=both,cleanup=0,accept=127.0.0.1,product=LS/None,shmem=1,backingstore=1,shpix=1,cookie=*****,id=ginaz-1002-*****,render=1,multipass=1,networkadaptive=0,encryption=1,proxy=8/8,monitor=9,rtremotehost=192.168.86.49,rtremoteport=4000,rtlocalport=4011,rtsession=25,rtkey=*****,rtiv=*****,rekey=32G,deblock=1,downsampling=0,mode=1,shadowmode=2,shadowuid=1000,shading=1,shadow=:1001:1002\n’.
2580686 2580686 2023-03-22 12:17:40 653.436 NXNODE NXOpen FD#10 – file /home/user/.nx/node/C-ginaz-1002-70F1C3A3919CFF56CD4C4CE8603E2F64/options with mode 1089 and permissions 384 from main::create_user_readable_only_file.
2580686 2580686 2023-03-22 12:17:40 653.483 NXNODE libnxh::NXFileMode(/home/user/.nx/node/C-ginaz-1002-70F1C3A3919CFF56CD4C4CE8603E2F64/options, 384)
2580686 2580686 2023-03-22 12:17:40 653.527 NXNODE libnxh::NXFileMode returns ‘0’.
2580686 2580686 2023-03-22 12:17:40 653.562 NXNODE file ‘/home/user/.nx/node/C-ginaz-1002-70F1C3A3919CFF56CD4C4CE8603E2F64/options’ opened for appending: FD [10]
2580686 2580686 2023-03-22 12:17:40 653.639 NXNODE written to file ‘/home/user/.nx/node/C-ginaz-1002-70F1C3A3919CFF56CD4C4CE8603E2F64/options’ bytes ‘nx/nx,keyboard=evdev/en_US,cpus=6,threads=auto,priority=realtime,client=winnt,servercopysize=0,clientcopysize=0,audioin=5:9:opus:fifo-/home/user/.nx/nxdevice/D-1002-*****/audio/audio_in.fifo:1,voiceout=5:11:speex:fifo-/home/user/.nx/nxdevice/D-1002-*****/audio/voice_out.fifo:1,volume=0,devicesmartcard=1,deviceports=1,devicenetwork=1,legacykb=0,slave=1,cache=16M,images=64M,link=9,type=physical-desktop,clipboard=both,cleanup=0,accept=127.0.0.1,product=LS/None,shmem=1,backingstore=1,shpix=1,cookie=******,id=ginaz-1002-*****,render=1,multipass=1,networkadaptive=0,encryption=1,proxy=8/8,monitor=9,rtremotehost=192.168.86.49,rtremoteport=4000,rtlocalport=4011,rtsession=25,rtkey=*****,rtiv=*****,rekey=32G,deblock=1,downsampling=0,mode=1,shadowmode=2,shadowuid=1000,shading=1,shadow=:1001:1002\n’and while it refers to creating those sockets – there is no audio under /home/user/.nx/D-1002-*/ – there is only cups, disk and printer.
TromeganParticipant@Bilbotine – thanks! That article is what we started with – I am connecting to a physical session, and I do have pipewire configured and working
TromeganParticipantAny update on this topic? Anything else I can provide to help figuring this out? Something else I should try?
TromeganParticipantI do have pactl:
user@host ~ $ which pactl
/usr/bin/pactl
user@host ~ $ LC_ALL=C pactl info
Server String: /run/user/1000/pulse/native
Library Protocol Version: 35
Server Protocol Version: 35
Is Local: yes
Client Index: 178572
Tile Size: 65472
User Name: user
Host Name: host
Server Name: PulseAudio (on PipeWire 0.3.63)
Server Version: 15.0.0
Default Sample Specification: float32le 2ch 48000Hz
Default Channel Map: front-left,front-right
Default Sink: alsa_output.pci-0000_00_1f.3.analog-stereo
Default Source: alsa_input.pci-0000_00_1f.3.analog-stereo.2
Cookie: 83e0:ae3eTromeganParticipantSorry, my bad – now sent both – userdir and full set of NX server logs as per documentation.
TromeganParticipantDone – should be there..
TromeganParticipantMy server is Gentoo Linux with NoMachine 8.4.2 and my client is Windows 11 and also 8.4.2
My config is like the following:
# grep Audio ../../etc/node.cfg
AudioInterface alsa
EnableAudio 1
# Specify path and name of the command to start PulseAudio server.
CommandStartPulseAudio “”and attached is the nxserver log I am getting…
TromeganParticipantHm.. Thanks for the link, but it doesn’t really have anything on how to get pipewire to work.. Maybe I am missing something – it seems to be more focused on “temporary solution for virtual desktop cases” – like what should be set in node.cfg for Pipewire to work? I have “pulseaudio” there – is that right? I have: AudioInterface pulseaudio, EnableAudio 1 and CommandStartPulseAudio “” – is that right?
-
AuthorPosts