Thread Tools
Dec 03, 2012, 08:02 AM
openLRSng haxor
Thread OP

OpenLRS - new firmware fork: openLRSng

As you may kown thUndead stopped maintaining his mod for openLRS so I decided to step in and startted to build a cleaner and more structured open source firmware for the openLRS hardware.

The code is available at 'Tagged' version are considered stable while the master may have some work in progress altough I do my best to avoid breaking it.

Latest stable version can be installed using the Chrome based configurator <<here>>. This is recommended for normal users that don't need to fiddle with the code.

It is possible to stick to a version by downloading a specific version of configurator from

Developer chat and live help for troubleshooting is available at #openLRS webchat link

Changelog for stable releases:

v3.8.5 (May 31 2015) - submicro defaults
  • Revise defaults for type 5 (default to PPM+RSSI)
  • This release is fully compatible, no need to update RX
v3.8.4 (May 20 2015) - static inputs
  • Add mode switch support for deluxeTX v1 (connect to GND,SCL,SDA)
  • Add 'static' channel inputs
  • This release is fully compatible, no need to update RX
v3.8.3 (Mar 19 2015) - orange modeswitch
  • Add mode switch support for flytron/orangeRX HW
  • This release is fully compatible, no need to update RX
v3.8.2 (Mar 19 2015) - chmap fix
  • Fix bug in channel mapping code. Kudos to [email protected]
  • This release is fully compatible, no need to update RX
v3.8.1 (Mar 18 2015) - just fix
  • TX: Fix profile to default to 1
  • This release is fully compatible, no need to update RX
v3.8 (Jan 30 2015) - 'switch'
  • Enable use of the switch on deluxe JR TX for selecting profile
  • Enable use of the switch on deluxe JR TX for applying full power (regardless of profile)
  • Beacon triggering (answerback)
  • per channel failsafe settings
  • Channel randomization with RSSI scan (select quite channels)
v3.7.4 () - tbd.
v3.7 .3() - tbd.
v3.7 .2() - tbd.
v3.7.1 () - tbd.
v3.7 (Jun 30 2014) - TX versatility (EEPROM should be cleared)
  • Allow selecting mnimum channels required on PPM stream (on TX)
  • Enable reordering of PPM channels (tx side)
  • Enable use of TX I2C as 2 extra inputs
  • compile firmware images with bootloader embedded (for flashing via ISP)
v3.6.4 (May 26 2014) - bugfix (EEPROM can be left unerased)
  • Fix for usage of TX/RX pins as channel outputs
v3.6.3 (May 22 2014) - minor features (EEPROM can be left unerased)
  • Support for Deluxe JR TX
  • Required protocol changes to support signal monitor
v3.6.2 (Apr 24 2014) -bugfix (EEPROM can be left unerased)
  • Bugfix for problematic connecting through configurator
v3.6.1 (Apr 20 2014) - faster start (EEPROM can be left unerased)
  • Decreased startup time of the TX firmware
  • Micro PPM bugfix
v3.6 (Apr 16 2014) - EEPROM robustness
  • Improved EEPROM robustness
  • Bugfix for rare TX lockup with telemetry enabled
v3.5.6 (Mar 24 2014) - watchdog support (if supported by bootloader) (EEPROM can be left uneerase)
  • Enable watchdog when possible (needs optiboot on atmega328P)
  • Loosen spektrum frame input validation
  • Failsafe values can now be accesed via configurator
v3.5.5 (Feb 21 2014) - bugfix (recommended to be updated, EEPROM can be left unerased)
  • Fixed Sxx and LLIND output modes
v3.5.4 (Feb 17 2014) - direct switch
  • integrated NFET/Transistor dirving for each channel (Sxx output modes)
  • logic level linkloss output (high when link lost)
v3.5.3 - diversity (beta)
  • Ability to use 2 receivers in diversity mode (connect via I2C)
v3.5.2 (Jan 21 2014)- Spektrum satellite
- binddata is compatible, flashing needed to activate new feature
  • Spektrum satellite output on RX
v3.5.1 (and v3.5) (Jan 2 2014) - TX profiles
- binddata modified, you need to reflash TX and all RX:s with new firmware.
  • profile support on TX (TX can store 4 completely separate settings)
  • improved combined RSSI
