> For the complete documentation index, see [llms.txt](https://hrftank.gitbook.io/hrftank/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hrftank.gitbook.io/hrftank/iii-build-manual-electronics/9.-fc-setup-and-test-drive/9.1-basic-fc-setup.md).

# 9.1 Basic FC setup

{% stepper %}
{% step %}

### Remove flight controller from HRF Tank

Taking the flight controller out of the model will make the initial setup process more convenient (and safer).
{% endstep %}

{% step %}

### Install firmware on your FC

Most popular firmware for RC rovers (and tanks) are:

<table data-view="cards"><thead><tr><th data-type="content-ref"></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td><a href="https://github.com/iNavFlight/inav">https://github.com/iNavFlight/inav</a></td><td data-object-fit="contain"><a href="https://673609632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhmKl11OGPwbKiNEUvA5L%2Fuploads%2FXo0G5L352N8mngqBldYs%2Finav%20logo.png?alt=media&amp;token=a908b70e-759e-4e96-b39e-70092375f1b6">inav logo.png</a></td></tr><tr><td><a href="https://ardupilot.org/rover/">https://ardupilot.org/rover/</a></td><td data-object-fit="contain"><a href="https://673609632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhmKl11OGPwbKiNEUvA5L%2Fuploads%2FERkDVaWbySrRZpfs25tQ%2FImage001%20-%202025%2010%2006%20-%2019%2045%2026.png?alt=media&amp;token=e067c648-94df-4abb-8e46-903886e10cf2">Image001 - 2025 10 06 - 19 45 26.png</a></td></tr></tbody></table>

### Pros and cons: <sup><sub>(by ChatGPT)<sub></sup>

#### <mark style="color:blue;">iNav</mark>

**Advantages:**

* **Simplicity** – easier to configure than ArduRover, especially for FPV beginners.
* **Lightweight** – runs well on inexpensive flight controllers (F4/F7 boards).
* **Good FPV support** – strong focus on real-time manual control, tuned for responsiveness.
* **OSD integration** – rich on-screen display options, helpful for FPV tank driving.
* **Community-driven** – many tutorials and configurations available for FPV vehicles.

**Disadvantages:**

* **Limited autonomy** – waypoint navigation and autonomous features are basic compared to ArduRover.
* **Less flexibility** – fewer advanced sensor and hardware integrations.
* **Focused on aerial platforms** – although ground vehicles are supported, the development focus is mainly drones.
* **Less robust safety features** – compared to ArduRover’s geofencing and advanced failsafes.

#### <mark style="color:orange;">ArduRover</mark>

**Advantages:**

* **Rich functionality** – supports advanced autonomous modes (waypoints, patrol routes, return-to-home).
* **Highly configurable** – works with many sensors (GPS, compass, lidar, rangefinders) and supports complex setups.
* **Mature ecosystem** – large community, extensive documentation, and integration with Mission Planner and QGroundControl.
* **Advanced safety features** – geofencing, failsafe options, redundancy support.
* **Scalability** – suitable for both small FPV tanks and large UGV platforms.

**Disadvantages:**

* **Complexity** – configuration and tuning can be difficult for beginners.
* **Resource-heavy** – requires more powerful flight controllers (not ideal for the cheapest boards).
* **Steeper learning curve** – may be overwhelming if only basic manual control is needed.
* **Less optimized for FPV racing/fun use** – more oriented toward robotics and research.

In my previous projects I used **Ardurover**, but its GUI, complexity, and the slow performance of the configurator led me to try **INav** instead. Despite its weaker documentation, I found the configuration process much simpler, so I started using it permanently. In the following sections of this guide you’ll find information on how to set it up.

In this video you’ll find instructions on how to install INav on your flight controller: **(1:15–6:25)**

{% embed url="<https://www.youtube.com/watch?v=xdf3yhlgJyc>" %}
{% endstep %}

{% step %}

### Pair the RC receiver with the transmitter

For this step you can use the FC with unconfigured firmware. Connect the receiver to the FC using the dedicated pins and follow the instructions provided with your receiver.

<figure><img src="https://673609632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhmKl11OGPwbKiNEUvA5L%2Fuploads%2FUkF3Nswaj9SuKJVgdA9n%2Fmatek%20egzampl.jpg?alt=media&amp;token=d8cb8d2c-d1db-46e9-820a-6574bf50d4de" alt="" width="479"><figcaption></figcaption></figure>

[ExpressLRS Binding Manual](https://www.expresslrs.org/quick-start/binding/#traditional-binding)
{% endstep %}

{% step %}

### Initial flight controller firmware setup

In the first window of the configurator, select (truthfully) **“Rovers & Boats.”**

<figure><img src="https://673609632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhmKl11OGPwbKiNEUvA5L%2Fuploads%2F7xW3WsJAEh6tEnw0xgVE%2FUAV%20tajp.jpg?alt=media&amp;token=a20baaf5-c916-494c-b2da-99dc51e1cc89" alt="" width="563"><figcaption></figcaption></figure>

If you didn’t already do this in step 2, select the UART port where the Rx will be connected, and the protocol used by your receiver. You’ll find this information in its documentation. For receivers using the ELRS protocol, select **CRSF.**

<figure><img src="https://673609632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhmKl11OGPwbKiNEUvA5L%2Fuploads%2FbEVLCOkbLrOI6oVC4NKt%2Fkonfig%20rx.jpg?alt=media&amp;token=629223c8-7320-4891-a679-ea585817a62a" alt="" width="563"><figcaption></figcaption></figure>

After completing the configurator, go through the following tabs (available in the left-hand menu):

#### **Calibration**

In this tab you will calibrate the accelerometer. Place the flight controller in each of the six positions shown in the images. For each position, click **“Calibrate Accelerometer.”**

<figure><img src="https://673609632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhmKl11OGPwbKiNEUvA5L%2Fuploads%2F6K0d92xZGa2nZ8QTL5E1%2Fkalibr.jpg?alt=media&amp;token=7f1fbf1f-3af3-4923-b73b-5bb2e1562d22" alt="" width="563"><figcaption></figcaption></figure>

#### **Ports**

Select the ports for your remaining components. For example, if you have a VTx using SmartAudio, you can assign it to the UART adjacent to the VTx pins – typically UART3. Finally, click **“Save and Reboot.”**

<figure><img src="https://673609632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhmKl11OGPwbKiNEUvA5L%2Fuploads%2FnNijSUkGy0IWXFsHtwTl%2Fports.jpg?alt=media&amp;token=0dc2cdf8-7cbc-45c6-bae6-bcf278d3a743" alt="" width="563"><figcaption></figcaption></figure>

#### **Failsafe**

Select the **“Drop”** option – this ensures that in case of RC signal loss, the tank will stop moving. Confirm by clicking **“Save and Reboot.”**

<figure><img src="https://673609632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhmKl11OGPwbKiNEUvA5L%2Fuploads%2F43S3iahgkECxcjzAMxIL%2Ffailsafe.jpg?alt=media&amp;token=570858af-68c5-412b-b777-994204773bd6" alt="" width="563"><figcaption></figcaption></figure>

#### **Modes**

Set the channel you will use to arm the tank. I chose the channel assigned to the top-left switch on the transmitter – for Radiomaster Pocket it's **Ch5.**\
You can verify channel-to-switch assignments in the **Receiver** tab.

<figure><img src="https://673609632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhmKl11OGPwbKiNEUvA5L%2Fuploads%2F8MSKTjMlBPyybM2EaA6Y%2Fmodes.jpg?alt=media&amp;token=a84f1aff-f41c-49dd-b262-d96294711dab" alt="" width="563"><figcaption></figcaption></figure>

#### **Mixer**

To begin configuring steering, go to the **Mixer** tab and remove the **Motor Mixer.**\
For skid-steering tanks we will only use the **Servo Mixer.** Confirm by clicking **“Save and Reboot.”**

<figure><img src="https://673609632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhmKl11OGPwbKiNEUvA5L%2Fuploads%2FKbiwJEo2oPZlTLugrSdl%2Fmixer1.jpg?alt=media&amp;token=ffb5f758-f98c-487b-941c-5a0f66e64897" alt="" width="563"><figcaption></figcaption></figure>

#### **Outputs**

<figure><img src="https://673609632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhmKl11OGPwbKiNEUvA5L%2Fuploads%2F8IWRsIxcMNhStxOSg4PY%2Fo%C5%82tputz.jpg?alt=media&amp;token=6aba643c-fb93-4eec-9fe6-0e5a2af81701" alt="" width="563"><figcaption></figcaption></figure>

In this tab:

* As suggested in the subtle red box, enable **“Stop motors on low throttle.”**
* Set **“Motors IDLE power”** to **15%.**
* Enable **“Reversible motors mode”** and ignore the blue warning box – setting idle power to 0 would mean the model could only be armed with the throttle in a range that causes immediate forward movement.
* Set the deadband as follows:

  * 1450 - Reversible Motors Deadband Low
  * 1550 - Reversible Motors Deadband High
  * 1500 - Reversible Motors Neutral

  Deadband and idle power are just initial values – you can later adjust them to match your specific model, depending on motor power and drivetrain resistance.
* Finally: if you haven’t connected any motors yet, check **“Enable motor and servo output.”**

Save the settings with **“Save and Reboot.”**

Now it’s time to move on to the control configuration!
{% endstep %}
{% endstepper %}
