re-DECTed: An RTL-SDR DECT Decoder

Over on GitHub programmer ‘znuh’ has uploaded a new RTL-SDR compatible GNURadio based tool for DECT decoding. DECT is an acronym for ‘Digital Enhanced Cordless Telecommunications’, and is the wireless standard used by modern digital cordless phones. In most countries DECT communications take place at 1880 – 1900 MHz, and in the USA at 1920 – 1930 MHz. So in order to receive these frequencies you’ll need an RTL-SDR with an E4000 chip, or some other compatible SDR that can tune this high.

It appears that the decoder is not actually able to decode audio (at least not yet or without extra work perhaps), but it can at least output the DECT packets to Wireshark for analysis. This may be of interest to those wanting to learn more about the DECT protocol.

Update: Over on the Reddit thread for this software the original poster ‘sanjuro’ has given a hint on how to (in theory) decode the audio, he writes:

In theory you only need to dump B-field data into a file and then play with g726 codec. See documentation from previous de-DECTed project http://wiki.securityweekly.com/wiki/index.php/Episode158

The re-DECTed decoder outputting packets to Wireshark.
The re-DECTed decoder outputting packets to Wireshark.

8 comments

  1. don b

    usa dect channel should start on channel 23,
    and covered somewhere in the 1900 bands,

    why did the author not make seperate freq chart for usa

  2. eu

    here is just a quick and dirty change to work at 1900Mhz:

    $ diff dectrx.py_orig dectrx.py_1900
    47c47,48
    # self.channel = channel = 1
    > self.channel = channel = 10
    52c53,54
    # self.freq = freq = 1897.344e6-(channel*1.728e6) # for channels 0 to 9
    > self.freq = freq = 1881.792e6+(channel*1.728e6) # for channels 10 to 32
    200c202,203
    # choices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
    > choices=[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24],
    224c227,228
    # self.set_freq(1897.344e6-(self.channel*1.728e6)) # for channels from 0 to 9
    > self.set_freq(1881.792e6+(self.channel*1.728e6)) #for channels from 10 to 32
    268a273
    > print (freq)

  3. Lee

    “Decode DECT”
    hmm, interesting
    “It appears that the decoder is not actually able to decode audio”
    sigh, not so interesting.

    • Guilherme Rodrigues

      My exact reaction, but hey let’s give it sometime, with this “entry door” available people can work and develop more tools.

Post a comment

You may use the following HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This site uses Akismet to reduce spam. Learn how your comment data is processed.