Git Product home page Git Product logo

gqrx's Introduction

Gqrx

CI Build

Gqrx is an open source software defined radio (SDR) receiver implemented using GNU Radio and the Qt GUI toolkit. Currently it works on Linux and Mac with hardware supported by gr-osmosdr, including Funcube Dongle, RTL-SDR, Airspy, HackRF, BladeRF, RFSpace, USRP and SoapySDR.

Gqrx can operate as an AM/FM/SSB receiver with audio output or as an FFT-only instrument. There are also various hooks for interacting with external applications using network sockets.

Screenshot of the main Gqrx window

Download

Gqrx is distributed as a source code package and binaries for Linux and Mac. Many Linux distributions provide gqrx in their package repositories. Alternate Mac support is available through MacPorts and Homebrew. Windows support is available through radioconda.

Usage

It is strongly recommended to run the volk_profile utility before running gqrx. This will detect and enable processor-specific optimisations and will in many cases give a significant performance boost.

The first time you start gqrx it will open a device configuration dialog. Supported devices that are connected to the computer are discovered automatically and you can select any of them in the drop-down list.

If you don't see your device listed in the drop-down list it could be because:

  • The driver has not been included in a binary distribution
  • The udev rule has not been properly configured
  • Linux kernel driver is blocking access to the device

You can test your device using device specific tools, such as rtl_test, airspy_rx, hackrf_transfer, qthid, etc.

Gqrx supports multiple configurations and sessions if you have several devices or if you want to use the same device under different configurations. You can load a configuration from the GUI or using the -c command line argument. See gqrx --help for a complete list of command line arguments.

Tutorials and howtos are being written and published on the website https://gqrx.dk/

Known problems

See the bug tracker on Github: https://github.com/gqrx-sdr/gqrx/issues

Getting help and reporting bugs

There is a Google group for discussing anything related to Gqrx: https://groups.google.com/g/gqrx This includes getting help with installation and troubleshooting. Please remember to provide detailed description of your problem, your setup, what steps you followed, etc.

Please stick around and help others with their problems. Otherwise, if only developers provide user support there will be no more time for further development.

Installation from source

The source code is hosted on Github: https://github.com/gqrx-sdr/gqrx

To compile gqrx from source you need the following dependencies:

Gqrx can be compiled from within Qt Creator or in a terminal:

For command line builds:

$ git clone https://github.com/gqrx-sdr/gqrx.git gqrx.git
$ cd gqrx.git
$ mkdir build
$ cd build
$ cmake ..
$ make

On some systems, the default cmake release builds are "over-optimized" and perform poorly. In that case try forcing -O2 using

export CXXFLAGS=-O2

before the cmake step.

For Qt Creator builds:

$ git clone https://github.com/gqrx-sdr/gqrx.git gqrx.git
$ cd gqrx.git
$ mkdir build
Start Qt Creator
Open gqrx.git/CMakeLists.txt file
At the dialog asking for build location, select gqrx.git/build
click continue
If asked to choose cmake executable, do so
click continue
click the run cmake button
click done
optionally, on the Projects page, under Build Steps/Make/Additional arguments,
	enter -j4 (replacing 4 with the number of cores in your CPU).
Use Qt Creator as before

Debugging

Debug logging can be enabled by setting the QT_LOGGING_RULES environment variable:

QT_LOGGING_RULES="*.debug=true;plotter.debug=false;qt.*.debug=false" gqrx

To turn on plotter debugging as well, use the following command:

QT_LOGGING_RULES="*.debug=true;qt.*.debug=false" gqrx

Credits and License

Gqrx is designed and written by Alexandru Csete OZ9AEC, and it is licensed under the GNU General Public License.

Some of the source files were adapted from Cutesdr by Moe Weatley and these come with a Simplified BSD license.

