使用RTL-SDR加密狗的Z-Wave GNURadio配套模块

时间:2019-03-10 13:37:14

标签: gnuradio software-defined-radio z-wave

我正在使用RTL-SDR通用加密狗来接收Z-Wave协议的帧。我使用真正的Z-Wave设备。我正在使用 scapy-radio ,并且还下载了 EZ-Wave 。但是,它们都没有为所有Z-Wave数据速率,调制和编码实现块。我已经使用 EZ-Wave 的原始解决方案接收了一些帧,但是我假设我无法在所有数据速率,编码和调制下接收帧。现在,我正在尝试根据其功能块来实现解决方案,以实现所有功能。

Z-Wave胚醇使用以下调制,数据速率和编码:

9.6 kbps - FSK - Manchester 
40 kbps - FSK - NRZ
100 kbps - GFSK - NRZ

这些是我的实际障碍物(现在根本无法接收任何东西):

enter image description here

例如,我将解释我对块接收的看法

9.6 kbps - FSK - Manchester 

RTL-SDR来源

变量 center_freq = 869500000

变量 r1_freq_offset = 800e3

Ch0:频率:center_freq_3-r1_freq_offset ,所以我在RTL-SDR Source模块上获得了868.7 Mhz。

频率Xlating FIR滤波器

中心频率=-800Khz ,以获得868.95 Mhz(欧洲)的频率。老实说,我不确定为什么要这样做,需要解释。我正在尝试根据EZ-Wave的40 kbps-FSK-NRZ块的实现来实现这些块(假设是这样)。他们使用2M的采样率和不同的配置,我不了解。

抽头= firdes.low_pass(1,samp_rate_1,samp_rate_1 / 2,5e3,firdes.WIN_HAMMING)。我不明白,过渡bw应该是什么(我的情况是5e3)

采样率= 19.2e3 ,因为数据速率/波特率为 9.6 Kbps ,并且根据 Nyquist–Shannon采样定理,采样率应为至少是数据速率的两倍,所以2 * 9.6 = 19.2。因此,我正在尝试从源将默认的2M重新采样到19.2 Kbps。

简单静噪

我使用默认值(-40),不确定是否应该更改此值。

正交降级

应该进行FSK解调,我使用增益的默认值。我不确定这是否是进行FSK解调的正确方法。

增益= 2 (samp_rate_1)/(2 * math.pi * 20e3 / 8.0)*

低通滤波器

采样率= 19.2k ,以使用相同的新采样率

Cuttoff Freq = 9.6k ,根据https://nccgroup.github.io/RFTM/fsk_receiver.html

过渡宽度= 4.8 也是sample_rate / 2

时钟恢复MM

大多数参数都是默认值。

Omega = 2 ,因为samp_rate / baud

二进制切片器

用于获取信号的二进制代码

Zwave PacketSink 9.6

应该进行曼彻斯特解码。

我想问一下,在所有数据速率,调制和编码下,要实现Z-Wave帧的正确接收,我应该在块上进行哪些更改。当我开始接收时,我可以在FFT接收器和Waterfall接收器中看到来自我的设备的消息。消息调试不会打印数据包(例如来自原始EZ-Wave解决方案的数据包),而是仅打印

Looking for sync : 575555aa
Looking for sync : 565555aa
Looking for sync : aa5555aa
根据用于曼彻斯特解码的C代码(ZWave PacketSink 9.6),

frame_shift_register 中应该是什么值。我见过类似的帖子,但是有点不同,说实话,我被困在这里。

我将不胜感激。

3 个答案:

答案 0 :(得分:2)

让我们看看GFSK案。首先,RTL源2M波特的采样率非常高。对于最大数据速率100 kbps-GFSK,例如400〜500kbaud的采样率就可以了。还有电源静噪模块。此块可防止低于某个阈值的信号通过。这不是很好,因为它会过滤可能包含信息的低功率信号。在低通滤波器和MM时钟恢复模块之间也存在采样率问题。符号恢复块的输出应为100kbaud(由于GFSK,采样率=符号率)。使用omega值2并向后工作,MM模块的输入应为200kbaud。但是,低通滤波器可产生2Mbaud的样本,是预期的10倍。您必须进行适当的抽取。

我为我们的CubeSat实施了GFSK接收器一次。定时恢复由PFB块完成,它比MM块更可靠。您可以在这里找到论文: https://www.researchgate.net/publication/309149646_Software-defined_radio_transceiver_for_QB50_CubeSat_telemetry_and_telecommand?_sg=HvZBpQBp8nIFh6mIqm4yksaAwTpx1V6QvJY0EfvyPMIz_IEXuLv2pODOnMToUAXMYDmInec76zviSg.ukZBHrLrmEbJlO6nZbF4X0eyhFjxFqVW2Q50cSbr0OHLt5vRUCTpaHi9CR7UBNMkwc_KJc1PO_TiGkdigaSXZA&_sgd%5Bnc%5D=1&_sgd%5Bncwor%5D=0

有关接收器的更多详细信息,也可以在这里找到: GFSK modulation/demodulation with GNU Radio and USRP

M。

答案 1 :(得分:1)

由于RTL-SDR加密狗的限制(225001至300000和900001至3200000),采样率为1M。

当前块: Current Blocks for Z-Wave 9.6Kbps|FSK|Manchester

我不明白:

频率Xlating FIR滤波器的抽头 firdes.low_pass(1,samp_rate_1,40e3,20e3,firdes.WIN_HAMMING)

截止频率和低通滤波器的过渡宽度

时钟恢复M&M ,因此请考虑其值为“随机”。

ClockRecovery输出:

ClockRecovery MM Output

根据您在ResearchGate的工作,我正尝试使用 PCB板。但是,我没有成功,因为我仍然不了解时钟恢复背后的所有科学知识。

进行两次低通滤波是因为scapy-radio的原始Z-Wave块以40Kbps,FSK和NRZ编码是这样制作的(并且有效):

enter image description here

所以我想我只是要更改一些参数和解码器(Zwave PacketSink9.6)。

我还上传了我当前的区块here

答案 2 :(得分:1)

Moses Browne Mwakyanjala,我也在尝试根据您的工作来实现。

enter image description here

enter image description here

时钟恢复和Manchester decoding可能存在问题。曼彻斯特解码使用转换0-> 1和1-> 0来编码0和1s。如何正确配置时钟恢复以实现正确的采样率和曼彻斯特解码的转换?曼彻斯特解码器(Z-Wave PacketSink 9.6)能够找到前同步码,并且仅以寻找同步结尾。

我也想问你,在哪里可以找到你的工作中提到的调制指数“ h”?

谢谢