Skip to main content

Rero is a transmission protocol suitable for efficient, reliable, and robust communication especially well suited for DMA supported MCU operations.

Project description

pipeline status coverage report PyPI version

Rero is an efficient communication protocol intended for transmissions of byte frames over e.g. a serial interface or buses. It builds upon COBS which allows for a minimum encoding overhead. It is perfectly suited for MCUs with DMA support.

Did somebody asked what is it good for? Here are some qualities of Rero:

Quality How Good for
Reliable CRC check Checking integrity of frame
Robust COBS and COBSR byte stuffing Easy to resynchronize byte stream
Efficient Exploit properties of COBS and COBSR Minimum processing overhead
Scalable Customize Rero to your needs Minimize frame overhead
Bus-capable Optional address field Address frame for specific recipient

A C implementation written for STM32 MCUs is available here. It builds upon a very efficient ring buffer implementation tailored for UART interfaces, which of course utilizes DMA support for transmission and reception.

Quick start

Rero requires Python 3.5 or newer to run.

$ pip install rero


import rero

reroPacker = rero.Packer(1) 	# own address = 1

# Dummy payload
payload = bytes([1, 2, 3, 4])

msgToSend = reroPacker.pack(payload, 20) # Packing with dedicated address = 20

# msgToSend may now be sent e.g. by use of pySerial...

# Unpack received frame
for payloadRcd in reroPacker.unpack(msgToSend):

Further examples are given in the docs.


You can find the documentation at here.


For information on how to contribute to the project, please check the Contributor's Guide.


Please use the Gitlab service desk or if you have a Gitlab account you may directly open an issue.


MIT License

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for rero, version 1.0.1
Filename, size File type Python version Upload date Hashes
Filename, size rero-1.0.1-py3-none-any.whl (12.2 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size rero-1.0.1.tar.gz (12.1 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page