Pixhawk Cube not responding after firmware upgrade

Hi all,

I have a problem concerning the Pixhawk Cube.
I set up Ubuntu on Virtual Box, downloaded the latest source code and compilated/uploaded it by means of waf.
This worked fine but after that the Pixhawk is not responding.
Normally when plugging in USB the Pixhawk connects, disconnects after some time and connects again and then it was available to connect e.g. to Mission Planner.
But now after the first disconnect it does not connect again.

So i think the new compiled and uploaded firmware is corrupted.

I saw that the OS changed from NuttX to ChibiOS, could that cause a problem?
Also waf is used instead of make to compile…
Previously I uploaded my Firmware with make on windows and NuttX which worked fine, but does not seem to be supported any more…

What can cause this problem and how can I solve it?

Thank you for answers in advance!

Hello,

Normally you should still be able to flash the board from mission planner. Just don’t launch your VM to unsure that you don’t get usb port conflict.

Secondly, what instructions did you follow to setup you build on Ubuntu? Are you using the toolchain install with the install-prereq-ubuntu.sh or Ubuntu default arm-none-eabi toolchain (that you get with apt install)? The second one doesn’t work…

Thank you for your answer!

You are right, fortunatelly I was able to flash a Firmware with the Mission Planner. But I am not able to connect Mission Planner with the Pixhawk beside flashing…

Because I wrote a manual for myself this is exactly what I did:

  • set up a VirtualBox with Ubuntu, update and upgrade system and install git.
  • run the following commands:
    sudo su
    cd /home/username/Documents/
    git clone GitHub - ArduPilot/ardupilot: ArduPlane, ArduCopter, ArduRover, ArduSub source
    cd ardupilot
    git submodule update --init --recursive
  • run the config script with the following command: “Tools/scripts/install-prereqs-ubuntu.sh -y”
  • reload path with the following command: “. ~/.profile”
  • at the end run “apt-get install gcc-arm-none-eabi”
  • change owner of source code: “chown -R username:username /home/username/Documents/ardupilot”
  • set board type with the following command: “/ardupilot/waf configure --board CubeBlack” (Pixhawk2/Cube in this case)
  • compile the code with the following command: “/ardupilot/waf plane” (plane platform in this case)
  • upload firmware with the following command: “/ardupilot/waf --targets bin/arduplane --upload”

Did I miss a step or was something wrong for my setup?

EDIT:
I deleted my source files and did the steps above again and uploaded the newly compiled firmware with Mission Planner.
After restarting the programm and a few plug and unplug tries now Mission Planner can connect to the Cube.
Is there a problem uploading via “waf --targets bin/arduplane --upload”?

  • at the end run “apt-get install gcc-arm-none-eabi”

You should’nt do this step… As generally this toolchain doesn’t work…

Another point could be a bootloader update that need you to press to safety button, if you have a buzzer connected is should make a weird music.

What Ubuntu version are you using?

So there is no other solution than manually upload with Mission Planner?
(Because with a console command I could do uploading via Eclipse)

At the moment I don’t have any hardware connected to the Pixhawk.

I am using Ubuntu 18.04.1 (latest)

EDIT:
If I have to use the Mission Planner to upload firmware, I will use this solution:
http://ardupilot.org/dev/docs/building-setup-windows10.html#building-setup-windows10
So sadly I have to use Eclipse, Ubuntu console on Windows and Mission Planner for every upload but that seems to be more performant…

Waf upload should be working. I didn’t try from a VM but is should. Just build we the toolchain we provide not the Ubuntu one…

Ok, good to know, how do I set the AP specific toolchain?

from the Ardupilot root dir

./Tools/scripts/uploader.py

> usage: uploader.py [-h] [--port PORT] [--baud-bootloader BAUD_BOOTLOADER]
>                    [--baud-bootloader-flash BAUD_BOOTLOADER_FLASH]
>                    [--baud-flightstack BAUD_FLIGHTSTACK] [--force]
>                    [--boot-delay BOOT_DELAY]
>                    firmware

Ok, thank you, that seems to be usable!