The following people and organisations have contributed to gqrx:

  • Alex Grinkov
  • Alexander Fasching
  • Andrea Merello
  • Andrea Montefusco, IW0HDV
  • Andy Sloane
  • Anthony Willard
  • Anton Blanchard
  • AsciiWolf
  • Bastian Bloessl
  • Ben Reese
  • Bob McGwier, N4HY
  • Brandonn Etheve
  • charlylima
  • Chris Kuethe
  • Christian Lindner, DL2VCL
  • Clayton Smith, VE3IRR
  • Dallas Epperson
  • Daniil Cherednik
  • Darin Franklin
  • Davide Gerhard
  • Dominic Chen
  • Doron Behar
  • Doug Hammond
  • Edouard Lafargue
  • Elias Önal
  • Federico Fuga
  • Frank Brickle, AB2KT
  • Frank Werner-Krippendorf, HB9FXQ
  • Ganael Laplanche
  • Gisle Vanem
  • Göran Weinholt, SA6CJK
  • Grigory Shipunov
  • Gwenhael Goavec-Merou
  • Herman Semenov
  • Jaroslav Škarvada
  • Jeff Long
  • Jiawei Chen
  • Jiří Pinkava
  • Joachim Schueth, DL2KCD
  • Jon Bergli Heier
  • Josh Blum
  • Kate Adams
  • Kenji Rikitake, JJ1BDX
  • Kitware Inc.
  • Konrad Beckmann
  • Luna Gräfje
  • luzpaz
  • Marco Savelli
  • Markus Kolb
  • Michael Dickens
  • Michael Lass
  • Michael Tatarinov
  • Moe Weatley
  • Nadeem Hasan
  • Nate Temple
  • Nick Robinson, KE5YWP
  • Nokia
  • Oliver Grossmann, DH2WQ
  • Pavel Milanes, CO7WT
  • Pavel Stano
  • Phil Vachon
  • Radoslav Gerganov
  • Rob Frohne
  • Ron Economos, W6RZ
  • Ruslan Migirov
  • Russell Dwarshuis, KB8U
  • Ryan Volz
  • Shuyuan Liu
  • Stefano Leucci
  • Sultan Qasim Khan
  • Sylvain Munaut
  • Tarmo Tanilsoo
  • Tomasz Lemiech
  • Timothy Reaves
  • Valentin Ochs
  • Vesa Solonen
  • Vincent Pelletier
  • Vladisslav P
  • Will Scales
  • Wolfgang Fritz, DK7OB
  • Youssef Touil
  • Zero_Chaos

Some of the icons are from:

  • The GNOME icon theme CC-SA 3.0 by GNOME icon artists
  • Tango icon theme, Public Domain by The people from the Tango! project
  • Mint-X icon theme, GPL by Clement Lefebvre

Also thanks to Volker Schroer and Alexey Bazhin for bringing Funcube Dongle Pro+ support to GNU Radio and Gqrx.

Let me know if somebody is missing from the list.

Alex OZ9AEC

gqrx's People

Contributors

alexf91 avatar antonblanchard avatar argilo avatar azorg avatar cat-ion avatar charlylima avatar ckuethe avatar csete avatar dk7ob avatar es5nhc avatar hb9fxq avatar jiri-pinkava avatar kb8u-gqrx avatar kolbma avatar kukabu avatar luzpaz avatar michaellass avatar michaelld avatar nhasan avatar oxapentane avatar pinkavaj avatar ryanvolz avatar sultanqasim avatar teaalltr avatar treaves avatar ulrichloose avatar vladisslav2011 avatar vpelletier avatar willcode avatar zerochaos- avatar

Stargazers

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

Watchers

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

gqrx's Issues

Implement new AGC

The current AGC blocks available in GNU Radio do not seem to be suitable for AM-type analog communication. In particular the blocks have no knowledge of the sample rate, different attack and decay rates must be chose for different rates. Furthermore, none of the blocks have 'hang time' which is very useful for voice and morse code comms.

Currently we use the gr-agc2 block and I have found it very difficult to tune it to get some proper behavior (failed).

We should take a look at some of the other AGCs avaialble out there, e.g. Dttsp and Cutesdr.

Nicer graphics for SSI

Replace the triangular marker on the signal strength indicator with something nicer, e.g. a solid or gradient bar, see e.g. qtmm.

Some devices detected as RTL2838UHIDIR

A device reported by rtl_test as "ezcap USB 2.0 DVB-T/DAB/FM dongle" appears as "Realtek RTL2838UHIDIR SN: 00000013". The device works fine, it's just confusing.

Pink waterfall (symptom)

After issue 36 (writing to waterfall) was resolved and I fetched the git tip and rebuilt gqrx,, it continued to work normally for me for a short while, then something seemed to go persistently wrong. The symptom was a Pink waterfall - no audio underflows or overflows were reported. Reconnecting the FCD didn't help, nor did rebooting.
The next day I upgraded to the git tip but the issue persisted. The FCD seemed to work OK with gnuradio.

I cloned the git tip again today and tried to figure out what the problem might be with a fresh build, and discovered that if left long enough, the pink waterfall gradually fades down to the usual blue colour and the receiver starts to work. This may take from roughly 30 secs to over perhaps 90 secs, before a sensible level is shown on the FFT plot and waterfall. The dBFS value starts at "inf" and after a while shifts to about 350dBFS then winds down to a sane value after a while.

