Hacking, HAM Radio (EA1IYR), DSP, physics and more


SigDigger 0.3.0 is out!

Hi everyone! I am happy to announce the release of SigDigger 0.3.0. This release is the result of one year of intense feature development, code quality improvements and documentation. Yes, you read well, starting from SigDigger 0.3.0, all releases will feature an updated User Manual (download it here!).

This release will not be a mere tag in the Git history, but also a change in the development paradigm. From now on, I will focus my efforts on the development of plugins (yes, SigDigger now supports plugins! See an example APT decoder plugin here), fixing bugs and documenting existing features. The rationale for this decision is that you can only make generic signal analysis up to certain point. Past this point, you will need more and more specialized features, and this will be possible by means of the extensible inspector programming interface. Documentation of SigDigger’s internal API is on its way.

What’s new

The list of improvements and new features with respecto to SigDigger 0.2.0 is huge and it would occupy most of this post. Nonetheless, most of them fall in the following categories:

Improved user interface

The old dock-based interface has been replaced by a collapsable panel UI. Side panels like Audio, Inspection, FFT now belong to the Radio spectrum tab. This leaves more window space for the inspection tabs. This collapsable panel UI has also been applied to the inspector tab controls and the Time Window.

SigDigger 0.3.0 also features a new Time Slider widget (which enables random, mouse-guided seeking in file sources), an OpenGL waterfall (which stores the waterfall as an OpenGL texture and enables smooth full-waterfall zoom) and a faster waveform view.

Suscan improvements

The most important change in SigDigger’s DSP core (Suscan) is related to internal object handling. Inspectors have been completely rewritten to enable subcarrier inspection and TLE-based frequency correction. Other important change is the switch to YAML config files, resulting in smaller and more readable data files and configuration files.

Regarding remote analyzer support, lots of bugfixes and testing resulted in a more stable remote protocol, with support for multicast spectrum updates.

Other new features are spectrums normalized by the sample rate and general performance optimizations.

Plugin support

SigDigger 0.3.0 is the first release to support plugins. Internally, plugins register feature factories that are in charge of creating different types of UI (and non-UI) objects. Currently, plugins can register factories for generic UI components, side panels, tab widgets and inspector tabs.

This feature implied a fundamental refactor of one of the biggest, most inelastic and most problematic objects of SigDigger: the UI mediator. This object was meant to synchronize every UI component with the rest of the GUI. However, as SigDigger evolved, the complexity of the UI mediator became intractable. This refactor offloads most of its complexity to the new UI component abstraction, resulting in a more maintainable (and extensible) code.

Generic inspector interface

Since the new plugin capability enables the definition of ad-hoc inspector views, the traditional inspector view now is named the Generic Inspector. Apart from the naming, it features a new Symbol autocorrelation view and an improved Data forwarding tool. The user can now choose the appropriate inspector type before clicking “Open inspector”.

Regarding the Windows build, I am afraid a fully-working stable release will have to wait for now (although it will be included in development builds from time to time). Porting issues turned out to be bigger than expected, and their resolution implies fixing two APIs that are fundamentally flawed (namely MinGW’s poll() and Microsoft’s Winsock, check the user’s manual for details). Although these issues only affect remote analyzers, they prevent me from making a stable release for Windows.