v3.4 (Dec 8 2013) - PPM improvements
- binddata modified, you need to reflash TX and all RX:s with new firmware.
  • manual selection for PPM polarity and microPPM mode
  • option to mute buzzer on telemetry loss
v3.3 (Nov 28 203) - smartPort & all
- binddata modified, you need to reflash TX and all RX:s with new firmware.
- when setting up RX config, it is recommended to reinitialize to defaults first
- RSSI behaviour is changed, verify your limits
RSSI is now (RSSI/4 + 75%) * (linkquality)
  • support for DTFUHF/HawkEye 6ch RX
  • support FrSky smartPort telemetry (Taranis, only RSSI & 2x analog, no hubdata yet)
  • delay for failsafe/PWMstop/PPMstop can now be set separately
  • improved RSSI output
  • allow PWM/PPM enabling before radiolink (loads failsafes)
  • allow muting TX beeper on telemetry loss
  • set serial baudrate in bind mode, this allows entering TX menu with e.g. 9600 bauds (bluetooth etc.)
  • EXPERIMENTAL: added datarates 57k6 and 125k, use with care
  • shortened 'jumpper probe' time on outputs 1-4, fixes ESCs refusing to arm
  • enable channel id matchingm prevents syncing to wrong hop position
  • use higher power on bind, fixes bind problems with some 1W units
  • RX type/config information is now transferred during RXconf, this removes the need for TX to know details of every TX type.
v3.2 (Sep13 2013) - Beep me up Scotty
  • new LBEEP RSSI mode, this outputs a audio frequency beep (1kHz) on the RSSI pin when packet is lost. It can be wired directly into vTX audio input (or via attenuator curcuit). Normal RSSI is still available as 'servo' output using the 'rssi injection' if needed.
  • CLI option for 'slave mode' added, this is just to help testing the slavemode is not in the code just yet.
v3.1.1 - v3.1.4 (Aug 15 - Sep 10 2013) 'behind the scenes stuff'v3.1 (Aug 9 2013) 'it is now in CLI'
  • preliminary support for ATMEGA32u4 based TX (DTFUHF deluxeTX)
  • faster timing frsky data to avoid "NO DATA"
  • FrSky mode is now selectable via CLI
  • Serial baudrate for telemetry configurable via CLI
  • ALWAYS_BIND configurable via CLI
  • longer 5 tone beacon tone "Close encounters"
  • Fixed PPM 8ch limit
  • More robust EEPROM access code (verify & retry)
  • expose LEDs and variable tone buzzer on servo header when using RX as TX (rchacker style)
v3.0 (Jul 13 2013) 'openLRSng:s most wanted'
  • Link & Receiver configurations separated
  • Flexible outputs on receiver, upto 13 PWM:s on OrangeRX/Flytron, PWM channels can be remapped freely
  • FrSky telemetry emulation (TX/RX RSSI + 2 * analog input)
  • 'serial' passthru feature both transparent and 'frsky' framed.
  • RSSI injection into PPM/PWM channel
  • Config backup/restore for link and receiver ( '!' during menu )
  • binary config protocol for GUI (soon available)
  • support for DTF UHF 4ch RX (as TX too)
  • adjustable failsafe delay (0.1 - 25s)
  • support Futaba 'microPPM' mode (16 ch in 20ms frame)
  • allow limiting PPM to 8 channels while having more on the link
  • binddata changed -> reflash both TX&RX
v2.1 (May 18 2013) 'more channels for you my friend'
  • introduction of 2bit channels to save amount of data (map: -1244 -> 1000 / 1245-1499 -> 1333 / 1500 - 1766 -> 1666 / 1767- -> 2000)
  • support for upto 16 channels via PPM, modes 4+4 8 8+4 12 12+4 16 (+x channels are 2bits)
  • separate features and datarate, now these can be selected invidually and resultting update rate is shown on menu
  • binddata changed -> reflash both TX&RX
v2.0 (Apr 21 2013) 'dawn of the CLI'
  • introduce the configuration menu on TX, to access it connect via serial (default 115200 baud) to the module while it is in bind mode and press enter. You need to rebind RX to copy setting to it.
  • this version is incompatible with v1.x so reflash both TX and RX.
v1.9 (Apr 4 2013)
  • fix a bug in RSSI output where it may be left to 'zero' when link is restored
