Bug 1214295 - xrdp and sound support when using pipewire
Summary: xrdp and sound support when using pipewire
Status: NEW
Alias: None
Product: openSUSE Tumbleweed
Classification: openSUSE
Component: X11 Applications (show other bugs)
Version: Current
Hardware: x86-64 openSUSE Tumbleweed
: P5 - None : Normal (vote)
Target Milestone: ---
Assignee: Daike Yu
QA Contact: E-mail List
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-08-15 14:51 UTC by Joe S
Modified: 2023-09-13 13:22 UTC (History)
5 users (show)

See Also:
Found By: ---
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---
yfjiang: needinfo? (fzhang.foss)


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Joe S 2023-08-15 14:51:15 UTC
After Tumbleweed switched from pulseaudio to pipewire, remote desktop
sessions ( XRDP ) no longer had sound because that support was based on
pulseaudio.

The developers have been working on a solution for quite a while now and it
appears they have it working again using a new module.

This link from the maintainer talks about the development of the new module.

https://github.com/neutrinolabs/xrdp/discussions/2023#discussioncomment-4683606

I also raised the issues on the Factory Mailing List and the maintainer replied there with these details:

  Hi all - xrdp maintainer here.

  I'll start by explaining the architecture using the PA sub-system.

  xrdp provides a remote desktop environment (RDE) to an RDP client. The RDE may 
  be running applications that produce or consume audio. The audio devices will 
  be connected to the RDP client - not the server running xrdp.

  xrdp has a PA driver which implements a virtual soundcard. This provides a 
  source and sink for the RDP applications. Audio is exchanged with the RDP 
  client using the relevant RDP protocol.

  This module is a pain to build and upgrade as PA does not support out-of-tree 
  modules.

  For PW, one of our users evaluated a number of approaches and came up with a PW 
  module. The relevant part of that discussion is here:-

  https://github.com/neutrinolabs/xrdp/discussions/2023#discussioncomment-4683606

  PW supports out-of-tree modules, and so this approach is a lot easier to build.

The new module appears to be available here

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

Could we PLEASE get this new module added to the TW repos?

Thank you!

Have a blessed day!
Comment 1 Joe S 2023-08-17 16:00:53 UTC
Update I also posted about this on the Factory Mailing List

