When ocean waves roll into Antarctic sea ice, they flex it, crack it and break it apart, shaping how much ice forms each winter and how fast it melts. Before 2012, the only records of this from inside the ice pack were on magnetic tape from the 1980s.
Since 2012, Scott Penrose of Digital Dimensions has built the electronics and firmware for the Waves In Ice buoys, which report wave motion from the ice by satellite for months at a time. Every generation has used a RockBLOCK. For the sixth, WII6, Scott moved to the RockBLOCK 9704 and built rockblock9704-zephyr, an open-source module that brings Ground Control’s official 9704 library to the Zephyr operating system, free for any developer to use.
The Challenge
Waves can travel deep into the ice pack, snapping floes into pieces around 10 meters across, yet this process has been largely missing from global climate models. Researchers needed real measurements from inside the ice.
Getting them is hard. An icebreaker stops beside a floe, a buoy is carried out by crane or helicopter and spiked into the snow, and the ship leaves. Nobody comes back. The buoy drifts with the ice for months, so every result has to be sent home while it is still alive.
- No coverage. At 65 to 75 degrees south, Iridium is the only network that reaches the buoys
- Harsh conditions. Floes flip over, buoys get buried in snow, and temperatures inside the case reach -22.7°C (-8.9°F)
- Limited power. One battery has to run the modem and the wave calculations for a whole season
- Two way control. Scientists need data out and commands in, for example to sample more often during a storm.


The Solution: Waves In Ice buoys on RockBLOCK
The project began in 2012 with Antarctic sea ice trials alongside New Zealand’s NIWA. The team chose RockBLOCK 9602 because it was small and frugal enough to share a battery with everything else for a six to eight week deployment.
The first buoys split the work between two processors to save power. A low power 8-bit AVR chip logged motion data to a storage card for 20 minutes, then briefly woke a BeagleBone Black Linux board to do the wave calculations the AVR was too slow for. The Linux board then shut down, and the AVR sent the results home through the RockBLOCK.
That 2012 array of 10 buoys produced the first digital wave measurements from inside the Antarctic ice pack, published in Nature in 2014 (Kohout et al.). Buoys have been deployed most years since with NIWA, the University of Melbourne, the Korea Polar Research Institute (KOPRI) and groups in Japan, the UAE and Canada. Every generation up to WII6 used the RockBLOCK 9602, and the fifth, WII5, was released as open source.
“Iridium chose itself, because it works reliably at the poles, and RockBLOCK was the practical way to use it. The portal gave us one IMEI per buoy, every message delivered to our server by webhook, and a console to send commands back from a browser. Data pooling was a big factor too. Some of our buoys last days and others last months, so having the whole fleet share one pool of data makes far more sense on a research budget. About 70 RockBLOCKs have gone through the project since 2012.”
Scott Penrose, Founder, Digital Dimensions
That two way link is used in earnest. During a storm, a buoy can be switched from three hourly to fifteen minute captures from a browser, then dialed back down to save battery. When power runs low, the firmware keeps reporting the buoy’s position for weeks.
WII6: Moving to the RockBLOCK 9704 and Iridium Certus
WII6 is the sixth generation, and the first designed as a product research groups can buy off the shelf. A single 32-bit STM32 processor running Zephyr replaces the two processor design, doing the wave calculations itself and sleeping between captures.
The biggest change is the satellite link. A 9602 message is limited to 340 bytes, so earlier buoys sent wave statistics only. RockBLOCK 9704 on Iridium Messaging Transport carries around 100 KB per message, roughly 300 times more. WII6 still sends everyday results in messages from 326 bytes, and scientists can now call back a power spectrum or a capture’s full 2 Hz motion record (about 56 KB) on demand.
| Earlier Generations | WII6 | |
|---|---|---|
| Satellite Modem | RockBLOCK 9602 | RockBLOCK 9704 |
| Iridium Service | Short Burst Data (SBD) | Iridium Messaging Transport (IMT) |
| Largest Message | 340 bytes | About 100 KB |
| Processing | 8-bit AVR plus a Linux board woken to do the calculations | One STM32 on Zephyr, wave analysis on board |
| What Gets Sent | Wave statistics only | Wave statistics, plus spectra or raw records on request |
The WII6 cloud (pictured below) lets scientists choose what each message carries, from a 32 byte summary to the full spectrum, direction data and the 2 Hz record. This selection comes to 548 bytes, already beyond the old 340 byte limit, and is queued as a command for the buoy.
Firmware can also be updated over the air. A new image runs on trial until its first successful satellite transmission, and the buoy reverts on its own if that never happens. WII6 is now in bench testing, with its first message over Iridium due once provisioning is complete.
Open Source in Action: The RockBLOCK 9704 Zephyr Module
Scott built rockblock9704-zephyr to get the 9704 working in WII6 and released it under the MIT license. It’s also the modem driver in OGLAS, his farmland sensor network described below.
Why Zephyr
Zephyr, the Linux Foundation’s open-source RTOS, keeps hardware in devicetree and features in Kconfig, so one application can move between vendors and architectures by swapping a board file.
Scott calls it the “DOS-to-Linux moment for embedded“, and moved his whole OGLAS fleet onto it in under a month. Ground Control’s customers have asked for help running the 9704 on platforms like STM32 and Zephyr, and this module meets that need.
How it works
The module builds Ground Control’s official open-source C library, RockBLOCK-9704, exactly as published, with no rewrite or fork, and fits it into Zephyr:
- Devicetree binding. A rock7,rockblock-9704 node on any UART, with optional power, enable and booted GPIOs; CONFIG_RB9704 follows the node
- Thread-safe API. The upstream library has no locking and shares static buffers, so one worker thread owns every call into it, and callbacks run on that thread
- Event-driven receive. The worker wakes on a byte from the modem, so an idle modem costs no CPU time
- Timeouts and cancellation. Every request takes a Zephyr timeout; a non-blocking send queues and reports its result through a callback, and a stalled MO can be canceled
- rb9704 shell. Begin, info, signal, send, sendhex, cancel, and spy to log every JSPR line in both directions
- Simulated modem and host tools. A simulated 9704 runs on a pty or serial port, and one pytest suite runs against Ground Control’s Python binding, Zephyr’s native_sim and real hardware.