v1.8 (Mar 26 2013)
  • add support for 868MHz RFMxx modules
  • add support for openLRSngTX
  • fix PWM/PPM outputs to come active only after initial link is achieved
v1.7 (Mar 16 2013)
  • add define for US FRS channels 1-7 to make beacon frequency setting easier
  • add possibility to select PPM mode at compile time (FORCED_PPM_OUTPUT) allowing 7 PWM channels along with PPM
  • change RSSI PWM frequency to 32kHz for stabler values on OSD
v1.6 (Feb 23 2013)
  • fix PPM mode setting to be robust if servos attached, 6 channels available as PWM.
v1.5 (Feb 18 2013)
  • add spectrum analyser mode in RX too.
v1.4 (Feb 13 2013)
  • fix beacon enabling
  • add possibility to reset to defaults (in .int) without randomization (hold button until continous beep)
v1.3 (Feb 13 2013)
  • basic telemetry (beep on link lost) if datarate==2
  • combined PWM/PPM mode (6 PWM channels available)
  • NOTE: PPM selection method changed !!!
v1.2 (Feb 9 2013)
  • extend frequency limits to 413 - 460MHz
v1.1 (Jan 25 2013)
  • binding and (key/channel) randomization support
  • support for spectrum analyserGUI (with TX)
  • interrupt based PWM out (really an internal change)
v1.0 (Dec 6 2012)
  • initial version

Supported hardware
  • Flytron openLRS M2 TX 100mW (with optional poweramp)
  • Flytron openLRS M3 TX 1000mW
  • Flytron openLRS M2 RX 100mW (as TX too)
  • OrangeRX UHF TX 100mW
  • OrangeRX UHF RX 100mW (as TX too)

Current features
  • up to 16 channels
  • proper timer based PPM output (for multicopters)
  • increase resolution to 10bits (original openLRS code had 12 and thUndeadMod 8)
  • use timer hardware when possible to avoid jitter
  • clean the code to make developing easier (proper indentation etc.)
  • simplify configuration part eg. frequency selection
  • 'beacon' mode (fading power audio beep).
  • selectable bitrate for balancing between range and features
  • proper binding procedure instead of hard coded values
  • fixed RSSI sampling (sample when TX is transmitting)
  • configuration via 'serial dialog' instead of code changes
  • spectrum analyser backend on both TX & RX for e.g.

What I have currently planned is
  • enable GPS input (for telemetry and beacon)
  • enable telemetry backlink for RSSI, analog inputs and GPS data
  • use second rx as satellite (I2C connected)
  • use 'live' failsafe by ppm input to rx

I am open for any ideas regarding functionality, also contributions are welcome.

Usefull/informative posts:

Nice flashing instruction:

Info on adding a filtter on RSSI output to make it usable for OSD:s not having internal filtter.
Last edited by kha; Jun 01, 2015 at 02:30 AM.
Sign up now
to remove ads between posts
Dec 04, 2012, 04:29 AM
Electronics slayer
SouthPawPaul's Avatar
Nice to see someone else picking up the sterling effort that thundead has put into this custom firmware.

I personally have an interest in getting the telemetary feature working.
Dec 04, 2012, 11:49 AM
Registered User
My wish would be antenna tracking ....Another software fork of Openlrs, though thath one is close source, has it implemented....Its coded by some polish guys and called Eleres.
Dec 04, 2012, 01:16 PM
Registered User
Originally Posted by kha
I think I spotted a bug in the thundead mod that the first channel is used twice i.e. if you have hopping set to 11,22,33,44,55 it actually hopped 11,11,22,33,44,55 this would explain what you saw.
Thanks that fixed it, hop_channel>nrofhops didn't work. When your have 4 hopping channels chosen and set nrofhops to 4 it will try to get 0,1,2,3,4 from the array -_-.
Dec 04, 2012, 01:46 PM
Registered User
dathird313's Avatar
An example of one of the many advantages to open source.
Dec 05, 2012, 12:31 PM
Registered User
CheckSum's Avatar
Thank you for working on OpenLRS. I am looking forward to your future improvements.
One quick question: Do I have the file designation right in the photo I attached?
Last edited by CheckSum; Apr 05, 2013 at 09:37 PM.
Dec 05, 2012, 12:44 PM
openLRSng haxor
Thread OP
Originally Posted by CheckSum
One quick question: Do I have the file designation right in the photo I attached?
Well yes, but you don't need to care about the .h files too much as the .ino includes them depending on what you selected.

