I have started to add functions to MinimOsd code.

At first i did it for myself only. Added many functions i thought i need. Then opened this thread.

after a while, Pedro and later Miguel came, and things started to happen fast. :D

They have optimised the code and added even more things to it.

They have worked hard on CT, and it became a great tool!

Thank you Bough! :)

By now MinimOSD-Extra got a pretty advanced OSD.

Here it is in action:


- Changeable unit measurement (US, metric)

- Airspeed

- Home alt

- Battery Percent

- Battery used mah

- Current Draw

- Time From Startup (cleared at takeoff to show exact flight time)

- OSD Menu

- Variometer

- Wind horizontal speed and direction, and also the average wind speed of the last few minutes. 

- OSD on/off

- Switchable secound screen

- WP distance

- WP heading

- Crosstrack error

- Warning messages for Lost GPS fix, Stall, Overspeed, battery volt, battery Percent, RSSI

- Efficiency, glide distance & thermic notifier. 3 in one panel

- OSD Brightness

- HAM Call Sign

- After flight summary

- Trip distance

- Temperature

- Smoothened horizon

- Real heading


- Vertical speed

This functions can be turned on and off, and placed on different screens now, by the Config. tool.

Also RSSI, switching mode and channel and unit measurement, Stall speed warning, Overspeed warning, Battery warning volt, Battery percent warning, RSSI warning,  can be set in new Config Tool.

We built in a new way of setting video standards. Now OSD does not guessing anymore :). You can set it fixed from CT. It is in "Video Mode" menu.

Here is how it looks: (This video is a bit outdated, sorry. I will make a new one soon.)

The MinimOSD-Extra project is here: Link

This project is the developing version of the official Arducam OSD located here: Link

The latest stable version is: 2.1

We are sharing it to see videos you make using it! :)


Views: 122077

Reply to This

Replies to This Discussion


If it is a simple fix in the code, could you publish the change so that I could make it, as I am using a "custom" code that I use to get RSSI working with EzUHF that has been working great with the exception of the double % sign?  If it is not simple, then I guess I can adapt the new code to meet my needs.




It as to do with rssi var getting a number that uses more than 3 digits (either a negative sign or > 999)

A possible fix:

Declare rssi var as uint8 (0 - 256). In this case if we are showing raw pwm values we need to first divide the value by 10 (so we're going to get/show 10ths of pwm values).



  static int16_t rssi = -99; // scaled value 0-100%


   In panRSSI method:


if(rssiraw_on == 0) rssi = (uint8_t)((float)((int16_t)osd_rssi - rssipersent)/(float)(rssical-rssipersent)*100.0f);

if(rssiraw_on == 1) rssi = (uint8_t)osd_rssi;

if(rssiraw_on == 8) rssi = (uint8_t)((float)(chan8_raw / 10 - rssipersent)/(float)(rssical-rssipersent)*100.0f);

if(rssiraw_on == 9) rssi = (uint8_t)(chan8_raw / 10);


This is my favorite approach but I'll think a bit more on it.



Beyond my knowledge...LOL (I am a nurse by trade; not a computer programmer and know just enough to get myself in trouble :) ).

Here is the code that I have added in OSD_Panels.ino (complements of Tom Buetow):


Here's the code I modified (r680):

/* **************************************************************** */

// Panel : panRSSI

// Needs : X, Y locations

// Output : Alt symbol and altitude value in meters from MAVLink

// Size : 1 x 7Hea (rows x chars)

// Staus : done

void panRSSI(int first_col, int first_line){

osd.setPanel(first_col, first_line);


//Change RSSI value to report RC Channel 5 for ExUHF Link Quality

//rssi = (int16_t)osd_rssi;

rssi = chan5_raw;

//if (rssi > rssical) rssi = rssical;

//else if (rssi < rssipersent) rssi = rssipersent;

//Change RSSI percent calculation for EzUHF LQ.

//if(!rssiraw_on) rssi = (int16_t)((float)(rssi - rssipersent)/(float)(rssical-rssipersent)*100.0f);

static int16_t        pwm_min = 1000;

static int16_t        pwm_max = 1800;

if(!rssiraw_on) rssi = (int16_t)((float)(rssi - pwm_min)/(float)(pwm_max - pwm_min)*100.0f);

// if (rssi < -99) rssi = -99;

osd.printf("%c%3i%c", 0x09, rssi, 0x25);

// osd.printf("%c%3i%c", 0x09, osd_clear, 0x25);



I simply have to edit the pwm_min and max values to match my setup and use the channel of my choosing.  Is it possible to edit this code to solve the problem?


What I see in your code snippet:

It won't work well with the latest CT Tools because rssiraw_on now may have other values than 0 or 1.

I'm not used with EzUHF RSSI but it seems that it is a pwm value. If so, the latest fw we're pre-releasing is working fine with this type of RSSI. You just have to use channel 8 instead of 5 and select ch8 as "RSSI Channel" in CT Tool.

Either way here is what I would change in your code:


  //Note: I declared it wrong in the previous reply

  static uint8_t rssi = -99; // scaled value 0-100%


OSD_Panels.ino (based on your code)

rssi = chan5_raw / 10;


static uint8_t        pwm_min = 100;

static uint8_t        pwm_max = 180;

if(!rssiraw_on) rssi = (uint8_t)((float)(rssi - pwm_min)/(float)(pwm_max - pwm_min)*100.0f);



Will give it a go and let you know how I make out.

Compiles ok...will give it a test run soon.


Just a quick question…when you changed the min and max values from 1800 and 1000 to 180 and 100, what do I now enter if my custom values are 1784 and 1049?  Would decimal numbers work?  For example, could I enter 178.4 for 1784?  Or do I have to enter to the nearest tenth, like 178?

OK, appears to be working using decimal numbers.  I just uploaded a brief video to my YouTube Channel...


Hi Jim,

Great to know the fix worked!


Ok, just noticed that now my timer does not progress past 0:00.  This is only since I implemented the double %% fix.  Any thoughts?

Ok, said F it and switched over to the latest Firmware (r785) and used the latest CT tools (r787) and now everything is working fine...


Check out my Youtube video for the EzUHF RSSI thread...




© 2014   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service