On a crisp late‑morning evening the sailor turned to his kitchen island, where a small stud‑mounted box—a clone of the LibreSDR B210—waited. The board, a repurposed daughter unit from a popular Linux‑friendly SDR, clung to the rack with a simple USB‑C cable. He inspected the silk‑screened markings, noting the familiar b210 badge, and watched the lights blink to life as it warm‑up‑d rumbled in the quiet of the cabin.
He opened a terminal and installed the modem’s driver stack with the command: sudo apt install gnuradio osmosdr libkmod-dev. The osmosdr source block in GNU Radio Companion automatically detected the clone thanks to its virtual serial bus. Richard tuned the SDR to 518.0 kHz, the international NAVTEX frequency, and set the sample rate to 350 kHz to gather enough bandwidth for the slow‑moving, 50‑baud RTTY bursts.
He added a convex‑tuned low‑pass filter with a 1‑kHz cutoff and inserted an “Average‑IF Demod” block to remove the carrier. Because NAVTEX pulses are dwelt in each message, an I/Q demultiplexer was used: the real part fed a simple Rtty‑decoder configured for 50 baud, 50 Ns, and a 170 Hz tone. The post‑processing chain routed the decoded text into a Python script that snapshots the maritime alerts as plain text on the screen.
At 06:12 a calm low‑frequency hiss filled the air, followed by a rapid succession of 50‑baud tones. The RTTY decoder surfaced with a garbled line, but the script’s error‑correction flagged it as a window frame. In moments the message declared a heavy storm east of the Cape and the navigation buoy adjustments for the region. The sailor checked the console log—“NAVTEX on 518 kHz received successfully.”—and felt the boat’s rubber‑ty
It began on a rainy evening, when the LibreSDR B210 clone sat quietly on a workbench, a silent beacon awaiting its mission. The goal was simple yet ambitious: to bring the faded images of the world’s weather vortices into a crisp, digital gallery on a Linux workstation. The journey from raw signal to interpretable bitmap required a careful choreography of software components, each tuned to the peculiarities of weather fax (WEFAX) transmissions.
The B210 clone, engineered to mirror the famed Ettus B210, emerged as the best companion for surveying atmospheric chatter. It shipped with a 14‑bit ADC and 122 MHz sampling rate, just enough to capture the 50 kHz modulation of WEFAX. Installing the RTKLIB driver followed by the SoapySDR stack ensured the Linux kernel could speak the SDR language. A quick sudo soapy-test confirmed the device reported all channels, ready to sweep the skies.
Once the hardware was acknowledged, the next step was the software glue. The GNU Radio Companion (GRC) and the gr-wefax collection, recently updated to version 2024.1, offered a modular way to media‑shunt the raw samples into a weather‑fax decoder. The flow graph began with a Soapy SDR Source tuned to 137.77 MHz, a frequency where the most active WEFAX stations broadcast during daylight. A CW Demod block followed, converting the modulated audio to a near‑binary stream. Then, the fat days of testing gave way to a Wefax demodulator block, which in turn chased the embedded Hamming‑coded signals and produced a valid bitmap.
WEFAX transmissions are tricky, because each station’s tone duration can drift slightly. By comparing the captured trace against a known ST54 example from the National Climatic Data Center, I tweaked the symbol timing offset until the decoded grid align perfectly. A pair of filter corner frequencies at 9.5 kHz and 14.5 kHz trimmed the noise honey and let the image shine through like a sunrise.
The heart of the operation was a single command line that fired the GNU Radio flow graph and piped the output to gr-wefax-dbg, an optional debug logger. The command wrapped in a tmux session ensured that if the computer hiccuped, the reception would keep stream migrating. The console printed a jubilant ASCII banner when a new fax arrived: WEFAX Received: 2024-04-10 08:12 UTC, Station: NFY2. The subsequent Wefax-Decode script unpacked the packet, wrote a PNG file named NFY2_20240410.png, and opened it in the default image viewer.
At the end of the storm, the screen displayed a fresh rain icon, a barometric front, and a delicate corkscrew of tornado tracks. The image was crisp—lines strong, colors true to the original Fax—thanks largely to the recent gr-wefax 2024.1 algorithm that accounts for 120 Hz carrier offsets, a nuance that had plagued earlier versions. The story was subtle: a silent device, a stack of open‑source programs, and the relentless persistence of a user devoted to translating the sky’s secrets into pixels.
Standing back, I realized that the “story” was not just these steps, but the collaboration of developers, researchers, and hobbyists who kept the WEFAX community alive. In the end, the LibreSDR B210 clone was my stead, but the narrative was collective, a living chronicle of how technology and curiosity can paint the clouds in detail on any Linux screen.
When Alex first saw the LibreSDR B210 clone in the electronics shop, the smooth copper gears and the promise of low‑cost, high‑performance SDR captured his imagination. He had heard of the original B210 from Ettus and knew it used the Analog Devices AD9361 RF front‑end – a chip that could sample a wide range of radio bands. The clone, cloned from the same schematic, was essentially a drop‑in replacement, but it carried an international keypad and a cheap USB 3.0 interface that Alex was confident would work on his Windows machine.
Alex began by installing the libreSDR‑driver from the project’s GitHub releases. The ZIP package contained a quiet “Setup.exe” that, when run, added a new USB device class to Windows that the SDR head could be recognized as. With the driver successfully loaded, he opened SDR# (SDRSharp), the free Windows SDR front‑end that would become his command‑center. The program detected the B210 clone immediately, listing it under “devices” without requiring any additional software.
He then configured the device’s sample rate to 1 MS/s to keep the audio buffer stable while still capturing the entire 24 kHz NAVTEX channel. The factory defaults set the IF gain at 20 dB and the RF gain at 30 dB; Alex began with those values and was ready to adjust later.
In the SDR# main window, Alex entered 156.8 MHz into the frequency box, the international standard assigned to sea‑related NAVTEX broadcasts. The tuner lock became steady, and the waterfall display filled with faint blocks of activity that resembled distant stars.
He then turned to the information “VFO” pane and notice that the SDR# readout for signal strength was barely above background – a typical quietness for a maritime distress channel. The next step was to narrow the passband by concentrating the X window to a few kilohertz, allowing the narrowband dwell time to sharpen the signal as it sweeps across the dial.
While the SDR# display kept him grounded in the physical layer, Alex needed an application capable of demodulating the Text‑FMR format of NAVTEX. He downloaded the open source Grace decoder, which runs on Windows and includes a dedicated user‑interface for radio reception. With Grace installed, he simply selected the B210 as the audio source through Windows’ sound mixer.
Grace opened a waterfall view that automatically followed the 24‑kHz bandwidth and presented the decoded text in the bottom panel. Alex first saw the expected heading “N2" followed by the international warning message, and then the routine weather bulletin. The entire process felt like turning a dial and watching invisible information turn into words in real time.
Alex quickly realized that certain hours of the day yielded clearer messages. He observed that moments when the sea was calm and ships were docked produced less multipath interference, and the decoder’s error bars fell. To improve reception, he increased the RF gain to 40 dB and decreased the IF gain to 15 dB, which reduced aliasing and kept the signal below the decoder’s overload threshold.
Another tweak involved the B210’s antenna. Alex swapped the stock dipole for a half‑wave loop, aligning it as close to the maritime maritime frequency as possible. The loop’s inherently directional shape eliminated many off‑axis signals that cluttered the waterline readings.
When the signal was razor‑thin, Alex noticed that a single frame of NAVTEX information might slip. To cope, he enabled Grace’s automatic re‑decoding mode, which keeps listening for the next available message even after a packet is lost – a trick he read about on the project’s slack chat and applied with quick timing.
Once Alex had tuned, decoded, and collected a handful of NAVTEX bursts, he felt a powerful sense of connection to distant coastlines. The B210 clone, amplified by Windows’ rich ecosystem of SDR software, proved to be more than an affordable gadget; it became a bridge between him and the maritime world. The narrative of setting up the device, policing frequencies, and interpreting the encoded warnings felt like a personal adventure – each new signal a chapter in a story that could unfold right on his desktop.
Setting the Stage
Imagine you’re perched on a quiet terrace, a gentle breeze crinkling the newspaper beside you. Above you, invisible swaths of radio waves sweep the sky, and the faint hum of a satellite mission echoes in your headphones. With a LibreSDR B210 clone tucked in a portable case, you’re ready to turn that invisible hum into weather portraits—precise, early‑warning images of the planet’s clouds and storms. The journey from signal to screen is pure audio and math, but the end result is a tangible, human‑readable snapshot that can predict severe weather before it reaches your doorstep.
First, you need the right software foundation. The LibreSDR B210 clone speaks a language that Windows can understand if you equip it with the correct firmware and drivers.
1. Load the Bundled Firmware: Flash the newer “B210‑U3” firmware (the one that adds full SDR# compatibility) using the open‑source LibreSDR tools. The latest release at the time of writing, 3.1, includes a Windows 10/11 driver that auto‑detects on plug‑in.
2. Choose the Capture App: Two programs dominate the scene. SDR# (SDRSharp) is a veteran, shepherding signals effortlessly through its extensive plugin ecosystem. This year’s 4.0 release brings a dedicated WEFAX plugin that automatically scans the 2 GHz band for atmospheric fax reports. CubicSDR is another option, and its “Decode” mode can be paired with a companion script that feeds the raw data into Wavlink’s WEFAX decoder.
3. Set the Frequency: WEFAX satellites broadcast weather images between 2.100 GHz and 2.200 GHz. Noon UTC is the peak time for NOAA‑18 and NOAA‑19. Pick 2.115 GHz—tuned for the José Madero passive weather satellite channel—and use 5 kHz bandwidth for a clean capture.
With the hardware humming, the magic begins in the software. Inside SDR#, arm the WEFAX‑3.1 plugin. It watches the spectrum like a vigilant lighthouse keeper, waiting for the faint burst of a weather fax signal.
When a burst arrives—in a wave of S‑SB or USF modulation—the plugin pulls the raw complex samples and sends them to the built‑in demodulator. The demodulator then passes the data to WavLink’s WEFAX decoder, which deparses the fax format and reconstructs the image. In under a minute, a crisp scanned portrait of the world’s cloud‑top dance appears on your screen. The weather fax arrives every four hours from each satellite, providing a near‑real‑time snapshot of lightning heat‑signatures, frontal systems, and storm cell developments.
Because the LibreSDR B210 clone can record ADC samples in real time, you can also feed the raw data into SoX or GNU Radio for custom post‑processing. The open‑source community has just released WEFAX.Logger, a Windows fork that logs all received images with timestamped filenames, automatically pulling data from the B210 via SoX pipes. That way you can build a historical archive of weather conditions without leaving your desk.
When you stare at the latest WEFAX image, you notice the familiar pattern of white cloud tops braided over the ocean, tracing the edges of a tropical cyclone. The image’s pixel intensity hikes signal baroclinic development—an early warning that, in seconds, a severe thunderstorm might be rolling in. The LibreSDR B210 clone turns your computer into a personal meteorological observatory, decoding what meteorologists have been sending for decades in a different form.
In the months since the 3.1 firmware launch, the Linux kernel drivers for the B210 have stabilized, and Windows 11’s SMBus management now handles the USB power gating flawlessly. Thus, even on a power‑constrained laptop, you can capture multiple WEFAX satellites, compare the images side by side, and create your own “weather forecast” videos. The pre‑built SMA-COMINC DVB‑T adapter with a 2 GHz tuner plugs into the B210’s external RF‑ADC port, giving you near‑infinite bandwidth for satellite research.
In the end, the story isn’t just about hardware; it’s about listening to the sky, decoding its language, and letting the invisible become visible—all with a LibreSDR B210 clone and a handful of open‑source tools that keep growing brighter with each new satellite launch.
Jamie had been fascinated by the invisible waves that crisscrosses the air since childhood. After a recent trip to the coast, she wanted to capture the storm forecasts that were transmitted as weather fax images from the National Oceanic and Atmospheric Administration. Using a LibreSDR B210 clone on her Mac meant she could listen into the 2.3 GHz NOAA weather band and retrieve the pictorial forecasts streamed from the 100 kHz lines between 12 m and 20 m satellites.
Jamie connected the B210 to her Mac using a USB‑3.0 cable. The clone’s Raspberry Pi‑style enclosures make it plug‑and‑play, but she needed the latest driver package from the LibreSDR GitHub repository. Running:
brew install libusb git clone https://github.com/libreSDR/libreSDR cd libreSDR make sudo make install
installed the drivers that allowed macOS to communicate with the device at the 32 MHz clock speed required for full‑band capture.
Next she installed SDRangel through Homebrew, a cross‑platform SDR application that now supports the B210 on macOS:
brew install sdrangel
Once launched, she selected the B210 under “Source Settings”, set the center frequency to 2.303 GHz, and chose a sample rate of 12 Msps to keep the entire weather fax spectrum in view. With the “BPF” preset applied, the screen now showed a beautiful waterfall of RF power.
Jamie opened a new “WBFM” block in SDRangel and assigned it to the same 2.303 GHz stream. She configured the block to demodulate the narrow 50 Hz sub‑carrier used by weather fax and output the raster data to a local file named weather_fax.png. The software automatically sorted the 300‑line digital frames into the appropriate time intervals.
For the final conversion from raster to a human‑readable picture, she turned to the open‑source wfax tool, a late‑night gem that parses the 300‑line fax frames into standard image formats. After installing it with:
brew install wfax
she executed:
wavex -i <captured_frames.bin> -o weather_fax.png
The resulting image displayed a cloud‑chart in its native 300 dpi resolution, and Jamie could zoom in to see the moisture contour lines that NASA used for forecasting the next storm system on the horizon.
She then created a simple shell script that nightly ran SDRangel with the capture settings she’d chosen, piped the output through wfax, and pushed the new images to a cloud folder for her colleagues at the local meteorological station. When the system hit an error, SDRangel logged the message and returned control to the shell, ensuring that the weather fax stream never went unattended.
By late spring of 2026, Jamie’s setup had become a reliable source of real‑time weather fax imagery on macOS without relying on expensive commercial gear. The combination of the LibreSDR B210 clone, the robust SDRangel platform, and the lightweight wfax decoder turned a hobby into an indispensable tool for understanding the dynamic patterns over the ocean that would shape the next set of storms across the coast.
It began on a quiet evening in late October, the sky a deep slate canvas above the small hall where my sister and I had set up the B210 clone. The sun had dipped below the horizon, and the faint hum of the building’s HVAC machines was the only background noise. I clutched the plastic hand‑held antenna, a humble discone that had sat in a shoebox for years, and slid the firmware update onto the B210’s internal flash, watching the little LED blink in triumph.
“Now, let’s hear what the heavens are whispering,” I said to the radio, because if I didn’t, I felt it would be a waste of an entire system that could translate cosmic storms into real‑time images.
Weather satellites that share data in the 137‑MHz band—such as NOAA‑15, NOAA‑18, NOAA‑20, and the Japanese MET‑satellite family—broadcast in a continuous stop‑and‑go FM burst. The NOAA burst circulates from 137.1 MHz to 137.2 MHz in a 1‑second cycle, while the MET‑satellites shift slightly higher around 137.3 MHz. The B210’s 2‑Msps sample rate offers more than enough bandwidth for a 12‑kHz signal with all its sidebands and the surrounding FM spectrum we need for a robust link.
I set my desktop SDR software to an 860‑kHz sample bin—just broad enough to capture the entire burst while keeping the spectrum clean. Using CubicSDR, I slid the tuning knob to 137.15 MHz and listened as the first garbled burst from NOAA‑20 crackled through the speakers, its gentle 1‑Hz rhythm emerging from the noise, the delicate envelope of a weather satellite beating against the world.
Unlike a professional antenna array, my discone was a pirated, over‑the‑top garden pylon that spent most nights swaying under windstorms. I folded it down to reduce mechanical resonance, and a cheap ceramic Low‑Noise Amplifier (LNA) pepped it out. The LNA sits between the antenna and the B210’s tuner, scraping out 35 dB of gain where the signal was almost imperceptible. With that boost, I could comfortably hear NOAA bursts even when storm fronts moved from the sea into the land.
When the software flickered to 0.3 dB of automatic gain control, I did not panic. Instead, I let the hand of the software engage, tracing the fine spike corrections of the LNA’s bias rails. What I saw was a steady pressure of the quiet voice of the satellite, amplified into something almost musical.
NOAA’s data was encoded in 23 bit BPSK with a Hidden Markov channel, a modest challenge for the B210’s DSP pipeline. Using an open‑source demodulator written in Python, I piped the raw IQ data into a decoding loop that separated the weather burst from the sync words at the start of each frame. The decoder output 7‑bit ASCII text of the satellite’s GPS coordinates, a list of missed packets, and a tiny, raw JPEG image of the cloud cover.
The first successful decode, a 300‑pixel image of the Gulf Stream swirling across the Atlantic, was written to a file that blinked on my monitor with the same urgency as a breaking news alert. The satellite’s identifier flickered like a star, and the image re‑emitted a story more vivid than our telescope could ever be.
Later that night, a meteorological alert sent broadcasts over the 137‑MHz band from MET‑sat‑1A after a sudden microburst unpacked across the Pacific. The B210 caught the spectrum again, transcribed the meteor packet, and painted a blurry canvas of ash in the sky—an urgent, immediate glimpse of a storm that no ground‑based camera could capture in real time.
Now, each time the antenna swings back into gear, the B210’s firmware hums a quiet lullaby, the spectrum steadies under the new sweeps of weather satellites. We listen, decode, and convert radio signals into a vibrant record of the cyclones, the storms, and the
When the first time the little B210 clone sat in my hand, I knew it was a tiny gateway to a universe of radio waves. I had read that the device ships with standard firmware, but to truly explore the aural sky I decided to flash the TinySDR‑Firmware. That was a quiet, almost meditative operation, done through the command line on my laptop. After the update, the SDR whispered the beep‑boop that announced it was ready.
I mounted the clone on a cheap tripod, angled it toward the open roof of my garage. The little bottle of 10× 1/4” diameter SMA cable was a key piece of hardware, because without it the antenna would not sense the ripples of the atmosphere. I connected a simple discone antenna to the coax; it felt like giving the SDR a pair of ears that could pick up the faintest of signals.
In the United States, VOLMET sits on 137.5 MHz on the aircraft VHF band, while many European stations broadcast on 137.7 MHz. My favourite flight is the coast-to-coast “Lone Star” route, so I had to tune into 137.5 MHz and listen for the weather telegrams that come out every 30 minutes. The story of the signal is simple: a busy air traffic channel filled with flying prisms of weather data, all encoded in NMEA sentences.
Using a GNURadio flowgraph on the host computer, I set the sample rate to 2.4 MS/s and the custom bandwidth to 200 kHz. That bandwidth grabs the entire aircraft VHF proper but gives me a little breathing room to reject the noisy buzz from the city below. I then put an Octave Band filter around the 137.5 MHz center; the filter output is a clean, narrow band that carries only the telemetry I want. In the GUI I see a faint but unmistakable message slip through the live spectrum.
Once the data stream is clean, the next step is to turn it into human‑readable weather. I wrote a short Python script that uses the PySerial library to read the raw bytes from the SDR Buffer. The NMEA sentences are identified by a leading “ symbol and end with a carriage return. A tiny “checksum” trailed after the last star; my script verifies it before displaying. The result is a jump‑to‑market‑style weather bulletin, with wind speed, visibility, and cloud ceilings all in plain text. The feeling I get whenever the last comma lands into the output is a thrill, because I’m looking at real aviation weather that pilots depend on.
One clear evening, while the orange sunset painted the sky, I listened to the passing VOLMET station from a remote Gulf Island airport. The sudden swell of wind speed followed by a change in pressure was captured in the script’s logs. I spun the globe with my finger, pinpointing the station as it sent its weather message down the airspace. The story of that single minute—a small, humble SDR receiving a broadcast from a plane thousands of miles away—brought me a generous sense of connection to the world above us.
When I set up my LibreSDR B210 clone on the deck of my little cabin cruiser, the sunlight bled through the windows and I could already feel the electric hum of the device. I had heard stories from other hobbyists about the B210 being a powerful, inexpensive platform for all sorts of radio signals. This time, my goal was simple yet fascinating: to listen to the chatter that fleets of ships and coastal stations send across the oceans.
I turned on the SDR, connected it to a tiny, but capable, low‑noise amplifier. The antenna was a portable, wide‑band linear element, mast‑mounted and just the right distance from the hull. The screen flickered, a steady stream of tones representing frequency sweeps, and I realized that the sea, in all its noise, was a living, breathing signal source.
My first task was to locate the Maritime Mobile (550–579 kHz) band. I loaded the latest calibration file that was shared by the community just last week. It had a bright color map of the spectrum, and I could see the familiar thunderous curves of weather radio. The software I chose, an open‑source SDR toolkit written in Python, allowed me to set a custom sweep from 400 kHz to 700 kHz.
The plan was simple: record for ten minutes at a time, each pass capturing a different segment of the band. I set the gain to a moderate level, and as the spectrogram rose, I felt a sense of anticipation. Every anomaly, every dip, was a potential clue to a distant vessel’s voice.
During the second sweep, a narrow, steady tone kicked in at 561 kHz. My screen lit up like a whispering signal. I could hear the rhythmic transmission of a VHF maritime beacon node relaying life‑saving information. The beep was faint at first, but then amplified into a clear continuous wave pattern. The sound of it was almost like hearing a distant lighthouse keeper's call, amplified by the sea breeze.
I wrote down the timestamp, the frequency, and the exact shape of the light curve. That became the reference for later passes. I found that the faint signals were most reliable when the sea was calm; a rough day made the spectrum less interpretable because of increased noise.
With the wave of a scroll in the editor, I widened the sweep to cover the entire 523–699 kHz strip. The spectrum was suddenly alive with peaks at 523.5, 545, 566, 596, and 635 kHz. Each spoke a different narrative: distress calls, navigational alarm, weather monitoring, and Ship-to-Ship (SST) communications.
I spent numerous hours replaying these signals, noting how they changed along the coastline. A subtle shift in the first harmonic of the 596 kHz signal hinted at a passing vessel signaling its position to nearby traffic. I adjusted my software to follow the tag patterns, later matching them to a ship log I had painstakingly obtained from a coastal port authority. The correlation was stunning; at one point, I could hear a ship’s own horns echoed back from the sea itself.
As the summer burned on, I started a digital notebook where each day’s passage was recorded. When I later looked back, a particular entry stood out: a rescue beacon activation at 664 kHz that floated like a lone star in a sea of data. I traced the chain of communication, from the maritime distress signal to the relay through coastline receivers, and back to the ship that reported the incident. The unity of that chain made the entire process feel like following a living thread through the fabric of the oceans.
Every day spent listening with the LibreSDR B210 clone stretched me further into a world where electronic pulses and marine currents merge. The project grew from a simple experiment into a story of persistence, curiosity, and downright love for the sea. I now know that each passing frequency is a voice told in waves, and each click of my SDR is a door opened to a new maritime narrative.
Picture the endless blue stretching between continents, the invisible highways that aircraft chart above it. In the heart of that expanse, a hobbyist in the Pacific Northwest set out to listen. His tool of choice was a LibreSDR B210 clone—a fan‑favourite, budget‑friendly SDR that had recently gained a reputation for robustness when it came to wide‑band packet fishing. The story that follows is one of curiosity, tinkering, and the sound of far‑away engines.
Before the first breath of breath‑air could be captured, the setup had to be carefully tuned. The B210 clone, while driven by a buried FPGA and a whisper‑quiet TI Burr-Brown ADC, requires a sensible antenna. A commercial VHF/UHF wide‑band antenna, fed by a low‑noise amplifier, becomes the first line of defense against the faint whispers of distant aircraft. The team installed a Kramer 4158 type front‑end with a 30 dB gain amplifier, a practice that recent forum posts from 2024 confirm reduces the noise floor by roughly 12 dB when recorded for oceanic flights.
With the antenna in place, the next step was the initial test. Switching the SDR to “global” mode revealed the silent, metallic shimmer of 1090 MHz tone bursts—classic clear‑text ADS‑B. The Windows app SDR# was chosen because of its plugin ecosystem, and the ADSB+Decoder module became the easiest way to label aircraft identifiers automatically.
One of the surprises that surfaced in 2025 was the B210 clone's DPLL stability. Comparable, but a few watts cheaper, the clone offered identical sampling rates, and the tessit of its off‑the‑shelf DSP board turned out to be very forgiving of the high‑frequency jitter that plagued some commercial models when they fly at 1 GHz. For a hobbyist recording the quiet rumble of oceanic “quiet zones” between radio relays, the clone’s low jitter reduced false burst counts from 5 % down to 0.2 %, as shown in an online Tik‑Tok demo of a fortnight‑long capture.
The story goes further into the deep‑sea frequencies: 978 MHz for Mode C transponders, 1370 MHz for primary radar, and—most importantly for the hobbyist—the 151.5 MHz to 162.5 MHz band for ACARS messages. Each frequency band demanded its own spectral filter. Recent 2024 posts on the Hackaday.io community describe a low‑pass filter prototype that keeps the SkyWave ADS‑B data out of the 1090 MHz capture, which processed for almost eight hours with a 1 Hz refresh for specific VHF CAP callsigns anticipated on a transatlantic leg.
On a crisp autumn night, the team began recording. The S‑NR (Signal‑to‑Noise Ratio) climbed as the aircraft’s distance shrank, and the SDR’s output, handed to the FFmpeg-based pipeline, was logged in a single raw IQ file. Each burst of comma‑delimited packets logged by the ADS‑B decoder began to form a story of its own. Suddenly, a pair of horizons—Atlantic flight 272 heading from New York to London—offered a steady stream of Mode S data. The system could generate a live plot of altitude and velocity, as the SDR's sampling core kept pace with the far‑cascaded sensors.
There is a quiet hush when you tune in to those oceanic “ghost” airways. The AMW (Air‑to‑Ground) tones ring faintly like a background hum, but the true thrill comes from hearing the hummed flute of the trackers as ACARS text parsed in real time. The rig captured entire runbooks—including weather advisories, FIFO hardware failure logs, and occasional static interference from distant cell towers. The result was a tangible, real‑time snapshot of a segment of the world where airlines rely on invisible electronic highways to navigate the currents of air and humans.
Using a LibreSDR B210 clone to monitor oceanic flights is more than a hobby; it is a demonstration of what citizen pilots and aviation enthusiasts can now achieve without breaking a bank. The object-oriented design of the B210 clone allows for future‑proofing, with easy firmware upgrades that will soon address the newest waveforms on the 978 MHz spectrum. The entire journey, from the first antenna assembly to the final playback of the record file, opens the door for anyone curious about the invisible grid that
Alex had spent the last week studying aviation frequencies on university radios and felt a tug of curiosity pulled toward a less‑traveled path. The LibreSDR B210 clone lay on the workbench, a modest device with a single ping‑pong SDR board and a handful of pins, but its promise was the same as the original B210: the ability to listen to almost any segment of the radio spectrum. Alex’s first breath of adrenaline came when the clone’s advertised firmware version was listed as 5.2.1, a release that finally added MCS‑mode support for L‑band satellites.
To hear the remote sky, the clone required an antenna that could see the heavens at the L‑band range of 1520 to 1560 MHz. Alex scraped a low‑loss dipole fabricated from galvanized wire, coaxed it through the small SMA plug on the SDR, and positioned it near the roof of the garage, angling toward the horizon. The antenna was a simple non‑polarized reflector, but its quirks would soon become the backbone of reliable reception.
With a fresh install of Debian 12 on a spare laptop, Alex began by pulling the latest libsdr and the accompanying libsdr-dev packages from the repositories. The clone was immediately detected by lsusb as a 1506:ABCD device. Installing CubicSDR from the GNOME Software Center opened a bright, colorful interface where a new radio source appeared as “LibreSDR B210”. Alex chose the L‑band band from the drop‑down menu, set the center frequency to 1540 MHz, and dialed the bandwidth to 2 MHz. The amplitude meter began humming in green, a promise of presence below the thresholds of ordinary human hearing.
INMARSAT’s mission communication on L‑band involves a payload of aircraft voice and sensor data that arrives at the satellite as a band‑limited stream of FM modulated signals. The decoding chain required multiple steps: first we verified the carrier in CubicSDR using the “Sweep” feature, which produced a notch‑free spike at 1540 MHz. Then, the raw I/Q stream was fed into the GNU Radio companion, where the gr-inmarsat module was dropped onto the flowgraph. This module splits the signal into two tracks—one for ATIS and another for telemetry. Alex's firmware had already enabled the MCS mode until now, allowing the module to detect and decode the satellite’s 2.8 Mbps downlink packets.
The FM microphone channel of INMARSAT is specialized, using a 13.6 kHz subcarrier that modulates a narrowband voice signal. Inside the GNU Radio flowgraph the FM demodulator passes the signal to a frequency‑shifter that relocates the subcarrier to baseband. Once there, dump1090 was repurposed to process the narrowband stream, converting the momentary carrier into audible sound. Alex fumbled for the parameters, but after pressing Start, static fell away and the gentle crackle of an airborne pilot’s voice drifted through the laptop speakers. It was a
On a crisp autumn morning, Alex hauled the lightweight LibreSDR B210 clone into the living room, its copper chassis quietly humming against the wall. The tiny form factor belied a powerful RF engine, capable of sampling 120 MHz and stitching together the signals that glide invisibly across the airways. Alex had always dreamed of hearing the pilot’s chatter, the brief *ACARS* messages that flicker across the sky like invisible fireflies. With the clone, the dream was a few steps away.
The first step was a simple connection: the SDR’s USB‑3 port linked to the laptop, and a small 150 MHz low‑noise amplifier was attached to the RF input. Alex installed the latest LibreSDR firmware from the GitHub repository, ensuring the device supported the full duplex mode required for aviation downlinks. The operating system ran the GR‑IOTX framework, where programming of the analog‑to‑digital interface was managed with a modifiable Python script.
On the software side, GQRX became the visual gateway. Through a series of slider adjustments and filter calibrations, Alex tuned into the 131.40 MHz band—the segment of the ATC spectrum known for ACARS traffic. The SDR’s agility allowed a rapid shift to 162.025 MHz, the VDL‑II *Flight Information Service* channel.
Once the frequencies were locked, Alex turned to the digital decoding side. The acarsdecoder tool was launched in a terminal, its bash prompt awaiting the continuous stream from GQRX’s audio output. As the SDR captured the waveforms, the decoder began parsing the protocol, converting the bitstream into human‑readable strings: flight numbers, departure times, weather updates, and even crew instructions. The feel of the form messages appearing in plain text was unmistakable—an auditory window into the heart of the cockpit.
Simultaneously, the VDL codec was approached with dump1090 and a custom VDL filter. By embedding a small 𝑣𝑑𝑙‑decoder script—written in Python and leveraging the SDR’s raw sample feed—Alex captured the 485 kbps console broadcasts. The narrative of regular check‑in notes, weather advisories, and transponder tests unfolded like a novella written in Morse and radio waves.
Over the next few days, Alex refined the workflow. A shell script could now bring the SDR online, ampate the input the right way, launch GQRX, and pipe the audio directly into acarsdecoder and vdllib with a single command. The output files were organized into date‑stamped directories, and a lightweight Python interface displayed the most recent messages on a local dashboard.
With the high‑level vision of aviation’s digital symphony becoming tangible, Alex discovered that the B210 clone was not merely a hardware bet—it was a full‑featured gateway into the cockpit. The reputation of the libre SDR ecosystem was bolstered by this experience, and the story was ready to be shared: a tale of harnessing open‑source hardware and software to keep the sky’s quiet conversations close to its ambassador on earth.
When I first unboxed the LibreSDR B210 clone, I felt a familiar surge of excitement that had been building since the day I bought my first commercial SDR. The sleek gray chassis and the reassuringly documented USB‑3.0 interface promised a solid foundation for everything from simple AM reception to complex aviation decoding.
My goal was clear: listen to the world’s air traffic over the airwaves and get a taste of the sophisticated digital modes that airlines use to keep busy skies safe. The first thing I needed to do was verify that the tuner was on all four quadrants—USB, C, VHF, and HF—without any interference from local transmitters. After plugging the device into a power‑filtered USB port and running a quick rtl_test script, the diagnostics returned green across the board, so the hardware was ready.
For the software, I chose a lightweight Ubuntu LTS VM that kept the environment stable during the learning curve. I installed GnuRadio, libsdr, and LibMirror—the latter being the soundtrack to most ham digital modes. The key modules for aviation are gr-air-modes and gr-hfdr. The first handles the traditional ADS‑B/Mode S traffic that you hear on 1090 MHz, while the second gives access to the very high band 300‑410 MHz used by HFDL (HF Digital Data Relay).
Within GnuRadio, I built a flowgraph that feeds the B210’s IQ stream to gr-air-modes. The tuner was centered at 1090 MHz with a 5 MHz bandwidth to fully capture the Global Aeronautical Distress System (GADS) and the Mode A/C alerts that pepper the picture. I configured the “Sample Rate” to 4 Msps to keep the data clean, and then turned the output to a CSV with timestamp header lines for later analysis.
HFDL is a bit of a different beast. The signals live on the upper half of the HF band, where sky‑wave propagation turns the radio into a knotty little puzzle of reflections and dead bands. The LibreSDR B210 clone, however, was built for frequency agility. With a modest RF front‑end amplifier and a 1 MHz IF stage, I tuned the device to 395 MHz, the standard HFDL Downlink frequency.
Using gr-hfdr required a full 20 MHz-wide stream to capture the baseband. I set the B210 to a 10 Msps sample rate and enabled the optional AGC filters to manage the dynamic range of lightning‑fast ionospheric fades. The decoded packets—full of weather reports, flight plan updates, and high‑altitude aircraft position data—arrived neatly in a JSON file that I could feed into my own visualization script.
On the first night of running both flows, I saw the familiar 1090‑MHz burst of M‑241 Mode S in the spectrum. Meanwhile, in the HF stream, a faint 1.2‑kHz tone emerged, and with a delicate phase‑locked loop adjustment in gr-hfdr the decoding stabilized. Suddenly, my laptop’s screen lit up with a fully formed flight plan—flights cruising the Atlantic, cargo missions, and even a couple of emergency advisories that were being sent back to the ground stations.
There were moments of frustration, too. When the HF propagation was especially poor, the stream would freeze into noise, and it took a re‑calibration of the digital zero‑crossing detectors to coax a clean spectral line out. Those hiccups taught me that the triumphs are always balanced by the unforeseen challenges that come with decoding fragmented digital signals.
The next step in my exploration is to build an automated alert system. By watching the decoded JSON for specific flight numbers or distress codes, I plan to trigger an audible and visual cue that just as quickly informs my op‐room colleague whether an aircraft needs attention. I’m also intrigued by the possibility of layering encrypted payloads that are carried on the same HFDL channel—if the public libraries support that demodulation, I could eventually share the open-source decoding that keeps the sky’s conversations transparent.
All of this began with a humble B210 clone and the curiosity that keeps ham radio riding the edge of technology. As I fine‑tune the flowgraphs and experiment with new parameters, the airwaves open up, not only as a hobby, but as a living story of how our skies stay connected.
The chill of early fall settled over the laboratory, but the glow from the glowing USB‑3.0 port warmed the air. I had the LibreSDR B210 clone in hand—a smooth, beige block that looked almost identical to a genuine Rtl‑SDR adapter, yet carried the extra power of a LimeSDR‑B210 as a heartbeat. After flashing the kernel’s lms‑driver into the device, the USB stack announced with a polite udev message that it was ready to listen.
Digital Radio Mondiale (DRM) pulses through the air just below the breath‑of‑FM band. I set the zero‑reject tuner to the 142.5 MHz frequency where the BBC Radiophonic Orchestra’s broadcasts shimmered. With the gr-drm flow graph I had pre‑configured in GNU Radio Companion, the tuner’s SDR channel became a digital echo chamber that could translate complex waveforms into coherent audio streams. The flow graph’s live waterfall displayed a lush, colorful ambisonics ribbon, a visual confirmation that the signal had come in.
When I first pulled the LibreSDR B210 clone out of a weather‑proof cabinet buried under a pile of electronics, the only thing that came to mind was a familiar clunk of metal and the faint smell of copper. It was not a standard handheld re‑ceiver, but a fresh‑from‑the‑shop pair of boards connected by a cleaver of PCB traces that promised unlimited spectrum. The idea of cracking the tuning knob and listening to the world in high definition was almost too exhilarating to be real.
My first mission was to get the device talking to a Windows PC. The B210 is a USB 3.0 device, but its native driver comes in a Linux form. On Windows we need a libusb driver that can understand the AD9361 front‑end. Simply installing Zadig once, disconnecting the B210, searching for the device with the “LibSDR” identifier in Zadig’s drop‑down list, and then replacing the default driver with libusb0.dll did the trick. A fresh device enumeration followed: USB‑DEV‑0, USB‑B210‑0, and a shimmering “Ready” status on the SDR’s tiny LED.
With the driver ticking, I installed the open source SDR# (SDRSharp) package from the GitHub releases page. The first moment I launched it, the window brightened with rows of potential receivers. The dreaded “No plug‑ins detected” ghost would not haunt me because, near the bottom of the plugin list, the “Mixer.Wind” and “AD9361” plug‑ins stared back. The B210, as a power‑hungry node, also required an external supply; I plugged a 12‑V 5‑A adapter into the breakout board, and the device sat intermediate between a H‑bridge and a radio wave generator.
After the hardware mystery was resolved, I opened SDR# and chose the “USB‑DEV‑0” device.
When I first strapped the little silicon beast—officially a B210 clone from the LibreSDR family—to my desk, the hum of quiet anticipation filled the room. The chassis looked unassuming—just a neat block of metal with a faint blue glow, a few SMD LEDs, and a single coaxial jack on the front. It was the sort of hardware that promised portability without compromising performance, and I was determined to make my macOS machine talk to it.
I plugged the B210 clone into a powered USB‑3 port, secured the antenna to the small SMA connector, and left the device at room temperature to let any residual static dissipate. A quick eye‑check made sure the green LED stayed steady—an instant visual cue that the board was ready to receive signals.
Decoding **Digital Radio Mondiale (DRM)** on macOS is a bit of a treasure hunt. The most mature open‑source decoder, URLIP, is primarily targeted at GNU/Linux, but a community‑maintained MAC‑URLIP fork exists that compiles with Xcode and Qt. Another option is quadra. A modern, cross‑platform choice that has recently added DRM support is Gqrx v2.0.4, which ships a “drm” mode under the “Flex” tuning section.
I fetched the latest release of Gqrx for macOS from its GitHub repository, quietly unpacked the DMG, and dropped the application into /Applications. The launch succeed without a hitch, and the rusty old blue waves on the screen whispered the possibilities ahead.
With the software open, I went straight to the “Device Settings” panel inside Gqrx, chose “LimeSDR” from the drop‑down list, and assigned a sample rate of 2 MHz—the sweet spot for low‑noise reception of the short‑wave band where DRM hovers. I kept the center frequency at 147 kHz to stay close to the US broadcast band, but it was uncharted territory—as I turned the knob, the stereo and voice cues from the “drm” band started to appear as faint mottles on the waterfall.
Next, I switched the decoding mode to “DRM” through the tuner’s “Transports” tab. The GUI opened a small window where I could adjust the carrier offset and demodulator settings. As I dragged the offset between 3.5 kHz and 5 kHz—an adjustment I discovered from a forum post on the LibreSDR Discord—I heard the static give way to a clear BBC Radio 4 DRM stream. The voice of the presenter trickled in, lineally sound, a relief that I had stressed in the night before.
The mastermind behind the implicit magic is the device’s Limesdr Colete F1 firmware, which harmonizes with the limesdr‑drv compatibility layer included in the Gqrx build. The Linux kernel’s libusb stack flourishes on macOS through the libusb‑dmg package, and Qt‑based GUIs gleefully translate the advanced DSP calls into high‑level commands. All this synergy ensures that even a clone—brightened with the same 6‑9‑bit delta‑modulation logic as its original cousins—plays nicely with DRM decoding architectures that were once designed for native Linux.
I closed the antenna, tucked the B210 clone into its operating bag, and sat back. The little device had quietly listened to a world broadcast in demodulated clarity—thanks to a fortuitously polished, but cut-price clone that, when paired with the right software, turns every finely‑tuned mac
When the light flickered on in the lab, the first thing I noticed was the steady hum of the LibreSDR B210 clone. It sat on the workbench, a gray rectangle that looked almost like a paperweight, yet inside it was a soaring engine dedicated to listening.
I had always been fascinated by the invisible waves that power remote doorbells, wireless thermostats, and countless other devices. The terrestrial band around 433 MHz, known as the ISM (Industrial, Scientific, and Medical) band, is sprinkled with these low‑power devices. My goal was simple: to capture their telemetry and understand what data they are sending out.
First, I pulled the latest Fedora gr-satellites package and a handful of GNU Radio blocks. Using gr-osmosdr, I tuned the B210 clone to 433 MHz with a 2 MHz bandwidth. I set the gain to 30 dB and verified a clean, wide‑band capture on the scope. The Signal-to-Noise Ratio was formidable, and the device promised a window into the world of cheap, open‑air sensors.
With the SDR primed, I launched a custom GNU Radio flowgraph. The flowgraph split the incoming stream: one branch fed a Fast Fourier Transform for spectral analysis, while the other streamed raw samples to a file for further decoding. The oscilloscope was my companion in this act of listening.
In the spectral view, several discrete bursts revealed themselves, each a possible communication from a dedicated device. My heart thumped when one of those bursts caught my eye: a low‑power temperature sensor releasing a packet every fifteen seconds. Using a custom Python script, I read the log file and decoded the packet structure. Polarity was reversed—baud rate 1200 bps, Manchester encoding. The process felt like deciphering an ancient scroll.
I wrote a small module in Python that outlined the telemetry format for a common 433 MHz wireless doorbell. The packet consisted of a device ID, a sequence number, a checksum, and the temperature value. The checksum was widely used in the field to guard against bit‑flips caused by environmental noise.
Each time the script detected a new, valid packet, it plotted the temperature on an updating graph. Over an evening's watch, the temperature dipped and rose, mimicking the doorbell's owner turning off the heating to save energy.
Curiosity pushed me to sample further. I immersed the receiver in the sea of 433 MHz signals. A cluster of packets emerged from a motion detector; another looked like a small weather station broadcasting wind speed. The B210 clone, with its generous bandwidth and tuning flexibility, handled the simultaneous streams without a hitch. Each new device I listened to became a chapter: how it encoded its data, how it synchronized, and how it coped with interference.
While experimenting, I kept in mind that the 433 MHz band is meant for low‑power, short‑range devices. The B210 clone's sensitivity domestically complies with regulations, but I kept transmission power low and only listened to passive signals. My story—of a simple SDR turning into a storyteller—highlights the power of open‑hardware to demystify the invisible chatter that pervades modern homes.
The next time you glance at that quiet, weather‑worn sensor on your porch, imagine the invisible stream of information it sends. And know that with a LibreSDR B210 clone, you too can step into its narrative, decode its pulse, and feel the world of telemetry unfold before your eyes.