I.e. you make you config selections in the .ino, enable COMPILE_TX and upload to TX. Then comment the COMPILE_TX out and upload to RX modules.
Dec 05, 2012, 03:03 PM
Registered User
This has been already done:

HW is similar to OLRS but FW is fully rewritten without orginal code, many features

- advanced telemetry with eldisp LCD display
- lost model buzzer
- antenna tracker
- configuration firmware

However it's not yet fully released to public, poor documentation, ask why ...
Dec 05, 2012, 04:03 PM
Registered User
Hey kha, have you confirmed that the RSSI you code puts out matches with the RSSI you get when you run the spectrum analyzer code (Should be around 200 when Rx and Tx are <2 meter)? Because I hade the problem that my RSSI didn't match in any way with what the RSSI should be. It turned out that when you read the RSSI just after receiving a package there is no data being transmitted and thus the RSSI doesn't match the real RSSI. I 'fixed' it by just constantly reading the RSSI outside the if received and taking an average because you are almost always receiving data. This isn't a really neat solution, do you have any suggestions? I'm not sure if your code has the problem too (I do suspect so) but it might be interresting to update that as well in your code.
Dec 05, 2012, 04:19 PM
openLRSng haxor
Thread OP
@shafter yes I was told about the eleres firmware and even haf a look at it. Pretty nifty. Nothing of that is actually hard to do.

@rownald no I haven't checked rssi and believe you are right. As my code knows the timing I can read the RSSI while the packet is coming so should be able to make it fairly good.

One of the real first things to do is the binding i.e. creation of semi random packet id and hop list and transferring parameter to rx via a special binding mode. One can still specify the id and hoplist by hand but there is no need to program the rx with same as pairing will transfer the id, hoplist and timing (datatate).
Last edited by kha; Dec 05, 2012 at 04:36 PM.
Dec 05, 2012, 04:25 PM
Registered User
Kha so are you gonna include antenna tracking in the code some-time in the future? And maybe also support for 1W transmitter module? I'm planing to diy that module, so if you plan on making some changes regarding hardware I'm in for it
Hope those modules at HK will restock soon, I wasn't at home while they sold out
Dec 05, 2012, 04:27 PM
Registered User
dathird313's Avatar
1 watt module works, I have one and have tested it. Its pin for pin compatible with the rfm22 that's used in the 100 mw modules.
Dec 05, 2012, 04:37 PM
Registered User
Cool , thanks for the info!
Dec 05, 2012, 08:09 PM
Registered User
CheckSum's Avatar

For this:
// helpper macro for European PMR channels
#define EU_PMR_CH(x) (445993750L + 12500L * x) // valid for ch1-ch8

#define BEACON_DEADTIME 30 // time to wait until go into beacon mode (s)
#define BEACON_INTERVAL 10 // interval between beacon transmits (s)
I live in the US. I assume I comment out only [//#define EU_PMR_CH(x) (445993750L + 12500L * x) // valid for ch1-ch8] .
Dec 06, 2012, 12:19 AM
openLRSng haxor
Thread OP
Originally Posted by CheckSum

I live in the US. I assume I comment out only [//#define EU_PMR_CH(x) (445993750L + 12500L * x) // valid for ch1-ch8] .
For US you can ignore the macro and just put frequency directly e.g. FRS ch1
#define BEACON_FREQUENCY 462562500

Quick Reply

Thread Tools

Similar Threads
Category Thread Thread Starter Forum Replies Last Post
New Product OpenLRS - Opensource Radio Control System form Flytron MelihK FPV Talk 134 Apr 13, 2015 02:27 AM
Sold To trade or sell: my new firmware DL rx for your old firmware DL rx signflyer FPV Equipment (FS/W) 4 Apr 24, 2012 09:49 PM
Sold Flytron OpenLRS Receiver v1 x3 $125 Shipped mrfliboy FPV Equipment (FS/W) 1 Nov 05, 2011 03:20 PM
Discussion Flytron's OpenLRS available now CrashingDutchman FPV Talk 30 May 28, 2011 04:36 AM
New Product New web shop, New product *EMI P-38 Forked Tail Devil * infinityhobby Product Announcements 60 Nov 03, 2006 07:48 PM