Foundations of Amateur Radio

The other day Randall, VK6WR, encouraged me to get on-air. He described it like this:

“There is a mystery signal on 40m that you can try your new Universal Radio Hacker skills on. It appears to be a FSK signal separated by 7kHz with the two signals at 7.0615 and 7.0685 MHz. Each of them on their own sounds a bit like a Morse signal, but my CW decoder decodes junk. But if you can see it on a spectrum scope, it is clearly FSK because either one of them is on at any time.”

He went on to say: “You’ll need an SDR to receive the signal given the separation, but could be a fun investigation!”

Having just discovered “Universal Radio Hacker”, a tool that can help you decode radio signals, that sounded like something I’d love to have a go at. Unfortunately, after the demise of my main workstation last year, my current set-up doesn’t allow me to do such recordings, but Randall, ever the gentleman, provided a recording of the signal.

He writes: “This was captured with gqrx demodulating the signal as SSB audio with the VFO tuned to 7.060, so both “signals” are there, one very low freq and one very high freq.”

If you’re curious, I’ve uploaded the file as it was shared with me to my VK6FLAB GitHub repository under “signals”.

Over the next two days I spent my time attempting to decode this signal. I opened up Universal Radio Hacker and spent delightful hours getting precisely … nowhere. Some of that is absolutely my unfamiliarity with the tool, but this is a great exercise in learning on the fly, where truth be told, I tend to live most of my life.

It wasn’t until several hours later that I decided I should at least listen to the audio. To my ear it sounded like 25 WPM Morse Code, but being still in the learning phases, while my brain was triggering on the sequences, decoding wasn’t happening. Of course I could cheat and forward the audio to one of my fellow amateurs, but the actual message wasn’t really the point of the exercise, at least not at this stage.

Instead I fired up “multimon-ng” which has an in-built Morse decoder. I spent some hours doing more Yak Shaving than I was expecting, but even then, I still didn’t get more than gobbledegook out of the process. I used “Audacity” to shift one of the signals by one wavelength and mixed them together. This allowed me to reduce the noise significantly, but still none of my tools did anything useful. In case you’re wondering why, if you have a tone and noise and shift one signal by the wavelength of the tone, then mix them, the tone adds to itself, but the noise, random in nature, is just as likely to add as it is to subtract, so in effect, you’re increased the signal to noise ratio.

After multimon-ng failed, I tried an online Morse decoder, which gave me all manner of text, but none of it made sense to me. Of course it’s possible that this is someone rag chewing in a different language, but I couldn’t make any sense of the thing.

I did come up with some issues that prompted me to create the signal repository. I realised that I didn’t have any known “good” signals. Previously I’d tried decoding a sample FT4 signal, but that went nowhere, mainly because the signal was noisy.

So, what I’m going to do over the next couple of weeks is create some clean, as-in, computer generated, known signals, and add them to the repository. The aim is to have a known good starting point to learn from. In software development this technique is often used to limit the number of unconstrained variables. In our case, if I generate a known good Morse Code signal, then I can learn how to use Universal Radio Hacker to decode it, so when I come across an unknown signal, I can use the techniques I learnt to attempt to decode it.

Feel free to make pull requests with known good signals yourself. RTTY, PSK31, WSPR, FT8, etc. Feel free to include non-amateur modes.

One thing, I’m not looking for off-air recordings of signals, yet, that can come later, right now I need signals that are pure, as-in, as I said, computer generated. Of course at some point, perhaps sooner rather than later, I’ll discover that generated signals are no easier to decode than off-air recordings, but that’s for another day.

Meanwhile, you too can play. Download one or more sample files and decode them. Let me know what you learn.

