Introduction: Compile JAERO and LibAERO AMBE for Inmarsat Decoding

About: I create videos and tutorials surrounding SDR and Radio Communications as a whole.

JAERO is an amazing piece of software created by Jonti Olds. You can check out his website here:http://jontio.zapto.org/index.html

There are a few reasons I've created this series. AERO Calls require you to compile libAeroAMBEAs of Release v1.0.4.8 when call support was added x32 builds were nolonger being released. I had a need not only for AeroAMBE call support but also x32 bit support for my mobile station's windows 10 tablet. Once I figured out how to get everything working the next step was to show you guys how it's done. Before we can begin to compile anything we need to setup our build environment. To do you you'll need to download a few things. QT CreatorMSYS2 Go ahead and install MSYS2 it's pretty straight forward, however on QT Creator's installation you need to ensure you select mingW64 and mingW32 in order to properly compile everything. Once this is installed you'll want to get MSYS2 setup. Go ahead and open the version you'll be using to compile (64 or 32 bit) then run install the following...

pacman -Syu

Close the application once this command runs then re-open it ensuring you are still on the correct architecture (64 or 32 bit) and run...

pacman -Su

Once this is done we can begin installing packages we need to compile JAERO. Run the following...

pacman -S --needed base-devel msys2-devel pacman -R cmake pacman -S mingw-w64-x86_64-cmake

You'll see above we've uninstalled cmake and installed a mingw version of it. This is important as we'll need that to create our MSYS Makefiles later on for compilation. Now open your explorer and create a new folder called 'development' under the C drive/directory. Inside this development folder you'll want to download the source code for both JAERO and libAeroAMBE, you'll need to unzip the files.

JAERO v1.0.4.8 SourcelibAeroAMBE Master Branch Source Once you have this setup you are ready for the next time, compiling JAERO and it's dependencies

Step 1: Part 2 | Compiling Jaero

If you have not yet setup your development environment place go back to part 1 and do this.
Before we can compile JAERO we first need to compile some of the dependencies of the software. Open your MSYS2 shell being sure to use the same architecture you wish to compile and have been suing thus far in the tutorial. (32 or 64 bit). We need to navigate into your JAERO folder.

cd c: then cd c:/development ls We run the 'ls' command in order to see what files are in the given folder.

Now cd into the JAERO-1.0.4.8 folder and you should have the following after an 'ls' command.

From here you can see several folders within the JAERO directory. There are a few that are very important. libogg-1.3.3libvorbis-1.3.6libcorrect Libcorrect is already compiled and we do not have to worry about this one yet. Libogg however is a dependency of libvorbis meaning that we must compile libogg first.

To get started cd into the libogg-1.3.3 folder and run.. ./configure

Now we can run make and make install to compile the software make make install Once completed it should look like this.

Now that libogg has been compiled we can cd into the previous directory and then cd into libvorbis with the following commands. cd .. cd libvorbis-1.3.6 Once in this folder run the autogen.sh and configure

./autogen.sh ./configure After running autogen it should look like this if it completes successfully.

We can now compile libvorbis with make and make install make make install If everything went fine the compile should have no errors like this...

Congratulations! If you've made it this far we are ready to start up QT Creator and compile JAERO. Within the JAERO-1.0.4.8 folder you'll find a folder called JAERO, within this is JAERO.pro, this is the file we need to open to start QT creator for our project.

Once you open this file you may or may not have an error about a plugin loader, this is not a big deal and we can close this screen.

Now it's time to configure the project. Simply place a check mark ONLY in the x32 or x64 version of MinGW then click Configure Project.

From here we can change our build type to Release and begin compiling by selecting the hammer icon.

I'd also recommend selecting the (4) compiler output so you can see what's going on.

If all goes well you should see the following.

The Issues you see there are normally fine just so long as the compiler exits normally you'll generally be good to go. You can also see above where the compiled binary has been saved. I recommend navigating to that directory (look in the release folder) and copying the JAERO.exe file and putting it somewhere like "C:\development\release" as this will make it easier for us to grab our dependencies needed for the application to run.

Alright we're almost done with JAERO. We now need to copy the .dll dependencies we built and place them into this release folder. Below is the location of the files you'll need to manually copy over.

C:\development\JAERO-1.0.4.8\libcorrect\bin\64\libcorrect.dll (replace 64 with 32 if you're compiling an x32 build)C:\development\JAERO-1.0.4.8\libogg-1.3.3\src\libs\libogg-0.dllC:\development\JAERO-1.0.4.8\libvorbis-1.3.6\lib\.libs\libvorbis-0.dllC:\development\JAERO-1.0.4.8\libvorbis-1.3.6\lib\.libs\libvorbisenc-2.dllC:\development\JAERO-1.0.4.8\libvorbis-1.3.6\lib\.libs\libvorbisfile-3.dllC:\msys64\usr\bin\msys-2.0.dll

Now we need to grab the dependencies for QT, once that is done we should be able to run the JAERO application. To do this open "QT 5.12.0 for Desktop (MinGW 7.3.0 64-bit" or 32 bit depending on your build. Then cd into the bin directory...

cd bin

we can now run windeploy and point it at our jaero release executable. windeployqt.exe c:\development\release\jaero.exe Once complete it will look like this

You will also notice the release directory now has many other files.

If everything is working correctly you can run JAERO

You'll notice however that you'll see the above error message Can't find or load all the libraries necessary for aeroambe. You will not get audio. This means you've successfully compiled JAERO! congrats! It is fully functional however if you want to be able to decode AERO AMBE calls you need to compile libAeroAMBE.

Step 2: Part 3 Compile LibAERO AMBE

If you have not yet set up your build environment please watch / follow the tutorial for part 1. Setting up your build environment
If you also wish to compile an x32 version of JAERO (as there are no x32 binaries of JAERO with AMBE support) You'll also want to watch part 2. Compiling JAERO and it's Dependencies. Now that you're up to speed let's head over to our development directory inside of MSYS2

cd c:/development/libaeroambe-master

Once here you'll see two folders, libaeroambe which is compiled with QT Creator and mbelib-master which we have to compile first with

cmake in MSYS2 cd into mbelib cd mbelib-master

Create a new folder called build and cd into it... mkdir build cd build

We now need to create our makefiles to compile...

cmake -G "MSYS Makefiles" ../

Now run make and make install make make install It should look something like this if it completes without error

Alright fantastic! Now, finally we can compile libaeroambe within QT Creator and get this party started. Move on over to your libaeroambe folder which should be "C:/development/libaeroambe-master/libaeroambe/" Once there open up the libaeroambe.pro file, type QT project file.

As we did last time configure the 32 or 64 version you're working on..

Once you've clicked configure you'll want to change our build type to 'release' and build it by click the hammer button.

There you have it! libAeroAMBE has been compiled. Now just move the following libraries to your JAERO release folder.

C:\development\libaeroambe-master\libaeroambe\release\aeroambe.dllC:\development\libaeroambe-master\mbelib-master\build\libmbe.dll

In our case the JAERO release folder is "C:\development\JAERO\release\"

Alright guys, here we go.. Start up JAERO and you should see it loads without error.

Be sure to check your timestamps, There may be previous errors for libaerambe but so long as those don't appear on the last start you are good to go.