Set up

Firmware

Flash PX4 or ArduPilot onto a flight controller from the same window. The hard part is picking the right image, so the page is built around that.

Requirements

  • A direct USB connection only. Flashing is refused over a telemetry radio, UDP or TCP.
  • Disarmed. Refused while armed.

A new controller is the one exception to "connected": it has no firmware to talk to, so there is no link. See A controller with no firmware.

Both formats are supported. ArduPilot's .apj and PX4's .px4 are the same kind of container and go through the same USB bootloader, so a local file of either kind flashes the same way.

A controller with no firmware

A new flight controller, or one whose last flash was interrupted, sits in its USB bootloader and says nothing over MAVLink. Corvus notices it: the port shows up as a bootloader, a dialog offers the First Setup wizard, and the wizard opens on this page. Flashing then skips the reboot (there is nothing running to reboot) and writes the image straight to the bootloader.

  • One board at a time. With two controllers waiting in their bootloaders Corvus will not guess which one you mean. Unplug one.
  • Only without a link. While a vehicle is connected the usual path applies: reboot into the bootloader, then flash.
  • The board is picked for you from the bootloader's name where it carries one, as it is for a running controller.

When the flash is done, Corvus connects to the board by itself, the same way it does for any controller plugged in.

PX4 or ArduPilot

The download picker starts with a Flight stack switch. The two stacks publish different images for the same board, so only one of them is listed at a time. The page opens on the stack the connected aircraft is running, and moving a board from one stack to the other is one click.

PX4
The release list is PX4's recent versions. The newest stable one is preselected, never a beta.
ArduPilot
The release list is one entry per firmware and channel: ArduCopter, ArduCopter Heli, ArduPlane, Rover and ArduSub, each in stable and beta. It opens on the stable build for the connected aircraft, so a plane does not start from the copter build. A traditional helicopter has its own entry because it is a separate image. Boards with nothing to flash over USB (Linux autopilots, the simulator, the old APM1 and APM2) are left out.

A board you picked stays picked when you change release, including from ArduCopter to ArduCopter Heli.

Picking the board

A PX4 release ships around 150 build targets, and a dropdown that shows one of them at a time answers neither "which boards can I flash?" nor "which do I already have?". So the boards are a list:

  • Grouped by vendor, under the vendor's real spelling.
  • Named by the board, rather than by the target string.
  • Searchable by any of it. Type pixhawk, cube or v6x and all three land on the row you meant.
  • Your board first. The board Corvus detected on the USB port leads the list, and its vendor's group comes first.
  • Downloaded images marked. Images already on disk are marked downloaded, and those flash with no network at all.

A count under the list says how many targets the filter shows out of the release's total, and how many of them you already hold.

Developer builds and peripherals

Two kinds of target are set aside rather than removed:

Developer builds
PX4's _rover, _multicopter, _debug and similar targets, roughly a third of every release, are folded away behind one button. None of them is what an operator flashing an aircraft wants, and all of them are one click away for whoever came for one.
Peripherals
The IO coprocessor, CAN nodes and GNSS modules are published in the same release with the same .px4 extension. They are sorted last and labelled peripheral, never hidden. A board wrongly called a peripheral is merely listed late; the reverse would invite writing the IO firmware to a flight controller.

Working offline

The list of releases is fetched once (PX4's from GitHub, ArduPilot's from firmware.ardupilot.org) and then read from disk, which is right in the field and wrong on the day a new version comes out. Refresh next to it fetches both lists again; it is the only control on the page that needs the network on purpose. If the ArduPilot list has never been fetched on this laptop, the page says so and asks for a Refresh. Downloaded images are kept in ~/.corvus/firmware (see where Corvus keeps its files), so download before you go to the field and flash there.

Suggest a change to this page