Once the modem is set up, sending a message takes three calls; the README has the full example.
It has run on STM32U5, ESP32-S3 and Zephyr’s simulator, includes example setups for six boards, and has been checked against a real 9704.

Contributing back
Scott has also written detailed documentation of the 9704’s JSPR protocol, a guide from Cloudloop account to first message, and notes on library edge cases for Ground Control’s team to review. This is exactly what we hoped for when we open-sourced the 9704 library!
rockblock9704-zephyr is a community project and is not an official Ground Control product. It is maintained by Scott Penrose, and issues can be reported on its GitHub mirror.
The Results
Ten buoys went onto the ice in the first week of January 2026 and reported until August 24, sending 21,415 satellite messages between them. Temperatures inside the cases fell as low as -22.7°C (-8.9°F), and one buoy kept sending its position for 44 days on a nearly flat battery.
Across the program, the WII6 cloud holds 14 deployments, 93 buoys and 66,502 wave captures since 2016, all brought home over Iridium by RockBLOCK.
“A buoy on a floe drifting away from the ice edge in winter darkness is not something a ship goes back for. RockBLOCK has carried our data home since 2012, and with the 9704, scientists can now ask a buoy for its full motion record whenever they need it.”
What’s Next
WII6 is in bench testing, with its first main board designed. The aim is a buoy research groups can order with the sensor, sampling rate and reporting schedule built to their specification. Find out more at wii6.au.
Beyond the Ice: Water Monitoring Across Australian Farmland
Scott’s next project, OGLAS, takes the same module to the Australian outback. There, water troughs and tanks can sit hundreds of kilometers from the nearest town, and one borerunner may drive 250 km (155 miles) a day checking water points. In OGLAS, sensors on troughs and tanks report over LoRa, a long range, low power radio, to a hub that uses a RockBLOCK 9704 as its satellite gateway.
To save power and airtime, sensors report on exception: an empty trough triggers one alert, with no repeats while it stays empty within a set time window. Over time, the data predicts when each trough will run dry, so farmers can top it up before it becomes a problem.
We’re Here to Help
If you need to send sensor data home from the most remote places on Earth, we can help.
The RockBLOCK 9704 brings Iridium Certus messaging of up to 100 KB to your own devices, backed by our open-source library.
Email hello@groundcontrol.com or fill in the form, and we’ll be in touch within one working day.