I notice that the I/Q values shown on stdout have unusual values, which become normal after some time:

AVG I/Q: -6.48728e+32/-0.000379419
AVG I/Q: -2.35081e+32/-0.000515609
AVG I/Q: -8.51869e+31/-0.000569706
AVG I/Q: -3.08694e+31/-0.000588061
AVG I/Q: -1.11862e+31/-0.000594157
AVG I/Q: -4.05358e+30/-0.000593843
AVG I/Q: -1.4689e+30/-0.00059447
AVG I/Q: -5.3229e+29/-0.000593402
AVG I/Q: -1.92887e+29/-0.000595783
AVG I/Q: -6.9897e+28/-0.000598192
AVG I/Q: -2.53287e+28/-0.000597032
aUAVG I/Q: -1.47904e+33/-0.000599944
AVG I/Q: -5.35962e+32/-0.000597073
AVG I/Q: -1.94218e+32/-0.000600439
AVG I/Q: -7.03793e+31/-0.000594943
AVG I/Q: -2.55035e+31/-0.000597479
AVG I/Q: -9.24176e+30/-0.000594425
AVG I/Q: -3.34896e+30/-0.000595716
AVG I/Q: -1.21357e+30/-0.00059777
AVG I/Q: -4.39764e+29/-0.000597115
AVG I/Q: -1.59358e+29/-0.000595978
AVG I/Q: -5.77471e+28/-0.000595082
AVG I/Q: -2.09259e+28/-0.000597014
AVG I/Q: -7.58298e+27/-0.00059915
AVG I/Q: -2.74786e+27/-0.000599379
AVG I/Q: -9.9575e+26/-0.000599158
AVG I/Q: -3.60832e+26/-0.000598093
AVG I/Q: -1.30756e+26/-0.000599042
AVG I/Q: -4.73822e+25/-0.000599934
AVG I/Q: -1.717e+25/-0.000597861
AVG I/Q: -6.22194e+24/-0.000598523
AVG I/Q: -2.25466e+24/-0.000599039
AVG I/Q: -8.17025e+23/-0.000594522
AVG I/Q: -2.96067e+23/-0.000597709
AVG I/Q: -1.07287e+23/-0.000599587
AVG I/Q: -3.88777e+22/-0.000597121
AVG I/Q: -1.40882e+22/-0.000597989
AVG I/Q: -5.10517e+21/-0.000596092
AVG I/Q: -1.84998e+21/-0.00059905

then later:

AVG I/Q: -0.000996173/-0.000599633
AVG I/Q: -0.000994948/-0.0005997
AVG I/Q: -0.000994425/-0.000595451
AVG I/Q: -0.000995082/-0.000597237
AVG I/Q: -0.000993751/-0.0005978
AVG I/Q: -0.000994039/-0.000599771
AVG I/Q: -0.000997688/-0.000597842
AVG I/Q: -0.000993183/-0.000601268
AVG I/Q: -0.000993793/-0.000602623
AVG I/Q: -0.000993176/-0.000597503
AVG I/Q: -0.000994207/-0.000601616
AVG I/Q: -0.000994689/-0.000602554
AVG I/Q: -0.000991886/-0.000602674
AVG I/Q: -0.00099506/-0.000599918

Hopefully this report will be of some use. I've been dabbling with gnuradio, grc, gqrx, the FCD and my newly acquired USRP for a week or two now and have a fair amount of confidence that hardware and software builds are good and well configured.

Restore gain level after program start

When I close gqrx, the gain is (more or less correctly) stored in the configfile eg as "gain=0.5".

When I start gqrx again, the gain level is always at -20dB.

Raw I/Q passthrough

Allow bypassing the demodulator directly sending the band pass filter output to the two-channel audio out (resampled to audio rate).

Missing FCD controls

Following important FCD controls are still missing:

  • Preamp gain.
  • I/Q corrections

Scan active frequencies

While monitoring a certain frequency that includes several nearby channels, it could be awesome to have an option to scan them:

  • Define a group of receivable channels in the current frequency range (by receiver offset)
  • Set an arbitrary order on selected channels
  • Automatically tune receiver to first channel in set that is active (above squelch level)

I would like to take a stab at implementing this myself. I'm assuming the GUI is the easy part. Basically, I need a hook that allows me to inspect the signal after passing through FFT, determine if any of the selected channels are above squelch, and if so, set the receiver frequency to that channel.

