Cross-compiling FreeRDP Windows Remote Desktop Client for ARM Linux (in Debian/Ubuntu)

Last month, I wrote the instructions to Cross-compile VMWare View for ARM Linux as I intended to “run” Windows 8 in an ARM client (most likely the Raspberry Pi) via PCoIP. However, the procedure to do so seems slightly complicated and requires to purchase a specific VMWare server software (VMware vSphere 5) or download a free trial.

The good news is that there are other options such as VNC or RDP (Remote Desktop protocol) and Remmina, a Remote Connection client is available for Linux. As nothing is ever simple, another issue occured: if you are using a stable release of Linux (e.g. Debian Squeeze, Ubuntu 11.10) they come with older version of Remmina and either the connection is successful but the display is garbled (Version 0.7.x) either it crashes when connecting to Windows 8 via RDP (Version 0.8.x). The latest version (Remmina 1.0.0) fixes the problem and is available in Debian sid.

Windows 8 Raspberry Pi
Windows 8 in QEMU (ARM Debian) via RDP (FreeRDP)

Since I just want to connect via RDP, I do no need to cross-compile the full version of Remmina, and I’ll only cross-compile FreeRDP, the RDP implementation used in Remmina.

Here are the steps I followed in Debian Squeeze:

  1. Download FreeRDP 1.01:
  2. Extract it:
  3. Make sure you’ve installed Emdebian ARM toolchain.
  4. Install the required build tools and some development libraries to pass cmake checks:
  5. Install the required armel packages:

    sudo /usr/share/pdebuild-cross/xapt -a armel libssl-dev libx11-dev libxext-dev libxinerama-dev libxcursor-dev libxdamage-dev libxv-dev libxkbfile-dev libasound2-dev libcups2-dev libavutil-dev libavcodec-dev libdirectfb-dev --force-yes

  6. Set the gcc cross-compiler prefix and utils:
  7. Build FreeRDP for ARM:
    cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../freerdp-arm
    make -j 2
    make install

That’s it! You now just have make sure Remote Desktop is enable in your windows machine, copy the content of freerdp-arm directory to /usr directory in the emulator or ARM board and run:

where [email protected] is the email used to login to Windows 8, “-f” is for full screen and window8_ip is the IP address of your Windows 8 “server”. Simply enter your password and you should be able to use Windows 8 remotely.

I’ve tried it using QEMU with the Raspberry Pi Debian image (See screenshot above), it works but it’s rather slow in the emulator. (I’m also running QEMU in a netbook which does not help with performance…

The other issue is that it only allows one RDP client at a time, but since it is apparently possible to connect several RDP clients to Windows 7, there will probably be a way to do so with Windows 8.

Support CNX Software - Donate via PayPal or become a Patron on Patreon
Notify of
1 Comment
newest most voted
7 years ago

this helps a lot for me
i reprint the article to my forum and keep the links as a collection