BlueOS feedback - Build firmware with waf for the navigator flight controller

Version: tags/1.0.1-0-gbc26236Build: 4/6/2022, 3:04:28 PM

I’m building an underwater drone that steers like a plane.
So therefore I’m trying to make a firmware build, combining the safety features of the SUB, with the steering of the plane, firmware.

So my problem is, that when building the standard firmware for a SUB, with waf, from ardupilot GIT repository, and flash it to the navigator board, then I lose the heartbeat.

What is the name for the BlueRobotic navigator bord, when building firmware with waf?

Any help would be greatly apreciated.

Hi @BjornAU, welcome to the forum :slight_smile:

Sounds like an interesting project :slight_smile:
I suppose it’s somewhat related to our broader goal of advanced control options for ArduSub - I’m interested to know how you go!

The way I did it was;
ran: ./waf configure --board navigator
ran: ./waf sub

I took the ardusub build from build/navigator/bin/ and uploaded it to the navigator board thru the BlueOS web interface.

I restarted the board and rebooted the RPi. when it was booted up the heartbeat was lost, and I couldn’t get connection to QGroundControle

The repository I used is a clone of the GitHub - ArduPilot/ardupilot: ArduPlane, ArduCopter, ArduRover, ArduSub source repository, should I use another repository?
Or is there other things I should do differently?

@BjornAU double check your gcc version, I recommend 9.2.1.

Newer ones cause glibc issues in the Pi.

1 Like

I need a little more help.
I’m trying to control a towed underwater glider, that I’m developing and building for Claus Melvad at Aarhus University.

I have tried installing the firmware from the menu in BlueOS, with this firmware, I have a heartbeat in BlueOS and a connection to QGC_9.2.1.

Then because I’m building an underwater glider, I wanted to build the Sub firmware with waf as a test.
for this my procedure was;

  • Clone of the GitHub-Ardupilot repository, to make my own branch, and cloned the branch to a folder in Windows Subsystem for Linux (WSL).
  • In the Ubuntu terminal I ran ./waf clean to start in the clean.
  • Ran ./waf configure --board navigator
  • Ran ./waf sub
  • Then I uploaded the file ardusub, from the path \\wsl$\Ubuntu-22.04\home\pix\ardupilot\build\navigator\bin thru BlueOS Upload custom firmware

And then i loos the HeartBeat in BlueOS og forbindelsen til QGC_9.2.1.

I have the result from the terminal but I cant upload it, as I’m new to the forum

  1. Where did I go wrong?
  2. In the end I need firmware for a vehicle that acts like an underwater plane, with the sub failsafes. would it then be easier to implement failsafes from a sub on a plane or the other way around?
  3. Is there a main build file with what to include, in the respective vehicle firmware?

Now I understand what you ment.
I got it working using the info from another topic about the same problem:


Hey, I’ve got the same error than you and I tried this command and it failed. Can you tell what I did wrong ?

You need to download the toolchain from here:

Then unzip it somewhere ( I chose /opt) and point --toolchain= there

1 Like

Okey, well the link to download is not working, I did’nt find it in an other website. Any advice ? Thank you very much for your help !!

Hi @AlexandreLarribau, welcome to the forum :slight_smile:

I’ve just gone to the link @williangalvani provided. The big general “download” button doesn’t seem to be working, but it worked fine for me to scroll down to the individual links and download the relevant one. In this case you’re after


1 Like

Well this time it does’nt compile.

Here’s what I have done :

I downloaded gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz under windows

unziped it and copied the gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar on my wsl in home.

I am probably doing this the wrong way but I don’t know why. I tried to add this to my path by doing :

$ export PATH=~/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf:$PATH

Then I went back to the " Setting up the Build Environment" page and tried to follow it again with gcc-arm-none-eabi-6-2017-q2-update-linux from ArduPilot firmware : /Tools/STM32-tools (because it was the closest version from 2019 which you advised me. I put it in /opt and unziped it with :
$ sudo tar -xjvf gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2

I modified my .bashrc and added the line export PATH=/opt/gcc-arm-none-eabi-6-2017-q2-update-linux/bin at the end of it.

But when I run :

Do you have any advices ?

Thank you for the quick answer !

Did you UnZip it in windows or thru WLS?
That might cause a problem.
Also I cant remember but I thin I ended up putting it in the ardupilot/opt
for it to work.

Hey !

Yes this was my mistake and this morning I decided to start from scratch.

So I’ve redownloaded ubuntu, cloned the repo, launched the “” and at this point I deleted the folder “gcc-arm-none-eabi-10-2020-q4-major-aarch64-linux” that was in /opt and I copied the file “gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz”. I did the

tar -xJf gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz -C /opt

thing and then I did
echo export ‘PATH=/opt/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/bin:$PATH’

Finaly I was able to configure my board as navigator and lanch sub (adding the wonderfull --toolchain=… and this time everything seems okay.

I want to thank you all for your help !


Hi guys,

I am having the same problem. I am downloading the file

Added the /opt to ardupilot. unzipped with tar and it created the right folders.

I looked for the file arm-none-linux-gnueabihf from this command: ./waf configure --board=Navigator --toolchain=/opt/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf

There is a folder called /opt/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/bin/ with files inside it but arm-none-linux-gnueabihf is not one of them.

Its located in opt/bin

I tried to run ./waf configure --board=Navigator --toolchain=/opt/bin/arm-none-linux-gnueabihf but that still doesn’t work.

I tried to add echo export ‘PATH=/opt/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/bin:$PATH’ but it doesn’t do anything.

Any suggestions would be appreciated.


Weirdly enough, I believe that is the correct behavior:

I still get this though:


can you share the full output and command line?

will do tomorrow when I am back in the office

1 Like