Any pointers to places in the code I want to look at would be awesome.

gqrx crashes on fcd freq change

When performing a fast frequency change (multiple changes after each other eg. scrolling on the frequency number) using the Funcube Dongle, gqrx crashes:

(gdb) bt
#0  0x00007ffff04350d8 in libusb_submit_transfer () from /usr/lib/libusb-1.0.so.0
#1  0x00007ffff0436db0 in libusb_control_transfer () from /usr/lib/libusb-1.0.so.0
#2  0x00007ffff3fb6ee9 in ?? () from /usr/lib/libgnuradio-fcd-3.6.4git.so.0.0.0
#3  0x00007ffff3fb73f2 in ?? () from /usr/lib/libgnuradio-fcd-3.6.4git.so.0.0.0
#4  0x00007ffff3fb80af in fcdAppSetFreq () from /usr/lib/libgnuradio-fcd-3.6.4git.so.0.0.0
#5  0x00007ffff70eae62 in ?? () from /usr/lib/libgnuradio-osmosdr.so.0
#6  0x00007ffff70ceca2 in ?? () from /usr/lib/libgnuradio-osmosdr.so.0
#7  0x0000000000427a7a in ?? ()
#8  0x000000000041f5ec in ?? ()
#9  0x0000000000468250 in ?? ()
#10 0x00007ffff5a06b8f in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
#11 0x000000000046a05d in ?? ()
#12 0x000000000045579a in ?? ()
#13 0x0000000000456222 in ?? ()
#14 0x000000000045644d in ?? ()
#15 0x00007ffff5f69c84 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
#16 0x00007ffff6314d36 in QFrame::event(QEvent*) () from /usr/lib/libQtGui.so.4
#17 0x00007ffff5f1a18c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#18 0x00007ffff5f1f0ad in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#19 0x00007ffff59f16ae in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#20 0x00007ffff5f8468d in ?? () from /usr/lib/libQtGui.so.4
#21 0x00007ffff5f95d5e in ?? () from /usr/lib/libQtGui.so.4
#22 0x00007ffff5f94861 in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/libQtGui.so.4
#23 0x00007ffff5fbaa22 in ?? () from /usr/lib/libQtGui.so.4
#24 0x00007ffff2828845 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#25 0x00007ffff2828b78 in ?? () from /usr/lib/libglib-2.0.so.0
#26 0x00007ffff2828c34 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#27 0x00007ffff5a1fb66 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#28 0x00007ffff5fba69e in ?? () from /usr/lib/libQtGui.so.4
#29 0x00007ffff59f03ff in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#30 0x00007ffff59f0688 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#31 0x00007ffff59f5328 in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
#32 0x000000000041a3b9 in ?? ()
#33 0x00007ffff4abba15 in __libc_start_main () from /usr/lib/libc.so.6
#34 0x000000000041ae51 in ?? ()

Frequency limits

Currently, any frequency can be entered regardless of what the input device supports. The frequency range is available to us for each supported device and shall be used in gqrx to limit what the user can enter.

Fix signal strength indicator

The signal strength indicator measures approximately 20 dB more than what is shown on the FFT scope.
The scale is also incorrect.

Exceptions

This is general issue that concerns exceptions.

Many GNU Radio blocks throw an exception in their constructor if something goes wrong. Currently, gqrx doesn't catch any of these so the application will just crash. We should catch the exception and have a safe fallback or bail out with error messages that users can understand.

Toolbar

The main toolbar should include shortcuts to common function.
The controls available via the toolbar should provide a set that would be sufficient for first time users:

  • Input source (TBC when/if we will have multiple preconfigured sources)
  • Demodulator (operating mode)
  • Audio gain

Doppler shift correction

Support doppler shift correction through interface with (g)predict.

This feature would allow the use of gqrx in a more permanent satellite ground station setup where the system will be running unattended. For example as a permanent telemetry receiver for a specific satellite, where the audio will be passed directly to a TNC.

We will have a look at implementing this ourselves, but would like your comment on the idea.

Regards,
Johan Christiansen
GomSpace ApS
Aalborg, DK.

Demod proxy

Add a "dummy" block in between the demodulator and the audio blocks to make reconfiguration simpler when the demodulator is changed.
This block could also act as resampler between demodulator and audio, allowing higher bandwidth demodulators (currently the BPF downsamples to 48k)

FFT plot settings

The FFT plot has methods for setting the min/max dB as well as the split ration between pandapter and waterfall. We could take advantage of these by connecting them to slider widgets.
The FFT rate should be adjustable too.

