# Loading Firmware
_QGroundControl_ **desktop** versions can be used to install PX4 firmware onto [Pixhawk-series](../getting_started/flight_controller_selection.md) flight-controller boards.
:::warning
**Before you start installing Firmware** all USB connections to the vehicle must be _disconnected_ (both direct or through a telemetry radio).
The vehicle must _not be_ powered by a battery.
:::
## Install Stable PX4
Generally you should use the most recent _released_ version of PX4, in order to benefit from bug fixes and get the latest and greatest features.
:::tip
This is the version that is installed by default.
:::
To install PX4:
1. Start _QGroundControl_ and connect the vehicle.
1. Select **"Q" icon > Vehicle Setup > Firmware** (sidebar) to open _Firmware Setup_.

1. Connect the flight controller directly to your computer via USB.
::: info
Connect directly to a powered USB port on your machine (do not connect through a USB hub).
:::
1. Select the **PX4 Pro Stable Release vX.x.x** option to install the latest stable version of PX4 _for your flight controller_ (autodetected).

1. Click the **OK** button to start the update.
The firmware will then proceed through a number of upgrade steps (downloading new firmware, erasing old firmware etc.).
Each step is printed to the screen and overall progress is displayed on a progress bar.

Once the firmware has completed loading, the device/vehicle will reboot and reconnect.
:::tip
If _QGroundControl_ installs the FMUv2 target (see console during installation) and you have a newer board, you may need to [update the bootloader](#bootloader) in order to access all the memory on your flight controller.
:::
Next you will need to specify the [vehicle airframe](../config/airframe.md) (and then sensors, radio, etc.)
## Installing PX4 Main, Beta or Custom Firmware
To install a different version of PX4:
1. Connect the vehicle as above, and select **PX4 Pro Stable Release vX.x.x**.

1. Check **Advanced settings** and select the version from the dropdown list:
- **Standard Version (stable):** The default version (i.e. no need to use advanced settings to install this!)
- **Beta Testing (beta):** A beta/candidate release.
Only available when a new release is being prepared.
- **Developer Build (master):** The latest build of PX4/PX4-Autopilot _main_ branch.
- **Custom Firmware file...:** A custom firmware file (e.g. [that you have built locally](../dev_setup/building_px4.md)).
If you select this you will have to choose the custom firmware from the file system in the next step.
Firmware update then continues as before.
## Bootloader Update
Pixhawk hardware usually comes with an appropriate bootloader version pre-installed.
A case where you may need to update is newer Pixhawk boards that install FMUv2 firmware.
If _QGroundControl_ installs the FMUv2 target (see console during installation), and you have a newer board, you may need to update the bootloader in order to access all the memory on your flight controller.

You can update it by following the instructions in [Bootloader update > FMUv2 Bootloader Update](../advanced_config/bootloader_update.md#fmuv2-bootloader-update).
## Further Information
- [QGroundControl User Guide > Firmware](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/setup_view/firmware.html).
- [PX4 Setup Video](https://youtu.be/91VGmdSlbo4) (Youtube)