[[PageOutline]] = Setup your computer = == Fl-AIR directory == It is advised to put all Fl-AIR related stuffs in the same directory, for example $HOME/flair: {{{ $ mkdir $HOME/flair }}} Then add an environment variable to your .bashrc with the path of this directory: {{{ $ nano ~/.bashrc }}} and add {{{ #!sh # variable for Fl-AIR export FLAIR_ROOT=$HOME/flair }}} reload the script {{{ $ source ~/.bashrc }}} All Fl-AIR documentation, scripts and CMakeLists.txt will use this variable. == Install packages == Install g++ to compile simulator: (flair does not use the toolchain for simulator to avoid problem with opengl) {{{ sudo apt install g++ }}} Install glxinfo needed to detect your graphic driver (for simulator): {{{ sudo apt install mesa-utils libgl1-mesa-dev }}} Install an optional IDE (''Integrated Development Environment''), for example: * !CodeLite (all Fl-AIR documentation is based on it): * Download the version corresponding to your OS : https://downloads.codelite.org/ * If the downloaded file is .deb, run: {{{ sudo opkg install filename.deb }}} * or eclipse: {{{ sudo apt-get install eclipse-cdt }}} * or codeblocks (depreciated because of cmake and code completion problems, see next section if you want to use !CodeBlocks): {{{ sudo apt-get install codeblocks codeblocks-contrib }}} == Codeblocks == === if Codeblocks is slow or crashes === It seems that auto completion plugin of Codeblocks (version 12.11 and up) does not work very well with a cmake generated project. One solution is to deactivate this plugin, another solution is to install an older version of Codeblocks (10.05), from [http://sourceforge.net/projects/codeblocks/files/Binaries/10.05/ this page]. For example on a 64 bits computer: {{{ $ cd $ wget http://sourceforge.net/projects/codeblocks/files/Binaries/10.05/Linux%20%2864%20bit%29/codeblocks-10.05-1-debian-amd64.tar.bz2 $ tar -xjf codeblocks-10.05-1-debian-amd64.tar.bz2 $ cd amd64 $ sudo dpkg -i *.deb $ cd .. $ rm -rf amd64 codeblocks-10.05-1-debian-amd64.tar.bz2 }}} === environment variables=== When Codeblocks is not launched from command line, it does not read environment variables set in .bashrc. This can make trouble when a CMakelists.txt is modified for example. To solve this, go to ''settings/environment'' menu. Choose ''environment variables'' section on the left. Clic on ''Add'' and fill the form: * key: FLAIR_ROOT * value: path to the FLAIR_ROOT directory == Use rtprio == In order to use FL-AIR without Xenoami, but with high priorities, you need to be root or to allow your user using the following file: {{{ $ sudo nano /etc/security/limits.conf }}} And add these lines: {{{ your_user soft rtprio 99 your_user hard rtprio 99 }}} where ''your_user'' is your user login. Then logout and login. == Setup bluetooth for DualShock3 controller (optional) == Using bluetooth for the ds3 is not conventional. Thus, you need a small modification in the linux's bleutooth service. You just have to do it once. === On newer distros (ubuntu >=16.4 or mint>=18) === {{{ $ sudo nano /etc/systemd/system/bluetooth.target.wants/bluetooth.service }}} And modify the ''!ExecStart'' value: {{{ ExecStart=/usr/lib/bluetooth/bluetoothd --noplugin=input }}} Then restart the dameon bluetoothd: {{{ $ sudo systemctl daemon-reload $ sudo service bluetooth restart }}} === On older distros === {{{ $ sudo nano /etc/bluetooth/main.conf }}} and add a line to !DisablePlugins: {{{ [General] # List of plugins that should not be loaded on bluetoothd startup DisablePlugins = network,input }}} Then restart bluetoothd: {{{ $ sudo service bluetooth restart }}} == Configure SSH hosts (optional) == Alias can be defined in the ''~/.ssh/config'' file: {{{ $ mkdir -p ~/.ssh $ nano ~/.ssh/config }}} and add a line for each target {{{ Host uav1 HostName 192.168.147.63 User root StrictHostKeyChecking no UserKnownHostsFile=/dev/null }}} change the name (uav1 in this example) and its address (192.168.147.63 in this example). __NB__: the 2 last lines are optional, but it will help if you connect to 2 different targets with same IP. Yet, you will be exposed to the man in the middle attack (see [http://en.wikipedia.org/wiki/Man-in-the-middle_attack this page]), which should not be a big deal in our case (target as no root password...). Using this alias you can connect to the target that way: {{{ $ ssh uav1 }}} which is equivalent to {{{ $ ssh root@192.168.147.63 }}} moreover, the command {{{ $ scp toto uav1: }}} is equivalent to {{{ $ scp toto root@192.168.147.63: }}}