Wednesday, April 8, 2015

Install Remmina-Next in Ubuntu ARM V7 – RaspberryPi2

Now RaspberryPi2 support Ubuntu14.04 as I mentioned in this article. Its now posses Broadcom Quad core processor which is of ARM V7 architecture. So we can make RaspberryPi2 as a perfect Thinclient, by installing ‘Remmina’ (RDP Client).

But Ubuntu14.04 contains an old version of Remmina (1.0), which having many serious bugs like no clear-type support, no mouse icon theme support with RDP session e.t.c. This make it virtually unusable as a professional RDP client.

Luckily these issues have been fixed in the latest version of Remmina (Remmina-Next, Versions 1.1 and 1.2+). These versions can be installed from the Remmina-Next PPA. This has been explained in this article. But the PPA is only available for ‘X86’ and ‘X86-X64’ architectures only. Unfortunately no build available for ARMV7 architecture.

The only options is, to manually build the ‘Remmina-Next’ from the source for ARMV7 under RaspberryPi2. This has been explained below.

Note: These steps are based on this article, which used to build remmina under X86 or X64 systems. We’re making some tweaks to build it on ARM V7.

1. Install Build essentials for Ubuntu

sudo apt-get install build-essential


2. Install packages required to build Remmina and FreeRDP

sudo apt-get install git-core cmake libssl-dev libx11-dev libxext-dev libxinerama-dev \
libxcursor-dev libxdamage-dev libxv-dev libxkbfile-dev libasound2-dev libcups2-dev libxml2 libxml2-dev \
libxrandr-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libxi-dev libavutil-dev \
libavcodec-dev libxtst-dev libgtk-3-dev libgcrypt11-dev libssh-dev libpulse-dev \
libvte-2.90-dev libxkbfile-dev libfreerdp-dev libtelepathy-glib-dev libjpeg-dev \
libgnutls-dev libgnome-keyring-dev libavahi-ui-gtk3-dev libvncserver-dev \
libappindicator3-dev intltool


3. Remove and purge, old FreeRDP and Remmina packages if any

sudo apt-get --purge remove freerdp-x11 remmina

sudo apt-get autoclean

sudo apt-get autoremove

sudo apt-get clean



4. Create a build directory for Remmina, in your HOME folder

mkdir ~/remmina_next
cd ~/remmina_next


5. Get latest ‘FreeRDP’ source from GIT

git clone https://github.com/FreeRDP/FreeRDP.git
cd FreeRDP


6. Configure ‘FreeRDP’ for compilation under ARM V7 (RaspberryPi2 running Ubuntu)



Note: Please note the switch specifically for ARM V7. i.e -DARM_FP_ABI=hard -DWITH_NEON=OFF -DTARGET_ARCH=ARM

sudo cmake -DARM_FP_ABI=hard -DWITH_NEON=OFF -DTARGET_ARCH=ARM -DCMAKE_BUILD_TYPE=Debug --DWITH_CUPS=on -DWITH_WAYLAND=off -DWITH_PULSE=on -DCMAKE_INSTALL_PREFIX:PATH=/opt/remmina_next/FreeRDP .


Above line will make FreeRDP install in /opt/remmina_next/FreeRDP



7. Compile and install FreeRDP

make && sudo make install


8. Make your system dynamic loader aware of the new libraries you installed. For Ubuntu ARM V7:



TODO: Need to verify the path!

echo /opt/remmina_next/FreeRDP/lib/arm-linux-gnueabihf/ | sudo tee /etc/ld.so.conf.d/freerdp_devel.conf > /dev/null
sudo ldconfig


9. Link FreeRDP in /usr/local/bin

sudo ln -s /opt/remmina_next/FreeRDP/bin/xfreerdp /usr/local/bin/


10. Get latest ‘Remmina-Next’ source from GIT, to your Remmina build folder

cd ~/remmina_next
git clone https://github.com/FreeRDP/Remmina.git -b next


11. Configure remmina for compilation

cd Remmina
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=/opt/remmina_next/remmina -DCMAKE_PREFIX_PATH=/opt/remmina_next/FreeRDP --build=build .


12. Compile remmina and install

make && sudo make install


13. Link Remmina to /usr/local/bin

sudo ln -s /opt/remmina_next/remmina/bin/remmina /usr/local/bin/


14. Run remmina from command line

remmina


Note: In this approach the icons and launcher files are not installed. Someone can give pointers on that in the comment section. So you’ve to run Remmina from command line, or the ICON in the taskbar (Enable Run on Startup option in remmina main windows, so that the icon will be available on the task bar on system startup)



image



 



2 comments:

  1. Why are you building as a DEBUG??

    ReplyDelete
  2. You can omit the Debug switch, as I've enabled it for an experiment purpose.

    ReplyDelete