audio_alsa_sink[hw:0,0]: snd_pcm_hw_params failed

There is a problem with the ALSA sink which causes a runtime error when we reconfigure the flow graph. This is the case when we change mode and bandwidth. The error message is:

audio_alsa_sink[hw:0,0]: snd_pcm_hw_params failed: File descriptor in bad state
terminate called after throwing an instance of 'std::runtime_error'
what(): check topology failed on audio_alsa_sink(1) using ninputs=1, noutputs=0

Following this suggestion, we can prevent this from happening by adding a static boolean flag that controls whether snd_pcm_hw_params() should be called or not.

A simple patch to implement this is available here: https://gist.github.com/664132

Audio capture and playback

Add the convenient 1-click audio recording and playback that was available in the original Python gqrx.

FFT performance improvements

Currently and FFT is performed as soon as there are enough samples in the buffer and this is done independently of the the refresh rate of the FFT plot. We can save CPU by accumulating samples in a buffer and only call the FFT function when the FFT plot requests a new data set.

UHD support

Add support for UHD devices from Ettus Research.

Bookmarks

A very nifty feature could be to have bookmarks on arbitrary frequencies, such that a user can:

  • Set a bookmark on a given frequency
  • Have that bookmark show up as a vertical line on both the spectrum and the waterfall
  • Give bookmark a title and a short description to easily mark known frequencies
  • Clicking on viewable bookmarks would set receiver frequency to tune to it

BPSK1000 demodulator

Integrate Phil Karn's BPSK1000 demodulator into gqrx so that we can receive BPSK1000 from ARISSat without messing with audio. It would be nice if we could test it during the test activation 30-31 July.

Application crashes

The introduction of the FFT performance improvement (issue #23) has triggered an application crash:

  • start DSP processing and let it run for a short while
  • start doing stuff in the GUI (change frequency, move filter)

Application will crash with SIGSEGV or SIGABRT in CPlotter::draw()

Although overall application performance has been significantly reduced, the FFT timeout function now takes longer since the actual FFT calculation are now also performed during this cyclic processing and it could be a race condition between the FFT drawing and drawing due to user actions. Increasing the timeout from 100ms to 500ms makes the problem disappear.

gqrx filled my root filesystem

My new Linux laptop moaned the other day about having a full root FS, which is on a separate 59GB partition from /home. After a little digging it turned out that a pair of files in /tmp were being continually written to by gqrx. gqrx seems so stable on my new laptop that I have a habit of leaving it running continuously, and these files can get quite big.

I thought that I may have enabled recording, but subsequently I've concluded that gqrx just writes to these files all the time. It seems to overwrite them next time it is started.

darren@len:~/src$ ll /tmp | grep gqrx
-rw-rw-r-- 1 darren darren 2811801600 2012-02-06 19:12 gqrx.bin
-rw-rw-r-- 1 darren darren 351473664 2012-02-06 19:12 gqrx.wav

I'm running from the git tip, this is the latest change:

commit 80ed78c
Merge: cfad8ec 6180f8b
Author: Alexandru Csete [email protected]
Date: Wed Feb 1 13:01:21 2012 -0800

Merge pull request #35 from jrcutler/master

Implemented FCD frequency correction

Cheers,

Darren, G0HWW

Scheduled recordings

A scheduler that allows recording I/Q data and/or audio starting at a specific time. An option shall allow the user to select a satellite pass rather than enter date, time and duration manually.

Data decoder interface

Create an interface where gqrx can interact with externa data decoder via stdin and stdout, i.e. gqrx sends raw audio samples to the stdin of the decoder and reads text output from the stdout of the decoder. To begin with the decoded text can be shown in a simple text browser,

Implement WFM

Currently, the "BC (75k)" setting does not set any of the FM demodulator parameters. Since the quad rate is now 96 ksps we can implement the WFM settings as well.

Satellite tracking module

The satellite tracking module shall be able to track satellites in real time and compensate for Doppler shift.
The Doppler shift is calculated from the range rate of the satellite. Together with the current demodulator frequency, the nominal satellite frequency is estimated. Hereafter the Doppler shift can be compensated at the channel filter level.

The satellite module should also have an interface to the scheduler so that the user can schedule recordings according to satellite passes instead of manually entering date and time.

FCD frequency correction not implemented

Changes to the frequency correction value in the FCD configuration panel are discarded, and the ability to change frequency correction is not implemented in the rx_source_fcd class.

Implement squelch

Add squelch block that was available in the original python version.

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.