Giter VIP home page Giter VIP logo

timestampsdr's Introduction

About:

timestampSDR is designed to take the UDP stream output from certain SDR receiver software (currently GQRX and rtl_fm) and record transmissions to time-stamped .wav files, discarding silence. This can allow you to quickly review transmissions that occurred over a long period of time.

  • ✔️ Works on Linux running GQRX or rtl_fm
  • ✔️ Works on Windows 10 running GQRX via pothosSDR
  • ❔ Should work on MacOS, but not tested (seeking feedback!)

Getting started:

  • Must have node.js installed.
  • Clone this repo, or download it and extract the zip file.
  • Navigate to the program directory and run npm install to install the program dependencies.
  • Refer to the wiki for instructions on setting up your SDR receiver software. Currently this includes GQRX and rtl_fm. GQRX is more user-friendly and seems to provide better audio, rtl_fm runs efficiently on low-spec devices.
  • Regardless of your receiver software, make sure your squelch is adjusted well. timestampSDR cannot differentiate static from meaningful transmissions.

Usage:

node main.js [options]

Option Description Default
--timeout After transmission, wait seconds before saving/deleting file and moving on 5
--minDuration After timeout, if recording was less than seconds, file is deleted 5
--maxFiles Number of files to save before exiting program 5
--dateFmt Date formatting: "datetime", "unix", or custom moment.js format "datetime"
--sampleRate Sample rate in Hz 48000
--channels 1 for mono, 2 for stereo, etc 1
--bitDepth Bits per sample 16
--host Local IP address serving data "127.0.0.1"
--port Local UDP port serving data 7355
-p Print options used and source they were chosen from (CLI, config file, default)

Note:

  • Recordings are saved in the recordings subdirectory in the main program directory.
  • Timeout resets if a new transmission comes in before timeout finishes.
  • Silence is not recorded, and doesn't count towards minDuration.
  • To set your own default options (which can be overridden by passing in arguments), you can modify config.js.

timestampsdr's People

Contributors

qualitymanifest avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

timestampsdr's Issues

How to know that file already recorded and not in recording stage ?

Hello, maybe I am wrong but I found that timestampSDR works using the following algorithm.
When timestampSDR receives sound it creates file somename.wav and appends transmission based on timeout settings. When timeout exceed it creates another file somename2.wav and appends transmission.
I am writing tool for sync somename.wav with my storage. The idea is to search all *.wav in folder, sync them and delete. How can i know that somename.wav is already recorded and not in process of recording. On my opinion good idea would be to write file with some other name somename_in_process.wav and after timeout exceeds rename to somename.wav. In this case I would exactly know which file is already recorded.

Or maybe there is some other method to find which file already recorded ?

Create option to set a delay before starting a timeout

Since 100% of zero-padded messages are thrown out, fragments of separate transmissions are recorded right up next to each other, which can make them hard to understand sometimes.

It would be good to have a timeoutDelay option which allows the user to set a delay in milliseconds where zero-padded (silent) messages are briefly recorded after a transmission stops. After this timeout delay completes, it should call the main timeout. Of course, if a message comes in during the timeout delay, it should cancel the timeout.

Create maxStorage setting

While maxFiles can be used to limit how many files are recorded before ending the program, there currently is not an option to ensure that recordings don't take up too much storage space.

There should be an optional maxStorage setting that accepts a number in megabytes, which checks on some arbitrary intervals (maybe once a minute?) to make sure that the size of the recordings directory isn't too large. If so it should save the current file if there is one, and close the UDP listener.

Resampling with SOX

Hello,
I want to run rtl_fm with 8kHz, but timestampSDR needed 48kHz input. You advice to resample with -s <whatever> -r 48k options. But in this case I catch an error. Moreover keenerd wrote using -r option is also a very poor quality resampler. Use sox for resampling.

Have you tried to use sox to resample ? Can you give an advice how to make proper pipeline?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.