Skip to content

Repository files navigation

OpenStint Laptiming Decoder

OpenStint logo

OpenStint is a software defined radio (SDR) based laptiming decoder, using either HackRF One or RTL-SDR v4. It works both with its own transponder protocol and with AMB/RC3-based transponders. It can run on a Raspberry Pi 3 Model B+. Only a minimal electronics knowledge is required; touching a soldering iron is optional.

  • 🎉 Natively supports OpenStint transponder, as well as RC3/RC4Hybrid/MRT and other RC3-clones
  • 🎓 3-wire RC4 support with learning feature
  • 🔧 Off-the-shelf components, no electronic skills are required (HackRF One, RTL-SDR v3 & v4).
  • 🏁 Tested with LapBeeps, RCGTiming and ZRound
  • 📉 Low resource requirements: runs even on a Rapsberry Pi 3 Model B+
  • ⏱️ Precise passing time detection (based on signal strength)
  • 🚗 Passing speed detection (based on signal strength)
  • 🧠 Adaptive filters enchance reception quality

Download: Windows users can download precompiled binaries; Raspberry Pi OS (64-bit) users can apt install openstint; on other platforms, compile from source.

Tutorials: cheapest setup with rtl-sdr | track setup tutorial | standalone decoder on a raspberry pi

Side-projects: openstint transponder | antenna preamplifier

To learn more how SDR works, watch Andreas Spiess explaining it.

Usage

./src/openstint_rtlsdr -g 20   # or ./src/openstint_hackrf -l 20 -v 20

Vehicle passings are printed to stdout and published with ZeroMQ at :5556. The easiest method for testing with real transponders is with a near-field magnetic probe (sub-$10 stuff, search on ebay/aliexpress or see Dave Jones DIY one).

Compile from source

Full Raspberry/Ubuntu tutorial here.

This project use libhackrf, rtl-sdr v4 drivers, liquidsdr, ZeroMQ/cppzmq and libfec as dependencies, all of which you have to install.

To use goodies in the integrations/ directory, sudo apt-get install python3 python3-zmq as well.

Note on Mac: we can't brew install libfec, compile and install it from source.

HackRF One users: there is a build flag SAMPLES_PER_SYMBOL, default to 8, resulting in 10 MSPS sampling rate and slightly larger dynamic range than of RTL-SDR. Lower CPU consumption is achievable by setting it to 2 (2.5 MSPS). Setting to 4 is not recommended (bad performance). RTL-SDR maxes out at the required minimum of 2.5 MSPS (SAMPLES_PER_SYMBOL=2), there is no way to fine-tune that.

Integrations

The primary method of 3rd-party integration with OpenStint is via ZeroMQ. The openstint process listens by default on port :5556, and acts as a ZeroMQ PUBLISHER for arbitrary number of clients.

The decoder protocol is documented under the docs/ directory.

Find some built-in integrations in the integrations/ directory.

Command line arguments

HackRF

openstint_hackrf -h
Usage: openstint_hackrf [-d ser_nr] [-l <0..40>] [-v <0..62>] [-a] [-b] [-p tcp_port] [-m] [-t]
	-d ser_nr   default:first	serial number of the desired HackRF
	-l <0..40>  default:24  	LNA gain (rf signal amplifier; valid values: 0/8/16/24/32/40)
	-v <0..62>  default:20  	VGA gain (baseband signal amplifier, steps of 2)
	-a          default:off 	Enable preamp (+13 dB to input RF signal)
	-b          default:off 	Enable bias-tee (+3.3 V, 50 mA max)
	-p port     default:5556	ZeroMQ publisher port
	-m          default:off 	Enable monitor mode (print received frames to stdout)
	-t          default:off 	Use system clock as the timebase (beware of NTP jumps)
	-s dir      default:.   	RC4 registry storage directory

RTL-SDR

openstint_rtlsdr -h
Usage: openstint_rtlsdr [-d ser_nr] [-g <gain_dB>] [-D] [-b] [-p tcp_port] [-m] [-t]
	-d ser_nr   default:first	serial number of the desired RTL-SDR
	-g <dB>     default:20  	tuner gain in dB
	-b          default:off 	Enable bias-tee (+4.5 V)
	-p port     default:5556	ZeroMQ publisher port
	-m          default:off 	Enable monitor mode (print received frames to stdout)
	-t          default:off 	Use system clock as the timebase (beware of NTP jumps)
	-s dir      default:.   	RC4 registry storage directory

Contribution

Submit PRs according to the project's core values:

  • it should be and remain a solution for small-scale clubs and friendly gatherings
  • it should run on constrained hardware (Raspberry Pi 3 Model B+)
  • the interfaces should be simple and well documented (to promote 3rd-party integration)
  • "does one thing and one thing well" phylosophy

Otherwise, I'll to adhere myself to the C4 community process.

About

RC laptiming decoder using HackRF One or RTL-SDR software defined radio

Topics

Resources

Stars

20 stars

Watchers

2 watching

Forks

Releases

Contributors

Languages