RDP red color issue with Windows 10 ARM64 mstsc (Surface Pro X)

Marc-André Moreau 86 Reputation points
2020-08-26T18:48:57.263+00:00

I have been using mstsc (ARM64 native! thank you for that) on my Surface Pro X to RDP into a Windows 10 virtual machine. Both sides are using Windows 10 2004 with the latest updates, but this issue has always been present.

There appears to be an ARM64-specific color decoding issue in the RDP engine used by mstsc that affects red specifically. It is particularly bad when either PowerShell or the command prompt shows red text over a blue or black background, making it impossible to read in many cases.

Here is a screenshot show the problem on the RDP client side:

20654-mstsc-arm64-red-color-issue-corrupted.png

And here is a screenshot taken directly on the server using the snipping tool, to bypass the corruption introduced by RDP:

20607-mstsc-arm64-red-color-issue-original.png

Now due to my past work in FreeRDP implementing many of the RDP codecs, I have a few theories as to what could be happening here. First, the issue appears to be made particularly bad around limit values (full red, full blue, full black). The same cannot be observed with the intel 64-bit version of mstsc, so it most likely has to be a difference in one of the ARM64 SIMD accelerated functions dealing with one of the codecs or color conversion as opposed to their intel equivalent.

I know the first thing you will want to figure out is which codec is actually negotiated and used to draw the corrupted region of the screen. I would like a bit of help with that, as I don't really know what the best way would be to confirm the actual codec in use with modern mstsc. I suspect this is negotiating usage of the RDP8 graphics pipeline, which then uses a mixture of other codecs (RemoteFX, ClearCodec, NSCodec, etc.). One of these codecs is responsible for these pixels, and this is where we should look first.

I have tried using the Android ARM64 remote desktop application and it also doesn't show the same problem. I know that mstsc doesn't use the same internal engine as the mobile applications, so this is most likely a bug limited to just the ARM64 version of mstsc.

Remote Desktop
Remote Desktop
A Microsoft app that connects remotely to computers and to virtual apps and desktops.
4,360 questions
{count} votes

6 answers

Sort by: Most helpful
  1. Zhen Li 1 Reputation point
    2022-06-13T13:02:19.96+00:00

    We had the same issue and I found that we were both hosting Windows 10 in virtual machine!
    So I guess the issue is caused by H.264/AVC encoding with virtual graphics card which provided by virtual machine platform.
    Then I tried to passthrough a physical graphics card to replace virtual graphics card(VNC) in VM setting, and finally I got normal red color in RDP with H.264/AVC enabled.
    Or if you connect remote desktop via high speed network(100Mbps or above), you can enable "Configure image quality for RemoteFX adaptive Graphics" and set image quality to "lossless".

    0 comments No comments