Pixhawk Clones – Selecting ArduPilot Copter Firmware

Backstory

There are different (flight) controllers available that are named “Pixhawk”, but in this article, I want to concentrate on the mostly Chinese “clones”. Although “clone” is the wrong term here, since the whole Pixhawk platform is an open hardware project. So building and selling hardware of this design is perfectly legal (which doesn’t mean everyone is happy about it).

The price differences are quite high, the branded ones are available for about 150,- to 250,- EUR or even more, while the cheap ones are available for about 30-50 EUR on different trading platforms. The more expensive ones seem to include redundant hardware features, faster types of MCUs or more advanced sensor ICs. Some of them seem to be mainly designed for commercial or professional applications.

There is a flight controller software called PX4, which is also an open source project and related to the Pixhawk hardware project. This is not the same as the ArduPilot project though, which also supports all the different Pixhawk hardware versions. ArduPilot also supports many other open and closed hardware platforms, like the Omnibus F4 boards, which nowadays are often used with BetaFlight and its sibling iNav. ArduPilot is considered a very mature and stable software – even, or maybe especially, with the older “APM” hardware (more about that later).

The Pixhawk hardware isn’t limited to multicopters at all, it can be used with planes, helicopters, cars, by selecting one of the different ArduPilot firmware varieties, like “Plane”, “Copter” or “Rover” (there is even on for RC submarines!). It consists of an FMU (flight management unit) and a I/O (input/output) part. The larger MCU runs the FMU, the smaller one the I/O part.

Like the name suggests, the initial platform of ArduPilot was a ATmega-based controller board. This older hardware is still available as “APM” (2.5.0, 2.6.0 or 2.8.0), but considered deprecated now, since newer versions stopped supporting this platform at a certain point in time. “Pixhawk” is also considered the successor of this older “APM” platform. The Pixhawks use STM32 microcontrollers, which provide a lot more processing power and memory. The last “Copter” firmware version supporting the old APM hardware is 3.2.1.

Which firmware to use?

The cheap Pixhawks available today, are based on the Pixhawk 1 design, although some advertised version numbers and names may suggest otherwise.

There was a memory bug in some older versions of the STMF427 MCU which allowed to access only 1 MB instead of the available 2 MB. This bug is/was already considered in the design of “fmuv1” and “fmuv2”, which basically limits the memory usage to 1 MB.
The only difference between fmuv3 and fmuv2 is, that it’s supposed to be used with MCUs without this bug (allowing to access the whole memory). As far as I can tell, all the cheap boards available today, use newer MCUs without this bug (hardware revision 3) and therefore run best with fmuv3.

The ground station software, like Mission Planner or QGroundControl, will, in most cases, choose the correct software for these boards, while upgrading the firmware. Sometimes it will ask additional questions before downloading and flashing, to determine the correct firmware for the connected hardware.

A while ago, I tried to find more information about the logic behind this selection process, the hardware types and which firmware to choose, but didn’t got any answers, yet. Maybe no one really knows – or cares. 😉 It also seems to depend on the bootloader that comes with the board.

In the past, the RTOS (real time operating system) used by ArduPilot for the Pixhawk platform was NuttX, which included the possibility to access a CLI (command line interface) called NSH — or Nutshell. But at some point in time, the developers of ArduPilot decided to switch to ChibiOS, because it turned out to be faster and more efficient. Still, many older howtos and documentations may refer directly or indirectly to NuttX features, which I found sometimes to be quiet confusing. I tried, for example, to access the CLI to run some commands, but wasn’t successful. Later, I found, that ChibiOS simply doesn’t have a CLI.

Since the recent, current and future development seems concentrate on ChibiOS, it appears to be the better choice, although it is still possible to use the latest firmwares with NuttX by — for example — flashing the “PX4v3” named firmware builds. I still don’t know why that is or why they are called “PX4” or even if NuttX is still officially supported.

Different commands available in the NSH CLI — only available with NuttX RTOS.

Using the NuttX based firmware, it’s possible to access the aforementioned CLI (using Mission Planner, see Image above), but it was extremely slow und mostly unresponsive when I tested it. I therefore decided to go back to ChibiOS (fmuv3) as it seems to best choice for these boards, although I really like this feature.

If someone reads this and knows more about anything I wrote above, I would be very happy for a message or comment.

Leave a Reply

Your email address will not be published. Required fields are marked *