Resource Remapping is an awesome feature in Betaflight, it allows you to swap pins around on a flight controller. Resource Remapping is powerful, you can change motor order, relocate pins in case of ripped-off solder pads, and so on. Let it go frozen mp3.
Further Reading: More Tutorials on Betaflight Features.
The green-circled white wire is IRC Tramp telemetry wire (connected to softserial 1, ledstrip port). Help Omnibus F4 Pro v3 + 4s battery: david9981: 8: 790. Omnibus family Powerful F4 Super Stable 6000 Gyro via SPI. Obj main inavNAZE. It also comes with Vibration isolation mounting hardware to ensure smooth The LUX F7 has an on board barometer buzzer pad I2C pad iNAV support GPS compass pads and up to 8 PWM inputs S1 S8 for a ton of servo and motor control. The Omnibus F4 SD is a controller board designed for racers. In contrast to a typical racer board it has some additional features, such as an SD card and a faster CPU. These are the main differences compared to a Pixracer: Lower price. OMNIBUS F4 Pro (V3) Upgrade version of OMNIBUS F4, the OMNIBUS F4 Pro (Some shop call it as OMNIBUS F4 PRO V2) added SD card supports, has 5v3A BEC, LC filter for Camera and VTX, build in Current sensor for high Integration Frame. Resource Remapping is an awesome feature in Betaflight, that allows you to swap some pins around on a flight controller. Using Resource Remapping there are so much you can do, for example, to change motor ordering, relocate pins in case of ripped-off solder pads, and many more!
- Not enough UART TX/RX
- Ripped solder pads
- Requires more motor output for hexacopter configuration
- Missing PPM receiver input
- Missing programmable LED output
- Servo output
- Change motor output order
There are many pins on a processor (as shown in the top image), and each pin might be assigned a specific function by Betaflight. Resource Remapping basically allows we to re-assign those pins with a different function.
Omnibus F4 Pro Soft Serial Killer
This feature is available in Betaflight V3.1 or newer versions.
In Betaflight configurator CLI, type 'resource', it will return the available functions that we can change, and their current pin assignment:
The format is as follow:
To change a pin for a function, you just follow the same format, and enter save at the end.
In the following we will show you some of the common usage of Betaflight Resource Mapping.
One very important note about this is, some of the pins of the processor might be unused, and does not connect to any solder points on the flight controller. The port you are changing the function to should ideally be a breakout pin on the flight controller (somewhere you can solder to easily). Otherwise you might have to solder a wire directly to the extremely tiny 'leg' on the processor, which is really hard to do.
Some notes:
You can remap motor outputs freely, but if you want to add a motor output using other pins, you might run into 'DMA conflict' if you use DShot. LED_Strip is your best bet for that.
You can't remap hardware serial, but you can use hardware serial pins for other functions.
You can guarantee to use the LED_STRIP pin for almost anything, such as motor output, soft serial etc, that's because it usually has its own timer and DMA channel.
Make sure it's LED_STRIP that you want, and not LED! These are two different resources. (LED is the tiny status indicator that blinks when you power up the FC)
Because FPV camera control requires resistors and capacitors to work properly, they are normally already built into the flight controller, connected to the 'camera control' pin. Because of this, you can't use it for anything else. Depending on the capacitor value, you might be able to use it for slow speed protocol such as SmartAudio, but usually not any high speed protocol.
These are all 'ADC' resources – analogue to digital converters.
- ADC_Batt – battery voltage input
- ADC_Curr – current sensor input
- RSSI – RSSI input
You can remap these 3 resources to each other, but you can't remap these to anything else.
For example if you want to change LED strip to A09, simply type in CLI:
Note that it's LED_STRIP! There is another resource called LED, which is the status LED on the flight controller. If you remap LED instead of LED_STRIP, you won't get what you want, but instead turns off the status LED on the FC.
If you have a quad with motors in the wrong order, you can either undo the soldering and swap the motor outputs on the flight controller, or simply fix it in the software using Resource Remapping!
First thing you want to do, is to find out the current motor order. You can do so with the Motor tab in Betaflight.
Remove all propellers!
Use the motor tab to spin up the motors one by one, from motor #1 to #4 and write down the order on a piece of paper. For example, we have:
Now type 'resource' in CLI, and find the 4 lines specifying the pin assignment for the four motors:
Please make a copy of these lines in a text file, if you make a mistake you can just go back.
Now you can write down the pin numbers next to the motors:
On the same paper, replace the motor numbering with the correct ones:
- rear right motor should be #1
- front right motor should be #2
- rear left motor should be #3
- front left motor should be #4
It should now become clear what motor numbers you have to assign to the pins.
In our example,
- B06 should be 'motor #1'
- B04 should be 'motor #2'
- B07 should be 'motor #3'
- B05 should be 'motor #4'
Omnibus F4 Pro Softserial Telemetry
To change the motor pin assignment, type these lines in CLI:
And that's it!
It's just as simple as the examples above… BUT!
You cannot just assign any pin for the buzzer, you need to do more!
That's because the buzzer can draw a fairly large amount of current (more than the STM32 processor can handle), therefore there is usually a transistor in place. The transistor handles the current for the processor, and it's controlled by a signal from the processor. If you connect the beeper directly to the STM32 processor you could potentially fry it.
It's probably not a good idea moving buzzer pin around considering how much work this is. But if you do decide to move the buzzer to another pin, you will need to build an external power circuit like this. This is an example for the CC3D FC's, for the most reliable choice of component and circuit please consult your own FC manufacturer.
Omnibus F4 Pro Soft Serial Download
Sometimes a pin can be shared by multiple functions in Betaflight, if this is not your intent it's best to free up the pin from tasks that are not required.
To check, simply enter 'resource' in CLI. In this example, you can see that pin C08 is shared by two functions: LED_STRIP and CAMERA_CONTROL.
There are many pins on a processor (as shown in the top image), and each pin might be assigned a specific function by Betaflight. Resource Remapping basically allows we to re-assign those pins with a different function.
Omnibus F4 Pro Soft Serial Killer
This feature is available in Betaflight V3.1 or newer versions.
In Betaflight configurator CLI, type 'resource', it will return the available functions that we can change, and their current pin assignment:
The format is as follow:
To change a pin for a function, you just follow the same format, and enter save at the end.
In the following we will show you some of the common usage of Betaflight Resource Mapping.
One very important note about this is, some of the pins of the processor might be unused, and does not connect to any solder points on the flight controller. The port you are changing the function to should ideally be a breakout pin on the flight controller (somewhere you can solder to easily). Otherwise you might have to solder a wire directly to the extremely tiny 'leg' on the processor, which is really hard to do.
Some notes:
You can remap motor outputs freely, but if you want to add a motor output using other pins, you might run into 'DMA conflict' if you use DShot. LED_Strip is your best bet for that.
You can't remap hardware serial, but you can use hardware serial pins for other functions.
You can guarantee to use the LED_STRIP pin for almost anything, such as motor output, soft serial etc, that's because it usually has its own timer and DMA channel.
Make sure it's LED_STRIP that you want, and not LED! These are two different resources. (LED is the tiny status indicator that blinks when you power up the FC)
Because FPV camera control requires resistors and capacitors to work properly, they are normally already built into the flight controller, connected to the 'camera control' pin. Because of this, you can't use it for anything else. Depending on the capacitor value, you might be able to use it for slow speed protocol such as SmartAudio, but usually not any high speed protocol.
These are all 'ADC' resources – analogue to digital converters.
- ADC_Batt – battery voltage input
- ADC_Curr – current sensor input
- RSSI – RSSI input
You can remap these 3 resources to each other, but you can't remap these to anything else.
For example if you want to change LED strip to A09, simply type in CLI:
Note that it's LED_STRIP! There is another resource called LED, which is the status LED on the flight controller. If you remap LED instead of LED_STRIP, you won't get what you want, but instead turns off the status LED on the FC.
If you have a quad with motors in the wrong order, you can either undo the soldering and swap the motor outputs on the flight controller, or simply fix it in the software using Resource Remapping!
First thing you want to do, is to find out the current motor order. You can do so with the Motor tab in Betaflight.
Remove all propellers!
Use the motor tab to spin up the motors one by one, from motor #1 to #4 and write down the order on a piece of paper. For example, we have:
Now type 'resource' in CLI, and find the 4 lines specifying the pin assignment for the four motors:
Please make a copy of these lines in a text file, if you make a mistake you can just go back.
Now you can write down the pin numbers next to the motors:
On the same paper, replace the motor numbering with the correct ones:
- rear right motor should be #1
- front right motor should be #2
- rear left motor should be #3
- front left motor should be #4
It should now become clear what motor numbers you have to assign to the pins.
In our example,
- B06 should be 'motor #1'
- B04 should be 'motor #2'
- B07 should be 'motor #3'
- B05 should be 'motor #4'
Omnibus F4 Pro Softserial Telemetry
To change the motor pin assignment, type these lines in CLI:
And that's it!
It's just as simple as the examples above… BUT!
You cannot just assign any pin for the buzzer, you need to do more!
That's because the buzzer can draw a fairly large amount of current (more than the STM32 processor can handle), therefore there is usually a transistor in place. The transistor handles the current for the processor, and it's controlled by a signal from the processor. If you connect the beeper directly to the STM32 processor you could potentially fry it.
It's probably not a good idea moving buzzer pin around considering how much work this is. But if you do decide to move the buzzer to another pin, you will need to build an external power circuit like this. This is an example for the CC3D FC's, for the most reliable choice of component and circuit please consult your own FC manufacturer.
Omnibus F4 Pro Soft Serial Download
Sometimes a pin can be shared by multiple functions in Betaflight, if this is not your intent it's best to free up the pin from tasks that are not required.
To check, simply enter 'resource' in CLI. In this example, you can see that pin C08 is shared by two functions: LED_STRIP and CAMERA_CONTROL.
Further Reading: How to setup Camera Control in Betaflight?
If we are not using LED Strip, but camera control, you can free up pin C08 from LED_STRIP by typing this command in CLI:
That's it! :)
If you run out of hardware serial port (aka UART), you can turn spare pins as software serial port, aka Soft Serial.
For example, you can use LED_STRIP, PPM, spare motor outputs.
Voltage (5V and battery voltage) and ground pads cannot be remapped as these are physical connections that doesn't go through the processor.
Camera input and output (for Betaflight OSD) also cannot be remapped as these go through the OSD chip, and not the main processor.
Omnibus F4 Pro V3
Omnibus F4 Pro Soft Serial Turcesc
EDIT:
This is part of my BF config, I'm running BF4.0 (but it wasn't working on 3.5.2 either)
# serial
serial 20 1 115200 57600 0 115200
serial 0 0 115200 57600 0 115200
serial 2 64 115200 57600 0 115200
serial 5 8192 115200 57600 0 115200
# get serial
serialrx_provider = FPORT
Allowed values: SPEK1024, SPEK2048, SBUS, SUMD, SUMH, XB-B, XB-B-RJ01, IBUS, JETIEXBUS, CRSF, SRXL, CUSTOM, FPORT
Default value: SPEK1024
serialrx_inverted = ON
Allowed values: OFF, ON
Default value: OFF
serialrx_halfduplex = ON
Allowed values: OFF, ON
Default value: OFF
serial_update_rate_hz = 100
Allowed range: 100 - 2000
EDIT2: Added picture of wiring. The red-circled white wire is the FPort wire (connected to TX3). The green-circled white wire is IRC Tramp telemetry wire (connected to softserial 1, led_strip port).