Home > Linux, Testing, Windows 8 > Cross-compiling FreeRDP Windows Remote Desktop Client for ARM Linux (in Debian/Ubuntu)

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:
    wget https://github.com/downloads/FreeRDP/FreeRDP/freerdp-1.0.1.tar.gz
  2. Extract it:
    tar xzvf freerdp-1.0.1.tar.gz
    cd freerdp-1.0.1/
  3. Make sure you’ve installed Emdebian ARM toolchain.
  4. Install the required build tools and some development libraries to pass cmake checks:
    sudo apt-get install build-essential git-core cmake libxv-dev libxkbfile-dev libasound2-dev libcups2-dev
  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:
    export CROSSTOOL=arm-linux-gnueabi
    export CXX=$CROSSTOOL-g++
    export CC=$CROSSTOOL-gcc
    export AR=$CROSSTOOL-ar
    export AS=$CROSSTOOL-as
    export RANLIB=$CROSSTOOL-ranlib
  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:

xfreerdp -u [email protected] -f windows8_ip

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.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Categories: Linux, Testing, Windows 8 Tags: cross-compilation, debian, freerdp, raspberry pi, remmina, virtualization, windows 8
  1. February 17th, 2013 at 15:48 | #1

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

  1. February 17th, 2013 at 15:42 | #1
  2. February 17th, 2013 at 18:22 | #2