I’m Onno VK6FLAB

  • kristoff@infosec.pub
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    3 days ago

    I find urh a great tool … except when you absolutely have no idea what kind of signal it is. I usually use inspectrum as a first tool to have a basic idea what the signal looks like. Based on that, I decide how to go further.

    Inspectrum is an older tool and has less features then urh, but sometimes simplicity works better.

    Kristoff ON1ARF

    • Onno (VK6FLAB)@lemmy.radioOP
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      2 days ago

      Very interesting! I’ve installed it and attempted to look at the mystery signal, but I cannot make inspectrum show anything other than red. I think it’s sampled at 225144, but that’s speculation based on the filename. Any thoughts?

      Source file: https://github.com/vk6flab/signals/tree/main/recorded

      Edit: Update, once I played with the file format, testing c8, c16 and c32, I finally got something worth looking at. It appears to be c16 and there look to be 4 bits per symbol.

      Edit 2: If I use URH, 2500 samples per symbol, I can decode bits as FSK and get the following string:

      7cdc5d32a92284d1f5a53f01b512f2c4663860ec2b273abfdb3c6b90f77a0816f9b8ba65524509a3eb4a7e036a25e588cc70c1d8564e757fb6746b90f77a002df37174caa48a1347d694fc06d44bcb1198e183b0ac9ceaff6cf1ae43dde8205be6e2e9954914268fad29f80da897962331c307615939d5fed9e35c87bbd040b7cdc5d32a92284d1f5a53f01b512f2c4663860ec2b273abfdb3c6b90f77a0816f9b8ba65524509a3eb4a7e036a25e588cc7

      Edit 3: Outputting only bits I get the following that seems to repeat (with some decoding errors) every 255 bits:

      011111001101110001011101001100101010100100100010100001001101000111110101101001010011111100000001101101010001001011110010110001000110011000111000011000001110110000101011001001110011101010111111110110110011110001101011100100001111011101111010000010000001011
      011111001101110001011101001100101010100100100010100001001101000111110101101001010011111100000001101101010001001011110010110001000110011000111000011000001110110000101011001001110011101010111111110110110011101000110101110010000111101110111101000000000001011
      011111001101110001011101001100101010100100100010100001001101000111110101101001010011111100000001101101010001001011110010110001000110011000111000011000001110110000101011001001110011101010111111110110110011110001101011100100001111011101111010000010000001011
      011111001101110001011101001100101010100100100010100001001101000111110101101001010011111100000001101101010001001011110010110001000110011000111000011000001110110000101011001001110011101010111111110110110011110001101011100100001111011101111010000010000001011
      011111001101110001011101001100101010100100100010100001001101000111110101101001010011111100000001101101010001001011110010110001000110011000111000011000001110110000101011001001110011101010111111110110110011110001101011100100001111011101111010000010000001011
      011111001101110001011101001100101010100100100010100001001101000111110101101001010011111100000001101101010001001011110010110001000110011000111
      
      • kristoff@infosec.pub
        link
        fedilink
        English
        arrow-up
        1
        ·
        edit-2
        3 days ago

        I used inspectrum mainly with raw IQ-files from gqrx, so the c16 format is indeed correct.

        For me, the great thing about the tool is that it is very visual. (*)

        It allows you to get an idea what kind of signal you are looking at (on-off, FSK, PSK, …) and get a rought idea about timing. That then gives you information to better apply the proper filtering in urh and work from there on. It also allows you to see any “abnormallities” … e.g. I once came across a signal that sounded to be two-tone FSK, but after closer investigation, you could see that the two tones overlapped (in the time domain).

        Concerning the bitstream you demodulated, I am not at all an expert in SIGINT, but I guess we can do some basic research like search forrepeating pattern (that could indicated a start-of-frame indicator), maximum number of consecutive all-0 or all-1 (that can indicate bit-stuffing) etc. The problem with unknown digital signals is that the number of variations of different processing-techniques is almost infinite: scrambling (not encryption, but scrambling) , FEC, …

        (*) The visual element of inspectrum is the reason why I use it in a workshop I give. The workshop I do is similar to the one done by Mike Walters that is on youtube: https://www.youtube.com/watch?v=tGff31uGXQU

  • vu2tum@lemmy.radio
    link
    fedilink
    arrow-up
    2
    arrow-down
    1
    ·
    19 days ago

    These signals are being heard in VU as well. I have been seeing chatter on Whatsapp groups about these to the extent that 40m nets have shifted up. It will be interesting to geolocate the source of these signals based on a regional triangulation. Some folks are saying these are of China origin, others say they are from Israel or Iran.

    Of course, what they decode into is yet another mystery at the moment.

    • Onno (VK6FLAB)@lemmy.radioOP
      link
      fedilink
      arrow-up
      2
      ·
      19 days ago

      That’s very interesting. I thought it was a once-off, but you appear to be saying that it’s ongoing. I currently don’t have HF capabilities, so I reported on a recording made by a fellow amateur.

      As far as figuring out where it comes from, the direction finding can be pretty rudimentary. Use any directional antenna and determine the direction of the strongest signal. Document it somewhere, get multiple people across the globe to do it, job done.

      Feel free to record them here, seems like as good a place as any.

        • Onno (VK6FLAB)@lemmy.radioOP
          link
          fedilink
          arrow-up
          2
          ·
          edit-2
          16 days ago

          Very interesting! I just recorded a sample using your WebSDR, much appreciated.

          Edit: Hmm … that’s odd. I just managed to check the file, two days later, and it’s essentially empty. It doesn’t appear to have saved the .mp3 file at all.