How to connect any SeedLink seismograph to ZejfSeis
Seedlink_ZejfSeis code. A lightweight C daemon that streams real-time data from a SeedLink server to ZejfSeis visualization software by decoding MiniSEED records into the ZejfSeis protocol format.
If you have ever dived into the world of amateur or open-source seismology, you know that one of the biggest challenges is not just capturing the earth's shaking, but visualizing that data clearly, intuitively, and in real time.
This is where ZejfSeis shines—an extraordinary visualization software that processes seismic signals with amazing ease. However, the original project was born with a significant limitation: it was specifically designed to work with very specific hardware (Arduino and the ADS1256/1263 chips) through its own custom communication protocol. The problem? It remained completely isolated from SeedLink, the absolute and indisputable industry standard in professional seismology worldwide.
To resolve this lack of compatibility and bring together the best of both worlds, Seedlink_ZejfSeis V.1.0.0 has just been born.
The Technical Bridge: From Professional Seismology to Your Screen
Seedlink_ZejfSeis is a lightweight daemon written in C that acts as a real-time "translator". It connects as a client to any remote SeedLink server, receives and decodes industry-standard MiniSEED records, and instantly re-broadcasts them using the native ZejfSeis protocol format.
โโโโโโโโโโโโโโโโโโโโโโโ SeedLink v2 โโโโโโโโโโโโโโโโโโโโโ
โ Remote SeedLink โ โโโโโโโโโโโโโโโโโโโโโโโโโโบ โ seedlink_zejf โ
โ Server โ HELLO/STATION/SELECT/ โ (this program) โ
โ (e.g. EqCitizen) โ DATA/END → MiniSEED v2 โ โ
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโฌโโโโโโโโโโโ
โ ZejfSeis protocol
โ (TCP, port 6222)
โโโโโโโโโโผโโโโโโโโโโโ
โ ZejfSeis Client โ
โ (Java, desktop) โ
โโโโโโโโโโโโโโโโโโโโโ
Thanks to this approach, you no longer need the exact hardware that ZejfSeis was originally developed for. Now you can enjoy its powerful graphics and visual documentation tools using any SeedLink-based seismograph or network.
Main Features of the Project
To ensure that the data flow remains constant and does not interfere with system performance, the software was designed under a robust and efficient architecture:
-
Ultralight Performance in C: Developed on a native multi-threaded environment (POSIX threads) to guarantee minimal latency in delivering seismic waves.
-
Standard Decoding: Integrates the official
libmseedlibrary (version >= 3.x) to parse MiniSEED v2 and v3 records effortlessly. -
Zero Storage Consumption: Responds intelligently to historical data requests from clients with empty blocks. All processing happens entirely in live memory; it requires absolutely no disk space.
-
Massive Multi-Client Support: Capable of feeding up to 32 ZejfSeis clients simultaneously from a single SeedLink source.
-
Network Resilience: Features an automatic 5-second reconnection system if the remote SeedLink server experiences micro-outages, in addition to proactively sending dynamic heartbeats every 2 seconds to prevent client-side socket read timeouts.
-
External Configuration via JSON: Forget about recompiling the code every time you want to change stations. Parameters such as host, port, network, station, and channel are easily managed from a
ranges.jsonfile.
Ready for Production and Secure Environments
A critical detail that sets this project apart from other home developments is its strong focus on security and deployment stability. When exposing any service over a network, resilience is fundamental. Therefore, the project documents and integrates infrastructure hardening guidelines from the ground up:
Using Nginx as a Reverse Proxy: Instead of directly exposing the C binary's native port to the public Internet, using Nginx in TCP
streammode is highly recommended. This helps mitigate abuse and DoS attacks by limiting simultaneous connections per IP (limit_conn) and isolates the C service so it listens exclusively on the local environment (127.0.0.1).
Additionally, a mitigation layer against automated abuse is included using Fail2ban. By monitoring the connection logs generated by Nginx, the system can detect clients that cycle connections abnormally or perform malicious brute-force probing, temporarily blocking them via firewall rules at the operating system level.
Conclusion: Democratizing Access to Seismic Data
The true value of Seedlink_ZejfSeis lies in its accessibility. By breaking open a closed ecosystem of custom protocols, any seismology enthusiast, educational station, or citizen monitoring network node (such as the EqCitizen project) can leverage the full potential of the ZejfSeis interface.
The project has already been successfully tested in Linux environments under Ubuntu 24.04.4 LTS. If you want to deploy it on your own server or review the source code, you can find all the technical documentation, compilation steps, and configuration examples verbatim in the seedlink_zejf_README.md file within the repository.
https://github.com/vivesweb/Seedlink_ZejfSeis