Jason Craig created a package for it and responded with

  You can try this (fair warning: I just built it, I haven't tried it):

  https://build.opensuse.org/package/show/home:jacraig:xrdp/pipewire-module-xrdp

I have installed that package in a test TW 20230809 machine and it is working PERFECTLY.

So can we please get this added to the TW repos ?

Thanks very much!
Comment 2 Takashi Iwai 2023-08-17 16:04:35 UTC
It's done by the user, not from us.

A standard procedure is: submit the package to the dedicated OBS devel project (e.g. multimedia:libs), staging there, and submit from there to FACTORY.
Please ask to submit do that.
Comment 3 Joe S 2023-08-17 16:17:56 UTC
(In reply to Takashi Iwai from comment #2)
> It's done by the user, not from us.
> 
> A standard procedure is: submit the package to the dedicated OBS devel
> project (e.g. multimedia:libs), staging there, and submit from there to
> FACTORY.
> Please ask to submit do that.

Hi Takashi,

Yes, Jason was compiling the new package for me so that I could test it, however, in my original message I gave you the URL for the xrdp upstream project ( xrdp is already included in TW, this is just a new module added to it ) where they have added the module to add the xrdp pipewire support.

Here's that link again 

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

So the xrdp maintainer in TW needs to also include this new module getting it from the upstream project like they do for the rest of xrdp which comes from

  https://github.com/neutrinolabs/xrdp

that way when future xrdp upstream updates occur they would now include the new pipewire module.

I don't have the ability ( or knowledge for how to do that ) which I why I submitted this bug report so that future xrdp packages would include this new module.

Thanks!
Comment 4 Takashi Iwai 2023-08-18 14:08:21 UTC
OK, then let's reassign to xrdp package maintainer.
Comment 5 Joe S 2023-08-18 16:10:24 UTC
(In reply to Takashi Iwai from comment #4)
> OK, then let's reassign to xrdp package maintainer.

I thought I did that when I added yfjiang@suse.com as that's what osc maintainer for xrdp shows.

If you think we need to include someone else PLEASE add them.

Thank you!
Comment 6 Daike Yu 2023-08-22 09:13:32 UTC
I'm taking over this bug as I am the current mantainer of xrdp.

There's some task on my hand right now, but I should be able to take a look at the spec next Monday or so. Sorry for the waiting.
Comment 7 Joe S 2023-08-31 13:58:47 UTC
(In reply to Daike Yu from comment #6)
> I'm taking over this bug as I am the current mantainer of xrdp.
> 
> There's some task on my hand right now, but I should be able to take a look
> at the spec next Monday or so. Sorry for the waiting.

Hi Daike,

Have you had a chance to look at this yet?

I talked to the upstream developer last week and he said it is up to the distros to either include this as a separate package ( which I suspect TW will do ) or to include it with the regular xrdp package.

Do you have an ETA?

Thanks for your efforts.
Comment 8 Yifan Jiang 2023-09-01 00:00:39 UTC
> Have you had a chance to look at this yet?
> 
> I talked to the upstream developer last week and he said it is up to the
> distros to either include this as a separate package ( which I suspect TW
> will do ) or to include it with the regular xrdp package.
> 
> Do you have an ETA?
> 
> Thanks for your efforts.

JFYI - As a co-maintainer in X11:RemoteDesktop project, I accepted this a couple of days ago based on Daike's input:

https://build.opensuse.org/request/show/1105159

I remember Jason mentioned he is going to submit to Factory later on after the devel project's acceptance. So I intended to leave the Factory process to Jason who practically did the contribution. Please let me know if we need further discussion.
Comment 9 Joe S 2023-09-02 23:08:02 UTC
(In reply to Yifan Jiang from comment #8)

> JFYI - As a co-maintainer in X11:RemoteDesktop project, I accepted this a
> couple of days ago based on Daike's input:

Shouldn't this have been in 20230901 ( which was just released a few minutes ago ) since it was accepted a couple days ago ???
Comment 10 Yifan Jiang 2023-09-04 02:35:33 UTC
(In reply to Joe S from comment #9)
> (In reply to Yifan Jiang from comment #8)
> 
> > JFYI - As a co-maintainer in X11:RemoteDesktop project, I accepted this a
> > couple of days ago based on Daike's input:
> 
> Shouldn't this have been in 20230901 ( which was just released a few minutes
> ago ) since it was accepted a couple days ago ???

X11:RemoteDesktop is the development project, to make it available on snapshot, I think we still need the package submitted and accepted in the Factory.
Comment 11 Joe S 2023-09-05 18:30:25 UTC
(In reply to Yifan Jiang from comment #10)
> 
> X11:RemoteDesktop is the development project, to make it available on
> snapshot, I think we still need the package submitted and accepted in the
> Factory.

Hi Yifan, 

Sorry, I misunderstood.  I thought when you said you accepted you meant that you accepted to Factory.

Please note that Jason compiled so that I could test the package but this is a new package which is part of XRDP to provide remote sound using pipewire.

Whatever process pulls XRDP from upstream needs to also start pulling this new module so that it is updated whenever upstream has changes.

I reached out to Jason but he has not responded yet.

How do we get this new package added such that it is also included when new XRDP upstream releases occur?

Thanks for your assistance!
Comment 12 Yifan Jiang 2023-09-06 01:44:43 UTC
> How do we get this new package added such that it is also included when new
> XRDP upstream releases occur?

The module has not hard dependency on xrdp core. So the need of upgrade probably depends on pipewire-module-xrdp upstream rather than xrdp core.

Like how ordinary Factory packages have been maintained, in case of any new releases or build failure of pipewire-module-xrdp, the maintainers and contributors of the package look into them manually.
Comment 13 Joe S 2023-09-06 02:38:39 UTC
(In reply to Yifan Jiang from comment #12)
> > How do we get this new package added such that it is also included when new
> > XRDP upstream releases occur?
> 
> The module has not hard dependency on xrdp core. So the need of upgrade
> probably depends on pipewire-module-xrdp upstream rather than xrdp core.
> 
> Like how ordinary Factory packages have been maintained, in case of any new
> releases or build failure of pipewire-module-xrdp, the maintainers and
> contributors of the package look into them manually.

I don't disagree with you, however, the key point that seems to be being missed is that this is a NEW additional module released by xrdp upstream.

This NEW module now provides xrdp sessions with sound using pipewire, however, unless the TW maintainers are aware that this NEW module exists it isn't going to be included in Factory because they would not be pulling it as it did not previously exist.

The purpose of my bug report was my attempt to notify the xrdp package maintainers to include this new module when they pull the xrdp package.

Wouldn't you agree that logically whoever maintains the xrdp package should also maintain this one since the both come from upstream xrdp ?

osc maintainer -e xrdp shows 

  maintainer of xrdp : 
   fzhang.foss@gmail.com, yfjiang@suse.com, yu.daike@suse.com

Assuming that is correct, it would seem that fzhang, you or daike would be the ones to pull it from upstream when you pull xrdp and then submit it to Factory.

If not please help me to understand WHO I need to notify so that when xrdp upstream pulls are done, they also pull this NEW package.

Thank you!
Comment 14 Yifan Jiang 2023-09-06 03:39:04 UTC
> If not please help me to understand WHO I need to notify so that when xrdp
> upstream pulls are done, they also pull this NEW package.

Can you explain a bit what does "pull" mean here? Do you mean "regularly monitored and upgraded with pipewire-xrdp-module upstream"?

Technically I would differentiate it from xrdp upstream because their release cycles can be different. So upgrading xrdp doesn't mean we need to upgrade the module.

If it was meant to find somebody to monitor and maintain the new package, I agree current xrdp maintainers are good contacts before we having explicit maintainers. However I don't think, without explicit commitment, the maintainers of the new package naturally "inherited" from xrdp just because the module comes from the same community of xrdp. Because it is not a part of core xrdp code base and it probably has different lifecycle.

Personally I could offer help when there is an urgent need, but due to my recent focus is pretty far from xrdp, I think it would be more reliable if we have more commitment of contributors to the new package. Let's try if Jason, Felix and Daike could offer maintainership the new package together.
Comment 15 Yifan Jiang 2023-09-06 03:41:22 UTC
@Jason, @Felix, @Daike, what do you think the comment#13 and comment#14, would anyone(s) of you could help on maintaining the package in a regular base?
Comment 16 Daike Yu 2023-09-06 04:41:47 UTC
(In reply to Yifan Jiang from comment #15)
> @Jason, @Felix, @Daike, what do you think the comment#13 and comment#14,
> would anyone(s) of you could help on maintaining the package in a regular
> base?

I don't mind help maintaining the package. It can be considering part of xrdp (although not part of xrdp source tree) after all.

(In reply to Joe S from comment #13)
> I don't disagree with you, however, the key point that seems to be being
> missed is that this is a NEW additional module released by xrdp upstream.
> 
> This NEW module now provides xrdp sessions with sound using pipewire,
> however, unless the TW maintainers are aware that this NEW module exists it
> isn't going to be included in Factory because they would not be pulling it
> as it did not previously exist.
> 
> The purpose of my bug report was my attempt to notify the xrdp package
> maintainers to include this new module when they pull the xrdp package.
> 
> Wouldn't you agree that logically whoever maintains the xrdp package should
> also maintain this one since the both come from upstream xrdp ?
> 
> osc maintainer -e xrdp shows 
> 
>   maintainer of xrdp : 
>    fzhang.foss@gmail.com, yfjiang@suse.com, yu.daike@suse.com
> 
> Assuming that is correct, it would seem that fzhang, you or daike would be
> the ones to pull it from upstream when you pull xrdp and then submit it to
> Factory.
> 
> If not please help me to understand WHO I need to notify so that when xrdp
> upstream pulls are done, they also pull this NEW package.

I agree it would be a logical choice, but I don't think I quite get your point here, can you please elaborate?

AFAIU the package should be submitted to X11:RemoteDesktop (done), and from there then submitted to openSUSE:Factory (in progress), which will make it available for TW users; after that I (and maybe others) would take over the duty of maintaining the package. So to me things looks well in progress, and I'm not sure what we've missed.
Comment 17 Joe S 2023-09-06 13:39:25 UTC
(In reply to Yifan Jiang from comment #14)
 
> Can you explain a bit what does "pull" mean here? Do you mean "regularly
> monitored and upgraded with pipewire-xrdp-module upstream"?

Yes, that is what I meant.
 
> Technically I would differentiate it from xrdp upstream because their
> release cycles can be different. So upgrading xrdp doesn't mean we need to
> upgrade the module.

Yes, that may or may not be true.   When I talked to the xrdp developer he said it was up to the distros as to whether they package it with the xrdp package or make it a separate package in the distro.

I don't care which way is chosen but figured it would probably end up being a separate package in TW.

The key point was that if the Factory maintainers are not even aware of the NEW module it would never get into Factory and TW.
Comment 18 Joe S 2023-09-06 13:56:44 UTC
(In reply to Daike Yu from comment #16)
> (In reply to Yifan Jiang from comment #15)
> > @Jason, @Felix, @Daike, what do you think the comment#13 and comment#14,
> > would anyone(s) of you could help on maintaining the package in a regular
> > base?
> 
> I don't mind help maintaining the package. It can be considering part of
> xrdp (although not part of xrdp source tree) after all.

Yes, that is the point I've been trying to make.  Sorry if I have not be clear.

The modules entire purpose is to restore sound to xrdp sessions when pipewire is being used ( which distros seem to all be switching too )

> (In reply to Joe S from comment #13)
> > If not please help me to understand WHO I need to notify so that when xrdp
> > upstream pulls are done, they also pull this NEW package.

> (In reply to Daike Yu from comment #16) 
> I agree it would be a logical choice, but I don't think I quite get your
> point here, can you please elaborate?

My point was to request that the xrdp package maintainers now include this new package when they are updating xrdp.
 
> AFAIU the package should be submitted to X11:RemoteDesktop (done), and from
> there then submitted to openSUSE:Factory (in progress), which will make it
> available for TW users; after that I (and maybe others) would take over the
> duty of maintaining the package. So to me things looks well in progress, and
> I'm not sure what we've missed.

Sorry, then I must be looking in the wrong place.

When I look here:

   https://build.opensuse.org/request/show/1105159#request-history

I see that it was submitted to X11:RemoteDesktop and that yfjiang accepted the request 8 days ago.

I mistakenly took that "accepted" to mean accepted for Factory but yfjiang replied that now it needs to be submitted to Factory, however, it seems to be stuck waiting for that submit to occur.

We've had 3 TW snapshots since it was accepted which is why I say that it seems to be stuck as the Factory submit has not occurred.

Where should I be looking to see that Factory submit is in progress ?

Thank you for your efforts!
Comment 19 Jason Craig 2023-09-06 15:58:07 UTC
If it is still worth anything I don't mind helping to maintain the package moving forward.
Comment 20 Joe S 2023-09-06 16:32:27 UTC
(In reply to Jason Craig from comment #19)
> If it is still worth anything I don't mind helping to maintain the package
> moving forward.

That would be MOST appreciated!

It seems that all that needs done right now is to have it submitted and accepted to Factory.
Comment 21 Jason Craig 2023-09-06 23:57:52 UTC
(In reply to Joe S from comment #20)
> It seems that all that needs done right now is to have it submitted and
> accepted to Factory.

It is submitted, last I saw it was in staging. Sorry about the couple days it took though, I kept forgetting to submit it to Factory!
Comment 22 Yifan Jiang 2023-09-07 00:45:52 UTC
> Where should I be looking to see that Factory submit is in progress ?

The Factory request Jason submitted is here:

https://build.opensuse.org/request/show/1108961
Comment 23 Yifan Jiang 2023-09-07 00:54:12 UTC
(In reply to Jason Craig from comment #19)
> If it is still worth anything I don't mind helping to maintain the package
> moving forward.

(In reply to Daike Yu from comment #16)
> I don't mind help maintaining the package. It can be considering part of
> xrdp (although not part of xrdp source tree) after all.

Hi Jason, Daike, thank you for helping out! I have put your name as maintainers in the package, please check "osc maintainer X11:RemoteDesktop pipewire-module-xrdp" for more details.
Comment 24 Joe S 2023-09-08 19:23:28 UTC
Thanks all.

Looks like it missed the 20230906 and 20230907 ( soon to be published I assume ) releases and the current status shows there is an outstanding review reminder which needs to be accepted so that it can make it into the next build.

   https://build.opensuse.org/request/show/1108961
Comment 25 Joe S 2023-09-10 16:20:20 UTC
(In reply to Joe S from comment #24)
> Thanks all.
> 
> Looks like it missed the 20230906 and 20230907 ( soon to be published I
> assume ) releases and the current status shows there is an outstanding
> review reminder which needs to be accepted so that it can make it into the
> next build.
> 
>    https://build.opensuse.org/request/show/1108961

Ok, looks like Jason was able to accept it ( THANKS ! ) and it should now appear in 20230910 assuming that is published.
Comment 26 Joe S 2023-09-13 13:22:42 UTC
(In reply to Joe S from comment #25)
> Ok, looks like Jason was able to accept it ( THANKS ! ) and it should now
> appear in 20230910 assuming that is published.

I have updated to 20230910 and everything is working well.   THANKS!

One suggestion, consider making the xrdp package either require or at least recommend the pipewire-module-xrdp package.

Since TW has switched from pulseaudio to pipewire, users that install xrdp are going to want pipewire-module-xrdp too so that they have sound.