Last night, YouTube suggested a video for me. It was a raw clip from a news helicopter filming a police chase in Kansas City, Missouri. I quickly noticed a weird interference in the audio, especially the left channel, and thought it must be caused by the chopper’s engine. I turned up the volume and realized it’s not interference at all, but a mysterious digital signal! And off we went again.
The signal sits alone on the left audio channel, so I can completely isolate it. Judging from the spectrogram, the modulation scheme seems to be BFSK, switching the carrier between 1200 and 2200 Hz. I demodulated it by filtering it with a lowpass and highpass sinc in SoX and comparing outputs. Now I had a bitstream at 1200 bps.
The bitstream consists of packets of 47 bytes each, synchronized by start and stop bits and separated by repetitions of the byte 0x80. Most bits stay constant during the video, but three distinct groups of bytes contain varying data, marked blue below:
What could it be? Location telemetry from the helicopter? Information about the camera direction? Video timestamps?
The first guess seems to be correct. It is supported by the relationship of two of the three byte groups. If the 4 first bits of each byte are ignored, the data forms a smooth gradient of three-digit numbers in base-10. When plotted parametrically, they form an intriguing winding curve. It is very similar to this plot of the car’s position (blue, yellow) along with viewing angles from the helicopter (green), derived from the video by manually following landmarks (only the first few minutes shown):
When the received curve is overlaid with the car’s location trace, we see that 100 steps on the curve scale corresponds to exactly 1 minute of arc on the map!
Using this relative information, and the fact that the helicopter circled around the police station in the end, we can plot all the received data points in Google Earth to see the location trace of the helicopter:
Update: Apparently the video downlink to ground was transmitted using a transmitter similar to Nucomm Skymaster TX that is able to send live GPS coordinates. And this is how they seem to do it.
Update 2: Yes, it’s 7-bit Bell 202 ASCII. I tried decoding it as 7-bit data earlier, ignoring parity, but must have gotten the bit order wrong! So I just chose a roundabout way and kept looking at the hex. When fully decoded, the stream says:
#L N390386 W09434208YJ #L N390386 W09434208YJ #L N390384 W09434208YJ #L N390384 W09434208YJ #L N390381 W09434198YJ #L N390381 W09434198YJ #L N390379 W09434188YJ
These are the full lat/lon pairs of coordinates (39° 3.86′ N, 94° 34.20′ W). Nucomm says the system enables viewing the helicopter “on a moving map system”. Also, it could enable the receiving antenna to be locked onto the helicopter’s position, to allow uninterrupted video downlink.
Thanks to all the readers for additional hints!