[GH-ISSUE #239] Integrate FreeRDP #3091

Closed
opened 2026-03-13 01:40:36 +03:00 by kerem · 11 comments
Owner

Originally created by @dethknite on GitHub (May 16, 2022).
Original GitHub issue: https://github.com/1Remote/1Remote/issues/239

Originally assigned to: @VShawn on GitHub.

I would highly recommend integrating wfreerdp instead of the deprecated activex rdp and mstscax. wfreerdp is up-to-date with security negotiation and has much more interoperability with RDP servers. There is even a recent nuget package that wraps up pretty much everything for consuming it.

https://www.nuget.org/packages/RoyalApps.Community.FreeRdp.WinForms/1.0.0#show-readme-container

I might try to port it into a fork.. but wpf is not really my strong suit... so we will see how far I get.

Originally created by @dethknite on GitHub (May 16, 2022). Original GitHub issue: https://github.com/1Remote/1Remote/issues/239 Originally assigned to: @VShawn on GitHub. I would highly recommend integrating wfreerdp instead of the deprecated activex rdp and mstscax. wfreerdp is up-to-date with security negotiation and has much more interoperability with RDP servers. There is even a recent nuget package that wraps up pretty much everything for consuming it. https://www.nuget.org/packages/RoyalApps.Community.FreeRdp.WinForms/1.0.0#show-readme-container I might try to port it into a fork.. but wpf is not really my strong suit... so we will see how far I get.
Author
Owner

@majkinetor commented on GitHub (May 16, 2022):

Looks like huge benefit is that this is cross platform so it could be used on Linux too (eventually, now probably not that hard since PRM is recently ported to dotnet6).

<!-- gh-comment-id:1128171131 --> @majkinetor commented on GitHub (May 16, 2022): Looks like huge benefit is that this is cross platform so it could be used on Linux too (eventually, now probably not that hard since PRM is recently ported to dotnet6).
Author
Owner

@majkinetor commented on GitHub (May 16, 2022):

I tested this up and it could be used now if you set up the protocol. You have to do it via VNC protocol in Options:

image

image

Set it as default VNC:
image

Now create VNC connection. It works. Maybe a bit awkward, but hey, you have what you wanted in 5 minutes.

You cant really set all options but that is precisely why I suggested CLI-2-GUI mapping before (#61, also related #205 ).

Audio redirection with with /audio-mode:0 also works.

Here are the params: https://github.com/awakecoding/FreeRDP-Manuals/blob/master/User/FreeRDP-User-Manual.markdown

<!-- gh-comment-id:1128184929 --> @majkinetor commented on GitHub (May 16, 2022): I tested this up and it could be used now if you set up the protocol. You have to do it via VNC protocol in Options: ![image](https://user-images.githubusercontent.com/85767/168690488-824fd753-9160-483d-95d5-c54cb6b0d07f.png) ![image](https://user-images.githubusercontent.com/85767/168690147-5be60d5b-8c66-4a15-abc0-ed662aee6bcd.png) Set it as default VNC: ![image](https://user-images.githubusercontent.com/85767/168690426-969e7939-e8b5-4f15-8b67-c17ca6599e34.png) Now create VNC connection. It works. Maybe a bit awkward, but hey, you have what you wanted in 5 minutes. You cant really set all options but that is precisely why I suggested CLI-2-GUI mapping before ([#61](https://github.com/OneRemote/PRemoteM/issues/61#issuecomment-760897667), also related #205 ). Audio redirection with with `/audio-mode:0` also works. Here are the params: https://github.com/awakecoding/FreeRDP-Manuals/blob/master/User/FreeRDP-User-Manual.markdown
Author
Owner

@dethknite commented on GitHub (May 16, 2022):

Never thought of that.. great idea. Thanks for sharing 👍🏻

<!-- gh-comment-id:1128199661 --> @dethknite commented on GitHub (May 16, 2022): Never thought of that.. great idea. Thanks for sharing 👍🏻
Author
Owner

@dethknite commented on GitHub (May 16, 2022):

Yeah.. wfreerdp is what I ended up porting my project to because the mstscax stuff just got so buggy from lagging behind. It has great support out of the box, including drive mapping xfreerdp /v:rdp.contoso.com /drives, and the cross platform is definitely a perk.

I actually was also looking for the ability to utilize dynamic virtual channels as well... and it supports virtual channel addins.. though it is still a bit in flight for some of the advanced stuff.

<!-- gh-comment-id:1128205209 --> @dethknite commented on GitHub (May 16, 2022): Yeah.. wfreerdp is what I ended up porting my project to because the mstscax stuff just got so buggy from lagging behind. It has great support out of the box, including drive mapping xfreerdp /v:rdp.contoso.com /drives, and the cross platform is definitely a perk. I actually was also looking for the ability to utilize dynamic virtual channels as well... and it supports virtual channel addins.. though it is still a bit in flight for some of the advanced stuff.
Author
Owner

@VShawn commented on GitHub (May 17, 2022):

You are right, mstscax is old and lack of doc.

I have some doubts for wfreerdp:

  • can wfreerdp support multi-screen? (this is my main motivity of this repository, I see the param /multimon Multi-monitor)
  • can it support resize rdp window on fly?
  • can it support HiDPI, and multi-screen with different Dpi?
<!-- gh-comment-id:1128270939 --> @VShawn commented on GitHub (May 17, 2022): You are right, mstscax is old and lack of doc. I have some doubts for wfreerdp: - ~can wfreerdp support multi-screen?~ (this is my main motivity of this repository, I see the param `/multimon Multi-monitor`) - can it support resize rdp window on fly? - can it support HiDPI, and multi-screen with different Dpi?
Author
Owner

@dethknite commented on GitHub (May 17, 2022):

Yes and yes.. I use it as a replacement for rdp on non Win OS's. It really depends on how you want to utilize it, and what you wish to do with it.

:Full screen example
/v:{host} /port:{port} /u:{user} /d:{domain} /p:{pass} /f /bpp:32 /cert-ignore /workarea +clipboard

:Dynamic Resolution
/v:{host} /port:{port} /u:{user} /d:{domain} /p:{pass} /dynamic-resolution /bpp:32 /cert-ignore /workarea +clipboard

:HiDPI and DPI scaling
/v:{host} /port:{port} /u:{user} /d:{domain} /p:{pass} /w:1280 /h:920 /smart-sizing /bpp:32 /cert-ignore /workarea +clipboard

:Retina display
/v:{host} /port:{port} /u:{user} /d:{domain} /p:{pass} /scale:180 /scale-desktop:200 /bpp:32 /cert-ignore /workarea +clipboard

Etc.. etc.. you get the picture

<!-- gh-comment-id:1128379321 --> @dethknite commented on GitHub (May 17, 2022): Yes and yes.. I use it as a replacement for rdp on non Win OS's. It really depends on how you want to utilize it, and what you wish to do with it. :Full screen example `/v:{host} /port:{port} /u:{user} /d:{domain} /p:{pass} /f /bpp:32 /cert-ignore /workarea +clipboard` :Dynamic Resolution `/v:{host} /port:{port} /u:{user} /d:{domain} /p:{pass} /dynamic-resolution /bpp:32 /cert-ignore /workarea +clipboard` :HiDPI and DPI scaling `/v:{host} /port:{port} /u:{user} /d:{domain} /p:{pass} /w:1280 /h:920 /smart-sizing /bpp:32 /cert-ignore /workarea +clipboard` :Retina display `/v:{host} /port:{port} /u:{user} /d:{domain} /p:{pass} /scale:180 /scale-desktop:200 /bpp:32 /cert-ignore /workarea +clipboard` Etc.. etc.. you get the picture
Author
Owner

@majkinetor commented on GitHub (May 17, 2022):

Thanks @dethknite for your input, very valuable.

I tested an hour yesterday and it doesn't seem to be any worst then RDP, with identical settings I couldn't spot the difference.

<!-- gh-comment-id:1128640128 --> @majkinetor commented on GitHub (May 17, 2022): Thanks @dethknite for your input, very valuable. I tested an hour yesterday and it doesn't seem to be any worst then RDP, with identical settings I couldn't spot the difference.
Author
Owner

@majkinetor commented on GitHub (Jul 13, 2022):

I think this should be closed and work should be done in #255. Its better to use externally. I will create chocolatey package for freerdp so it can be installed along with PRemoteM (cinst prememtem freerdp).

Having external tools outside is better as they can be easily updated on its own and they don't burden the PRemoteM with size and maintenance. On the negative side, you can pin specific version if non compatible changes appear (this is however also possible to do outside and can be documented).

<!-- gh-comment-id:1182849162 --> @majkinetor commented on GitHub (Jul 13, 2022): I think this should be closed and work should be done in #255. Its better to use externally. I will create chocolatey package for freerdp so it can be installed along with PRemoteM (cinst prememtem freerdp). Having external tools outside is better as they can be easily updated on its own and they don't burden the PRemoteM with size and maintenance. On the negative side, you can pin specific version if non compatible changes appear (this is however also possible to do outside and can be documented).
Author
Owner

@VShawn commented on GitHub (Jul 16, 2022):

Having external tools outside is better as they can be easily updated on its own and they don't burden the PRemoteM with size and maintenance.

I wonder if we can make a new PRemoteM app that work with external tools only.

The tab windows and internal runners will be removed. The new app will act as a session password manager and the launcher of KiTTY \ FreeRDP \ MSTSC \ WinSCP \ TightVNC.


I would highly recommend integrating wfreerdp instead of the deprecated activex rdp and mstscax

BTW, I tested the FreeRDP control, this wraper does not achieve all the functionality of FreeRdp.

<!-- gh-comment-id:1186104474 --> @VShawn commented on GitHub (Jul 16, 2022): > Having external tools outside is better as they can be easily updated on its own and they don't burden the PRemoteM with size and maintenance. I wonder if we can make a new PRemoteM app that work with external tools only. The tab windows and internal runners will be removed. The new app will act as a session password manager and the launcher of KiTTY \ FreeRDP \ MSTSC \ WinSCP \ TightVNC. --- > I would highly recommend integrating wfreerdp instead of the deprecated activex rdp and mstscax BTW, I tested the [FreeRDP control](https://www.nuget.org/packages/RoyalApps.Community.FreeRdp.WinForms/1.0.0#show-readme-container), this wraper does not achieve all the functionality of FreeRdp.
Author
Owner

@majkinetor commented on GitHub (Jul 16, 2022):

Lets talk about that in new ticket that I will open soon. Or better, lets enable discussions here.

<!-- gh-comment-id:1186147272 --> @majkinetor commented on GitHub (Jul 16, 2022): Lets talk about that in new ticket that I will open soon. Or better, lets enable discussions here.
Author
Owner

@VShawn commented on GitHub (Jul 17, 2022):

lets enable discussions here.

sure

<!-- gh-comment-id:1186357661 --> @VShawn commented on GitHub (Jul 17, 2022): > lets enable discussions here. sure
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/1Remote#3091
No description provided.