PDL Consulting · Radio protocols and waveforms on request
Describe the radio link you need. Get your own protocol and waveform.
Say it in your own words: the job, the distance, the data, the band, the packet layout. WaveForgem writes a packet format and a waveform for exactly that request, simulates it end to end, shows every requirement as met or not met, and hands you the files to put it on a software-defined radio.
A sentence, a packet layout, a C struct from your firmware, a line from a tender. These are real requests the Studio designs:
Your own packet format
my own packet: 16-bit node id, 8-bit sequence number, 12 byte payload, CRC-16, sync word 0x2DD4, 4-FSK at 9600 baud on 915 MHz, 2 km
The job, not the radio
Tell me when the water tank is low. The pump house is 600 yards from the house, a reading every ten minutes is plenty, 915 MHz.
From a C struct
struct { uint8_t id; uint16_t seq; int16_t temp; uint16_t crc; } GFSK 9600 baud on 868.3 MHz in Italy, 1 km
A licensed channel
4800 bps GMSK in a 12.5 kHz channel at 450 MHz licensed, 15 km
What happens to it
It is read for meaning. The request is restated in exact terms and shown back to you word for word, with anything left out and why. Corrections ("no wait, 4800"), old systems you mention and numbers that are not requirements are told apart from what you want.
A protocol and a waveform are designed for it. Packet fields in your order, your sync word, CRC, whitening, line code and error correction; 2/4/8/16/32-FSK, GFSK with your BT and deviation, GMSK, MSK, OOK, PSK and QAM, chirp spread spectrum, direct-sequence spreading and frequency hopping; power held to the rule for the band (FCC Part 15, European short-range bands, amateur, licensed).
It is simulated end to end through the real modem, coder and cipher code, at the distance you gave, and the occupied bandwidth is measured on the samples.
Every requirement gets a verdict: met, not met, or not read. What the designer added on its own (hopping to reach a power, a code for a long path) is listed too. Nothing is dropped quietly.
What you download
PROTOCOL.md
Your request, how it was read, the packet bit by bit, the waveform, a worked example, and what was and was not checked.
protocol_spec.json
The same in machine-readable form, for your own tools.
wfx_packet.py
A Python codec that builds and reads your packets. It is checked bit for bit against the designer.
wfx_receive.py
A Python receiver that demodulates the IQ file in the package and prints the message, for FSK, GFSK, GMSK, MSK and OOK designs, hopping included.
IQ file + SigMF
The transmitted signal, with metadata and a send script for HackRF, PlutoSDR, USRP, LimeSDR or bladeRF.
Hop schedule
For hopping links: each dwell's start time and offset, which the receiver follows.
Also in the Studio
Standard signals for a radio you already have: APRS, POCSAG and FLEX pager messages, 5-tone selcall, DTMF, Morse, Meshtastic and LoRa, checked by outside decoders (direwolf, multimon-ng, gr-lora_sdr).
Decoding of recordings: ADS-B aircraft, APRS packets and pager messages from an SDR capture or a radio's audio.
An expert studio with 45 workbenches for people who want every block and every measurement.
What it is not
Results are simulations of the real coder and modem. WaveForgem has not transmitted your design over the air; that is your radio and your licence.
Not built: Wi-Fi, cellular, DMR/P25, LoRaWAN, voice codecs, rolling-code remotes. A request for one of these is answered "not built", not with something else.
Transmit only where you are licensed or inside the power limits shown for the band.