E-OSD Flash Firmware for RSSI Display using Arduino

by Oscar

As discussed previously, The E-OSD has two “bat inputs”, one can be used for monitoring main battery voltage, the other can be used for displaying RSSI. However the displayed value for RSSI is not very user friendly. I found a customized firmware for the E-OSD, that turns the voltage value into percentage (instead of 0V to 3.3V, we now see 0% to 100%). In this post I will explain how to flash this firmware on the Hobbyking e-osd. E-OSD flash firmware can be done by using many tools, here I will be using the Arduino.

banggood

OSD is an useful device that overlays flight information on your FPV screen.

e-osd-custom-firmware-rssi

The firmware can be found here: http://www.rcgroups.com/forums/showpost.php?p=26238951&postcount=3213

This OSD provides programing pins and it’s easy to access. I just soldered some female jumper headers to them.

e-osd-unwrapped

e-osd-flash-pin-solder

 

I then connect it to the Arduino, according to this diagram.

E-OSD-flash-pinout

e-osd-flash-arduino

The way to flash the e-osd, is the same way as flashing the KK2. Once downloaded the firmware, connected wires, open up a CMD window, and use command similar to this. (You will need to modify it according to your setup)

D:flashtoollibavrdudewindows>avrdude -P COM4 -b 19200 -c arduino -p ATmega88 P -v -e -U flash:w:"D:EOSD_customcl-osd.hex":i

It only takes 1 min to finish flashing, and this is the output I get. Once it’s finished, you have a great cheap OSD that can output RSSI value! Sweet! :-D

avrdude: Version 5.11svn, compiled on Jan 18 2012 at 22:40:34 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2009 Joerg Wunsch System wide configuration file is "D:flashtoollibavrdudewindowsavr dude.conf" Using Port : COM4 Using Programmer : arduino Overriding Baud Rate : 19200 AVR Part : ATmega88P Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PC2 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW Max W ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- --- -- --------- eeprom 65 20 4 0 no 512 4 0 3600 36 00 0xff 0xff flash 65 6 64 0 yes 8192 64 128 4500 45 00 0xff 0xff lfuse 0 0 0 0 no 1 0 0 4500 45 00 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 4500 45 00 0x00 0x00 efuse 0 0 0 0 no 1 0 0 4500 45 00 0x00 0x00 lock 0 0 0 0 no 1 0 0 4500 45 00 0x00 0x00 calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 Programmer Type : Arduino Description : Arduino Hardware Version: 2 Firmware Version: 1.18 Topcard : Unknown Vtarget : 0.0 V Varef : 0.0 V Oscillator : Off SCK period : 0.1 us avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.02s avrdude: Device signature = 0x1e930f avrdude: safemode: lfuse reads as F7 avrdude: safemode: hfuse reads as DC avrdude: safemode: efuse reads as 7 avrdude: erasing chip avrdude: reading input file "D:EOSD_customcl-osd.hex" avrdude: writing flash (3302 bytes): Writing | ################################################## | 100% 5.60s avrdude: 3302 bytes of flash written avrdude: verifying flash memory against D:EOSD_customcl-osd.hex: avrdude: load data flash data from input file D:EOSD_customcl-osd.hex: avrdude: input file D:EOSD_customcl-osd.hex contains 3302 bytes avrdude: reading on-chip flash data: Reading | ################################################## | 100% 4.28s avrdude: verifying ... avrdude: 3302 bytes of flash verified avrdude: safemode: lfuse reads as F7 avrdude: safemode: hfuse reads as DC avrdude: safemode: efuse reads as 7 avrdude: safemode: Fuses OK avrdude done. Thank you. D:flashtoollibavrdudewindows> 

Leave a Comment

By using this form, you agree with the storage and handling of your data by this website. Note that all comments are held for moderation before appearing.

4 comments

Gian Luca 20th June 2015 - 10:10 am

Hello Oscar,

Your guide was really very useful to me. I flashed 2 e-osd but , unfortunately, I’m experiencing the total impossibility to set them values. I mean , on my monitor i can only see ,in left up corner main voltage and half percentage of rssi. For rssi, my RX -L9R output is 1,8 volt(don’t know why) and , obviuosly, I only see 15-16% RSSI. I need to set position and RSSI value but, pressing and holding E-Osd toggle doesn’t work on both re-flashed. I hold it 3-5-10…..sec….but nothing….
How can I’do?

Tk for your answer at all

Reply
Adam Weiss 2nd June 2015 - 6:20 am

First off, I love your site. You have all kinds of helpful articles on here. I was just on here the other day while I was trying to figure out the different flight modes for MWC.
Anyways, I’ve been trying to get this E-OSD firmware flashed onto my board and have not had much luck getting it 100% setup yet. I can flash the hex file successfully. I have done this both with an Arduino Uno and with a USBASP programmer and it appears as if it has worked on both of them. However, when I plug the OSD in, I get white blocks where the text should be. According to some forum posts that I have found, this is because I have not been able to write the character set to the eeprom. Any idea what I’m missing here? Do I need to use a different command to write the eeprom? I have tried adding “eeprom:w:cl-osd.eep” to the end of the command and it just seems as if it ignores it. I’m completely lost.

Reply
Andy Mitchell 10th February 2015 - 9:49 am

Hi Oscar

Will this firmware work with PAL system and display correctly?
Love your work.
Andy

Reply
Oscar 11th February 2015 - 6:23 pm

you can change the text position, so yes it works with pal and ntsc.

Reply