Coder Social home page Coder Social logo

bastibl / gr-ieee802-15-4 Goto Github PK

View Code? Open in Web Editor NEW
267.0 23.0 86.0 904 KB

IEEE 802.15.4 ZigBee Transceiver

Home Page: https://www.wime-project.net

License: GNU General Public License v3.0

CMake 5.29% Python 27.10% Shell 0.29% Makefile 0.05% C 8.35% C++ 58.48% Lua 0.43%
sdr zigbee iot 802-15-4 ieee

gr-ieee802-15-4's Introduction

Hi!

This is an IEEE802.15.4 O-QPSK transceiver for GNU Radio, based on Thomas Schmid's implementation.

Development

Like GNU Radio, this module uses maint branches for development. These branches are supposed to be used with the corresponding GNU Radio branches. This means: the maint-3.7 branch is compatible with GNU Radio 3.7, maint-3.8 is compatible with GNU Radio 3.8, etc.

Features

  • The O-QPSK PHY encapsulated in a hierarchical block.
  • The CSS PHY, also encapsulated in a hierarchical block (Limitation: Packets need to have a fixed length).
  • A block that implements the Rime communication stack. Rime is a lightweight communication stack designed for Wireless Sensor Networks and is part of the Contiki Operating System.
  • A transceiver flow graph with USRP <-> PHY <-> MAC <-> Network layer (Rime) <-> UDP Socket / APP which resembles pretty well the ISO/OSI structure.
  • A sample application which visualizes sensor values. The application shows how easy it is to connect an external program to the flow graph by using Socket PDU blocks.
  • An IEEE 802.15.4 and Rime dissector for Wireshark.

Some interesting properties:

  • Packets can be piped to Wireshark.
  • The complete physical modulation is done with plain GNU Radio blocks.
  • It is interoperable with TelosB sensor motes.
  • It is interoperable with Contiki.
  • It uses a block to tag packet bursts with tx_sob and tx_eob tags. This tags are understood by the UHD blocks and allow fast switching between transmission and reception.

You can find the firmware that I used to test interoperability with TelosB motes in the contiki folder. The firmware is based on Contiki v2.6. There is another README file in the Contiki folder that describes how to compile and use the firmware.

Dependencies

  • GNU Radio

  • gr-foo (Wireshark Connector, Packet Pad and Burst Tagger blocks)
    https://github.com/bastibl/gr-foo.git

  • python-matplotlib (if you want to run the GUI sample application)
    sudo apt-get install python-matplotlib

Installation

Please see www.wime-project.net for installation instructions.

Usage

Open the examples/transceiver_*.grc flow graph with gnuradio-companion and check if all blocks are connected. Enable either the UHD blocks to interface with real hardware or the Packet Pad block to loop back the samples. Open some Rime connections and connect messages sources or Socket PDUs. You can easily connect to the Socket PDU blocks with netcat. Netcat can be started for example with

nc -u localhost 52001

There are also startup scripts in the apps folder.

Have fun!

gr-ieee802-15-4's People

Contributors

bastibl avatar bkerler avatar christophl avatar michaelld avatar osh avatar ryanvolz avatar spukhafte-sys avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gr-ieee802-15-4's Issues

'No supported devices found'. Hackrf One added to Transceiver_CSS_USRP.grc file.

I'm using Gnu Radio 3.9 with gr-foo 3.9 and gr-ieee802-15-4 3.9 on Kali Linux. I added gr-osmosdr module to Gnu Radio. I modified Transceiver_CSS_USRP.grc file by replacing USRP with osmocom. After executing file I got an error:

Executing: transceiver_CSS_USRP.py

Error: failed to enable real-time scheduling.
gr-osmosdr 0.2.0.0 (0.2.0) gnuradio v3.9.6.0-1-gac58f3ba
built-in source types: file rtl_tcp rfspace redpitaya
Traceback (most recent call last):
File "/home/lava/gr-ieee802-15-4/examples/transceiver_CSS_USRP.py", line 395, in
main()
File "/home/lava/gr-ieee802-15-4/examples/transceiver_CSS_USRP.py", line 373, in main
tb = top_block_cls()
File "/home/lava/gr-ieee802-15-4/examples/transceiver_CSS_USRP.py", line 190, in init
self.osmosdr_source_0 = osmosdr.source(
RuntimeError: No supported devices found (check the connection and/or udev rules).

tansceiver_CSS_USRP

I want to capture ZigBee packets with Hackrf One. Does gr-ieee802-15-4 modules are compatible with Hackrf One or I make a mistake in graph?

How can I play with it

Now I have successfully installed the project, but I have no idea how to play with it. Are there any more guides or examples about the usages? I really appreciate any help.

'ieee802_15_4' has no attribute 'rime_stack'

Hi Bastian,

Trying to runtransceiver_OQPSK (/gr-ieee802-15-4/examples/ieee802_15_4_OQPSK_PHY.grc) however I'm getting following error

File "transceiver_OQPSK.py", line 134, in init
self.ieee802_15_4_rime_stack_0 = ieee802_15_4.rime_stack([129], [131], [132], [23,42])
AttributeError: module 'ieee802_15_4' has no attribute 'rime_stack'

Not sure why this is the case, is there something i am missing?

bladeRF

is it possible to use this with bladeRF to sniff the zigbee traffic?

The specific process of signal processing

Hallo, Bastian.
I‘m new to sdr and ubuntu. I would like to use hackrf one as a detection tool for wifi and wsn (zigbee ) packets, to analyze the structure of the data packets, and get some information from them. I I don't know much about the specific implementation process of your 802.11 and 802.15.4 open source projects. Could you please briefly explain the specific process of signal processing and packet analysis in your projects to me? In addition, what are your opinions and suggestions on my project? Thank you.

Using 2 SDRs for back and forth traffic

Hey,
we are currently implementing the flowchart for our local setup. Idea is to have two Plutos on two dedicated machines and they communicate with each other using the IEEE802.15.4 PHY. We are using the example transceiver_qpsk flowchart. We have tested it with one SDR as receiver and one 802.15.4 capable dev board, which worked like expected.

Currently we are stuck with the setup using 2 SDRs. Sent messages from one Pluto are received all at once at the other Pluto. So not every second one message, but every ~7 seconds ~7 messages (at the time of receiving several messages at least one message is lost).

If anyone has an idea how and where to start for debugging, I would be very grateful.

Thank you,
Alex

SUN PHY

I'd like to write an Access Code Prefixer for the 802.15.4 SUN PHY. I propose adding the functionality to the existing Access Code Prefixer with XML that generates this:
acp

The Mode Switch, FCS and whitening are only used in 2FSK mode and would be ignored in OQPSK mode.

Is it possible to conditionally hide XML parameters?

Thoughts or suggestions?

Vector Insert block not working on loopback

Hello, could you help me with this?

I was trying to run the loopback file but when i did it, this error occurred

whatsapp image 2018-12-03 at 14 22 05

It says something like an error in the Vector Insert block. I tried to put it in bypass mode and it worked normally with this flowgraphs

image

I want to know if this error is because there's something that I forgot to install or parameters that need to be changed.

PyBombs for 15.4 not found

Not sure if Pybombs problems beling here, but I was able to install 802.11, but 15.4 failed:

foo@bar:~/wip$ pybombs install gr-ieee-802154 PyBOMBS - INFO - PyBOMBS Version 2.3.2 PyBOMBS.Packager.apt - INFO - Install python-apt to speed up apt processing. PyBOMBS.install_manager - INFO - Phase 1: Creating install tree and installing binary packages: PyBOMBS.get_recipe - ERROR - Error fetching recipe `gr-ieee-802154': Package gr-ieee-802154 has no recipe file!

However 80211 succeeded:

foo@bar:~/wip$ pybombs install gr-ieee-80211 PyBOMBS - INFO - PyBOMBS Version 2.3.2 PyBOMBS.Packager.apt - INFO - Install python-apt to speed up apt processing. PyBOMBS.install_manager - INFO - Phase 1: Creating install tree and installing binary packages: PyBOMBS.install_manager - INFO - No packages to install.

I also tried: pybombs install gr-ieee802-15-4 with no joy.

Perhaps, the name has changed?

Not able to send packets from SDR (gnuradio) with Length more than 57 bytes.

Hi,

I have downloaded and working with Gnuradio Version:3.8. I have modified the transceiver_OQPSK flowgraph and made it a transmitting radio for sending packets (attached image of flowgraph). It is working fine and we are able to send packets successfully from transmitting radio to another SDR or Openmote.

But I am facing an issue while sending packets with lengths of more than 57 bytes. By exploring code, I have found that code is always attaching 11 bytes in mac.cc & 4 bytes of the header along with the payload. Suppose if we have a payload of length 10 bytes, SDR will transmit a total of 25 bytes. We are able to validate this length on the receiving side. So coming back to the issue, when I am sending packets with more than 57 bytes altogether, the radio is giving an error and not transmitting anything.

Can you please guide me on how to overcome this issue? I am stuck for long and not able to move forward as I am new to gnuradio. Can you please suggest in which coding file should I look into resolving the issue?

any help will be much appreciated.

H/W: USRP X310
OS: UBUNTU 20.04
GNU radio version: 3.8
Error:
sched: <block foo_packet_pad2 (8)> is requesting more input data
than we can provide.
ninput_items_required = 8448
max_possible_items_available = 8191
If this is a filter, consider reducing the number of tap

Selection_044

Questions about MSK chip table and the standard chip table

Dear Bloessl,

I notice you use MSK instead of O-QPSK to build the 802.15.4 transceiver because O-QPSK modulation with half-sine pulse shape is equivalent to MSK. I also read the paper "CMOS RFIC ARCHITECTURES FOR IEEE 802.15.4 NETWORKS". But I found that your transmitter's coding and modulation process satisfies the 802.15.4 standard. Why can my TI packet sniffer not receive the signal when I change the MSK chip table to the standard chip table?

I also use Adam-Pluto + MatLab to build the 802.15.4 transceiver. Their coding and modulation are almost similar to yours. But they use the standard chip table. So when I feed the baseband data created by MatLab to USRP, my TI packet sniffer can not also receive the signal. Is there any difference when transmitting baseband between Pluto SDR and USRP?

Thank you very much for your time and consideration!

Xin

maint-3.9 doesn't seem to build with apt installed GR 3.9

Ubuntu 20.04.4 LTS, GR 3.9.5 installed via APT from ppa:gnuradio/gnuradio-releases-3.9. When running cmake (i.e. from gr-ieee802-15-4, mkdir build, cd build, cmake ../) the cmake step fails:

CMake Error at /usr/lib/cmake/pybind11/pybind11Tools.cmake:131 (add_library):
  Target "ieee802_15_4_python" links to target "sndfile::sndfile" but the
  target was not found.  Perhaps a find_package() call is missing for an
  IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
  /usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrPybind.cmake:241 (pybind11_add_module)
  python/bindings/CMakeLists.txt:59 (GR_PYBIND_MAKE_OOT)


CMake Error at /usr/lib/cmake/pybind11/pybind11Tools.cmake:131 (add_library):
  Target "ieee802_15_4_python" links to target "sndfile::sndfile" but the
  target was not found.  Perhaps a find_package() call is missing for an
  IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
  /usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrPybind.cmake:241 (pybind11_add_module)
  python/bindings/CMakeLists.txt:59 (GR_PYBIND_MAKE_OOT)


CMake Error at lib/CMakeLists.txt:53 (add_library):
  Target "gnuradio-ieee802_15_4" links to target "sndfile::sndfile" but the
  target was not found.  Perhaps a find_package() call is missing for an
  IMPORTED target, or an ALIAS target is missing?


CMake Error at lib/CMakeLists.txt:53 (add_library):
  Target "gnuradio-ieee802_15_4" links to target "sndfile::sndfile" but the
  target was not found.  Perhaps a find_package() call is missing for an
  IMPORTED target, or an ALIAS target is missing?


-- Generating done
CMake Generate step failed.  Build files cannot be regenerated correctly.

Seems to build fine using pybombs GR 3.9.

PHR Prefixer

PHR Prefixer prepends a vector of unsigned chars to the blob of a message tuple as advertised, but also unpacks each byte of the input blob to eight bytes in the output blob. For example, given:

PHR = (1,2,3,4,5,6,7,8,9,0xa,0xb,0xc)
and an input blob = "0x55"

PHR Prefixer outputs a blob consisting of (hex dump):

01 02 03 04 05 06 07 08 09 0A 0B 0C 01 00 01 00 01 00 01 00 01

Two questions:

  1. Is that the expected and useful behaviour?
  2. Nowhere is this behaviour documented, except in the source code. Is the doxygen content in this module not propagated into the UI?

Chunks to symbols mapping

Hi!
First of all i want to thank you for this great work!
my question is about symbol table in "chunks to symbols" block.
y there are some difference with ieee 802.15.4 standart?
mapping_table_ieee
for example symbol # 14 mapped to this sequence in this block:
(1-1j), (-1+1j), (1+1j), (-1-1j), (-1-1j), (1+1j), (-1+1j), (-1+1j), (-1-1j), (1-1j), (-1-1j), (1-1j), (1+1j), (1-1j), (1+1j), (-1+1j)
but in ieee it is:
10 01 01 10 00 00 01 11 01 11 10 11 10 00 11 00
so, it must be somethink like:
(1-1j), (-1+1j), (-1+1j), (1-1j), (-1-1j), (-1-1j), (-1+1j), (1+1j), (-1+1j), (1+1j), (1-1j), (1+1j), (1-1j), (-1-1j), (1+1j), (-1-1j)

Python modules go to wrong directory on Arch Linux

On Arch Linux Python modules are not installed in /usr/local/lib/python2.7/site-packages but in /usr/lib/python2.7/site-packages.

sudo make install will put them in the wrong path and the modules will not be available in gnuradio and return an import error. Moving them manually to the other path works fine though...

The same is true for gr-foo but I think posting one issue here is enough.

You should obtain the path as described here:
https://stackoverflow.com/questions/122327/how-do-i-find-the-location-of-my-python-site-packages-directory

This returns the correct path:

python2 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"

Be sure to use explicitly python2, as python binary executes Python 3 on some systems (again Arch Linux).

Otherwise your modules work great, thank you for sharing them!

PHY Layer not visible in Hier Block

I'm trying to implement IEEE 802.15.4 in gnuradio but unfortunately PHY Layer it is not visible in any of the blocks including Hier block. Kindly help me solve this issue, Thankyou!

ImportError: No module named ieee802_15_4

screenshot from 2018-01-27 13-05-41
(Screenshot attached)
I'm new to gnuradio and ubuntu. I'm facing this Import error and I find confusing how to solve it. Below "Traceback (most recent call last)" is the issue. Kindly help. Thank-you!

miss css phy

I can't find ieee802.15.4 css phy block,please tell me how to solve it .thank you
l don't have ~/.gnuradio/config.conf,only have ~/.gnuradio/grc.conf.but after gr-ieee802-15-4/grc l don't have blocks.l don't no what should i do.please heap me.thank you.
default

Problem Receiving packets using OQPSK Transceiver

Hello
I'm using the GR-IEEE 802.15.4 OQPSK Transceiver and I'm trying to receive a packet from a XBee ZigBee module and then import that packet to wireshark. However, the file sink is always empty after running the flowgraph. I have the rime stack, socket pdu, message strobe, and packet pad all disabled since I'm simply trying to receive a packet. Is there something I need to configure within the MAC block to do this?

Tellrell

900mhz Does not work

The 802.15.4 layer doesn't appear to support 900Mhz Zigbee.

Could we get a version that does support 900Mhz or could you indicate what needs to be changed in order to support 900Mhz operation?

TelosB in half duplex communication

Hi @bastibl

Thanks for porting the IEEE 802.15.4 for Gnuradio. I am beginner using gnuradio and usrp. I was able to successfully transceiver_OQPSK.grc on the maint-3.8 branch. However, as per the original paper, I'm using a telosB mote and a USRP B210 to communicate. I'm able to receive messages from telosB on USRP B210 (RX2 port) while I'm unable to reeive any message from USRP (TX/RX) on telosB. Are there any configuration changes to be done on TelosB to receive the message? I have attached the block diagram used.

Also, I'm trying to implement an existing paper to detect and correct collisions through preamble correlation (E.g. Zigzag decoding-http://ccr.sigcomm.org/online/files/p159-gollakotaA.pdf, RnR decoding-https://saifullah.eng.wayne.edu/rnr.pdf). I'm using packet_sink file for this as I'm using OQPSK PHY. In this regard, could you advise on how I can get the time difference between symbols - say two preambles from a collided packet? Can it be obtained from the clock recovery module?

Thanks in advance.

Screenshot from 2022-04-05 16-39-06
Screenshot from 2022-04-05 16-43-16

Logical Link Control question

Hi again Bastian,

I have tested two similar setups, one with gr-802-11 and the other with gr-802-15-4.

I use iperf v1 tool to test the speed. 802.11 works fine, you can see the Logical Link Control layer.

But 802.15.4 doesnt make iperf work. Can you tell me why? cant it put the logical link control layer itself? is there something i am missing?

Captura de pantalla de 2020-05-11 19-08-25
Captura de pantalla de 2020-05-11 19-29-44

The function of the block in demodulation part?

I am studying your gr-ieee802-15-4 code now. But I was a little puzzled. How do you demodulate the received signal? Why do you use single_pole_iir_filter block, subtract block and Clock recovery MM block?
Regards,

Thank you!

MarxWolf

Beginners guide

Hi Dr.bastibl,
First of all, I'm very grateful for the code 'gr-ieee802-15-4' you contributed.Then,I hope you could help me with some questions.
1.Do I have to use TelosB sensor motes to get started with the example you gived in the contiki folder?
2. "edit the CONTIKI variable in the Makefile to point to your contiki installation directory "you mentioned ,I am a little confused that which contiki installation directory should I point to ,is the contiki in your example ?
3.If I use cc2530 to achieve this function,what should I do?
I'm a freshman and hope to get your guidance.

NameError(i is not defined)

>>> Warning: This flow graph may not have flow control: no audio or RF hardware blocks found. Add a Misc->Throttle block to your flow graph to avoid CPU congestion.
Generate Error: (NameError("'i' is not defined"), '<%\n    all_options = [ value, option1, option2, option3, option4 ][:int(num_opts)]\n    all_labels = [ label0, label1, label2, label3, label4 ][:int(num_opts)]\n%>\\\n# Create the options list\n% if int(num_opts):\nself._${id}_options = (\\\n% for ch in all_options:\n${ch}, \\\n% endfor\n)\n% else:\nself._${id}_options = ${options}\n% endif\n# Create the labels list\n% if int(num_opts):\nself._${id}_labels = (\\\n% for lbl in all_labels:\n% if lbl:\n${lbl}, \\\n% else:\nself._${id}_options[${i}], \\\n% endif\n% endfor\n)\n% elif labels:\nself._${id}_labels = ${labels}\n% else:\nself._${id}_map(str, self._${id}_options)\n% endif\n# Create the combo box\n% if widget == \'combo_box\':\n<%\n    win = \'self._%s_tool_bar\'%id\n%>\\\n${win} = Qt.QToolBar(self)\n${win}.addWidget(Qt.QLabel(${(label if (len(label) - 2 > 0) else repr(id))} + ": "))\nself._${id}_combo_box = Qt.QComboBox()\n${win}.addWidget(self._${id}_combo_box)\nfor _label in self._${id}_labels: self._${id}_combo_box.addItem(_label)\nself._${id}_callback = lambda i: Qt.QMetaObject.invokeMethod(self._${id}_combo_box, "setCurrentIndex", Qt.Q_ARG("int", self._${id}_options.index(i)))\nself._${id}_callback(self.${id})\nself._${id}_combo_box.currentIndexChanged.connect(\n    lambda i: self.set_${id}(self._${id}_options[i]))\n% endif\n# Create the radio buttons\n% if widget == \'radio_buttons\':\n<%\n    win = \'self._%s_group_box\'%id\n%>\\\n${win} = Qt.QGroupBox(${(label if (len(label) - 2 > 0) else repr(id))} + ": ")\nself._${id}_box = ${orient}()\nclass variable_chooser_button_group(Qt.QButtonGroup):\n    def __init__(self, parent=None):\n        Qt.QButtonGroup.__init__(self, parent)\n    @pyqtSlot(int)\n    def updateButtonChecked(self, button_id):\n        self.button(button_id).setChecked(True)\nself._${id}_button_group = variable_chooser_button_group()\n${win}.setLayout(self._${id}_box)\nfor i, _label in enumerate(self._${id}_labels):\n    radio_button = Qt.QRadioButton(_label)\n    self._${id}_box.addWidget(radio_button)\n    self._${id}_button_group.addButton(radio_button, i)\nself._${id}_callback = lambda i: Qt.QMetaObject.invokeMethod(self._${id}_button_group, "updateButtonChecked", Qt.Q_ARG("int", self._${id}_options.index(i)))\nself._${id}_callback(self.${id})\nself._${id}_button_group.buttonClicked[int].connect(\n    lambda i: self.set_${id}(self._${id}_options[i]))\n% endif\n${gui_hint() % win}')
>>> Failure

I installed the gr-ieee-802154 from pybombs and configured the environment,but it didn't work

PHY layer doesn't work for Tx

I've been struggling to get the Tx portion of the PHY block working for a few days now. I've followed the instructions and have left the PHY block mostly intact. I'm running GNU Radio 3.8 and I think the problem lies with the Chunks to Symbols block. For some reason, when the dimension is set to 16, the transceiver_OQPSK starts, but then instantly dies with a return code -11. When I reduce the dimension to 8 or lower, it runs just fine, but it's not creating the right spreading code.

image

image

Hopefully there is something small and stupid that I'm missing.

TypeError in preamble sfd prefixer - running on E312 hardware

I have been running the gr-ieee802-15-4 CSS transceiver on Ettus B205-minis with great success so far, however I am now trying to use E312 radios instead. When I try to run the transceiver example file the following error occurs:

root@e312:~# python transceiver_CSS_USRP.py
Using Volk machine: neon_hardfp
sender started
Traceback (most recent call last):
  File "transceiver_CSS_USRP.py", line 315, in <module>
    main()
  File "transceiver_CSS_USRP.py", line 303, in main
    tb = top_block_cls()
  File "transceiver_CSS_USRP.py", line 186, in __init__
    time_gap_2=c.time_gap_2,
  File "/home/root/.grc_gnuradio/ieee802_15_4_css_phy.py", line 57, in __init__
    self.ieee802_15_4_preamble_sfd_prefixer_ii_0_0 = ieee802_15_4.preamble_sfd_prefixer_ii((preamble), (sfd), sym_per_frame)
  File "/usr/local/lib/python2.7/site-packages/ieee802_15_4/ieee802_15_4_swig.py", line 5451, in make
    return _ieee802_15_4_swig.preamble_sfd_prefixer_ii_make(*args, **kwargs)
TypeError: in method 'preamble_sfd_prefixer_ii_make', argument 1 of type 'std::vector< int,std::allocator< int > >'

This happens regardless of if I am attempting to use the radio hardware to transmit or just doing a loop-back test within gnuradio itself. I have tried a few things to fix the problem but I have no idea where to start as this issue is very specific to running the code on the E312 hardware - it works fine on my computer. Any guidance here would be much appreciated.

itemsize mismatch when running GRC transceiver app

Compiled against brand-new GNURadio on 32-bit Debian.

Using Volk machine: avx_32_mmx_orc
Traceback (most recent call last):
File "/root/Projects/gr-ieee802-15-4/examples/transceiver.py", line 58, in
tb = transceiver()
File "/root/Projects/gr-ieee802-15-4/examples/transceiver.py", line 29, in init
self.ieee802_15_4_phy_0 = ieee802_15_4_phy()
File "/root/.grc_gnuradio/ieee802_15_4_phy.py", line 56, in init
self.connect((self.blocks_repeat_0, 0), (self.blocks_multiply_xx_0, 1))
File "/usr/local/lib/python2.7/dist-packages/gnuradio/gr/hier_block2.py", line 75, in connect
self._connect(points[i-1], points[i])
File "/usr/local/lib/python2.7/dist-packages/gnuradio/gr/hier_block2.py", line 81, in _connect
dst_block.to_basic_block(), dst_port)
File "/usr/local/lib/python2.7/dist-packages/gnuradio/gr/runtime_swig.py", line 2334, in primitive_connect
return _runtime_swig.hier_block2_sptr_primitive_connect(self, *args)
ValueError: itemsize mismatch: repeat0:0 using 1, multiply_cc0:1 using 8

Beginners guide

Hi, I am new to GNUradio and USRP can I get simple steps for implementing a client server program between a telosb mote and USRP N210. thank you.

Another question about o-qpsk demodulation in UCLA-ZigBee

Thanks a lot for your advice about the block function in UCLA-ZigBee, but there is another question about the demodulation part.
I know UCLA-ZigBee treats the o-qpsk modulation as MSK, and I know the reason why this is reasonable. But I referred to the textbook, that there will a delay in I-component to counteract the delay in Q-component in modulation part. I cannot find any delay in the demodulation part. Can you give me more advice?
Thanks a lot.
Regards
Marx

Unable to receive ieee802-15-4 test messages with AVR RZUSBSTICK

Hi, thanks for the great project.

I use a b210 on debian 10.2 with gnuradio 3.7

Minimal changes were required to run the example (FE Corrections needs bool values now)
If I run the transceiver_CSS_USRP I can verify that the generated Message Strobes are shown in wireshark.

Now I am simply trying to receive the generated ieee802-15-4 packets on a second computer. I am using a Atmel RZ RAVEN via killerbee wireshark to monitor for incoming packets. I have verified that other ieee802-15-4 packets (from other iot devices) are received and monitored by the RZ RAVEN.

No matter what I try (change gains, change samplerate, switch channels etc.) it was not possible for me to detect any packet (not even a broken one) on the second computer using the mentioned Atmel RZ RAVEN. The red led is blinking with send interval and no further errors etc. from gnuradio and or the b210. volk profile is ready, cpu governors on performance...

Any ideas?

ps. sadly I have no 2nd usrp/sdr hardware ready for double verification

Problem installing gr-ieee802-15-4

Hi!, first thanks for the development

I am having problem with the installation, I follow the steps but GNU Radio does not recognize the blocks, with gr-foo there is no problem.

I can compile and install without problems, indeed I see the .yml blocks in the correct folder.

I am using Ubuntu 18.04 clean installation and GNU Radio 3.8.

I tried several times of reinstall all but the result is always the same.

gnuerror

Any idea?

Thank you in advance!

Error running .grc files.

I've installed GNUradio and IEEE-802-154 using Pybombs.

GNURadio Version:- 3.7.10

I'm receiving the following errors when I open all the files from the examples folder.

transceiver_OQPSK.grc

gr-ieee802-15-4/examples/transceiver_OQPSK.grc:1:1:FATAL:PARSER:ERR_DOCUMENT_EMPTY: Start tag expected, '<' not found
/gr-ieee802-15-4/examples/transceiver_CSS_loopback.grc"
Block key "ieee802_15_4_css_phy" not found

ieee802_15_4_CSS_PHY.grc

Loading: "/gr-ieee802-15-4/examples/ieee802_15_4_CSS_PHY.grc"
Error: /gr-ieee802-15-4/examples/ieee802_15_4_CSS_PHY.grc:1:10:ERROR:NAMESPACE:NS_ERR_QNAME: Failed to parse QName 'options:'
/gr-ieee802-15-4/examples/ieee802_15_4_CSS_PHY.grc:2:14:ERROR:NAMESPACE:NS_ERR_QNAME: Failed to parse QName 'parameters:'
/gr-ieee802-15-4/examples/ieee802_15_4_CSS_PHY.grc:3:5:FATAL:PARSER:ERR_ATTRIBUTE_WITHOUT_VALUE: Specification mandate value for attribute parameters:
/gr-ieee802-15-4/examples/ieee802_15_4_CSS_PHY.grc:3:5:FATAL:PARSER:ERR_SPACE_REQUIRED: attributes construct error
/gr-ieee802-15-4/examples/ieee802_15_4_CSS_PHY.grc:3:5:FATAL:PARSER:ERR_GT_REQUIRED: Couldn't find end of Start Tag options: line 1
/gr-ieee802-15-4/examples/ieee802_15_4_CSS_PHY.grc:3:5:FATAL:PARSER:ERR_DOCUMENT_END: Extra content at the end of the document

What am I missing here?

Is my installation broken?

Add TUNTAP

Hi Bastian,

Would this module work with a tun/tap (to have IP stack), instead socket PDU?

Thank you

best regards

mac: problems using tags generated by IEEE802.15.4 OQPSK PHY

Two related issues here:

  1. Foo Burst Tagger in IEEE802.15.4 OQPSK PHY does an splendid job of marking the last sample of a packet with tx_eob and the first sample of the next packet with tx_sob. Unfortunately it's unable to do this until the second packet has flushed the last half-sine pulse of the first packet through. The problem can be reproduced by sending a single packet. You'll be able to trigger on a tx_sob, but no tx_eob will be forthcoming until a subsequent packet has flushed out the modulator pipeline.

  2. Thanks to the Offset in OQPSK it's not possible to separate the end of one packet from the beginning of the next without mangling a symbol, as shown below:

burst-tagger_tx_eob_1

Symbol Values: The 1200 (base 4) is the last four symbols of the last nibble (0xB) of packet CRC. The 3021 is the start of the next packet's pad (0xF).

The problem manifests as low receiver LQI values when the last symbols of the CRC are mangled by separation.

Ideally, IEEE802.15.4 OQPSK PHY would output pads of 0+0j I/Q samples both before the preamble and after the last symbol of the CRC, but that's a major project. I've an expedient solution for 2.: add a pad after the CRC. Is there a better fix?

Is there a way to fix the first issue?

Modify the correlation threshold

Hallo, Bastian.
I want to modify ZIgBee's correlation threshold to 10 or less.I modified your code, but I can not determine whether changes correctly. I hope you can give me a correct answer. The modified code is as follows:
screenshot from 2018-04-13 22-28-00

Problem with receiving packets in transceiver_OQPSK .grc

Hi,

I am having problems with receiving of packets in transceiver_OQPSK .grc. A high sample rate does not capture any traffic at all, so the .pcap file is empty. A low sample rate (2M-4M) does capture packets, however, I get the error message: MAC: frame to short. Dopping! I do see some packets in the.pcap file, but they are all "Malformed". On some occasions I also receive an error message saying that the crc is wrong. I do not understand what the problem is since everything worked fine when I hade the "message" block disabled or when I try to do simple things with the hardware and the associated block , such as capture some traffic into a file or listen to the radio.

Hardware: HackRF One
Frequency: 2.405 GHz
Branch: maint-3.8
OS: Kali Linux
GNU version: 3.8.2
Communication protocol: 6LoWPAN

Thank you in advance!

screen

Roadmap?

I'm happy to some recent contributions to this project project. Do you have some sort of a roadmap or todo list? There's a few things I'd like to contribute, but I want to make sure I'm on duplicating effort.

Stuff I'd like to implement:

  • 900 MHz BPSK PHY
  • De-hardcode address data in MAC layer

missing blocks

Hi there,

Probably something i overlooked somewhere but i am missing the blocks
ieee802_15_4_css_phy_1
ieee802_15_4_oqpsk_phy_0
In the example transceiver flowgraphs, all other blocks seem to be fine.

Any hints?

Different tx rx frequency

Hi,

As I can see in your video, you use the same frequency for both tx and rx.

imagen

I want to use broadcast, but i want rx and tx to be independent. Could this work with different rx and tx frequencies?

thank you

Missing blocks

Hello,
While attempting to implement this project, I have run across the error of missing blocks (These missing blocks seem to be different than the missing blocks with a "not found in Platform" error that I found when searching for a solution, they just say "not found"). Have these been recently removed or is there a step that might have been missed that would cause this? They appear from both the gr-ieee file and the gr-foo file and both git repositories have been installed.

Thank you

blockkey
missing block

Transceiver_USRP.grc cannot work well, it receive UUUU in command

Hi Bastian,

The PHY block is generated normally. And the simulation without USRP works well too. But the transceiver_USRP.grc cannot work well, it shows the "UUUU..." in command.

I consider it maybe caused by one PC run transmitter and receiver at the same time. Can I separate the transceiver USRP.grc to one Tx.grc and one Rx.grc and run them at two PC, like gr-ieee 802-11?

No module named foo_swig

Hi, I am new to gnuradio and I get the error "No module named foo_swig" when trying to run the examples.

Sending beacons

Question: You don't happen to have an example flowgraph that can send beacon packets to each zigbee channel or to all or most channels at once?

Thanks

868MHz/915MHz band support

Hi,
any chance to support the 868MHz/915MHz bands? In contrast to 2.4GHz the standard uses BPSK instead of QPSK. Also the bitrate is different (20/40 kb/s).

What is the influence of "Select an even decimation to ensure that a halfband filter is enabled."warning?

Hi bastibl,
First of all, I'm very grateful for the code 'gr-ieee802-15-4' you contributed.
I met a problem when using it.
After running the grc code, i got this warning:

�[32;1m[INFO] [UHD] �[39;0mlinux; GNU C++ version 5.4.0 20160609; Boost_105800; UHD_3.11.0.1-37-g2c9087d1
�[32;1m[INFO] [USRP2] �[39;0mOpening a USRP2/N-Series device...
�[32;1m[INFO] [USRP2] �[39;0mCurrent recv frame size: 1472 bytes
�[32;1m[INFO] [USRP2] �[39;0mCurrent send frame size: 1472 bytes
�[33;1m[WARNING] [CORES] �[39;0mThe requested decimation is odd; the user should expect CIC rolloff.
Select an even decimation to ensure that a halfband filter is enabled.
decimation = dsp_rate/samp_rate -> 25 = (100.000000 MHz)/(4.000000 MHz)

What is the influence of "Select an even decimation to ensure that a halfband filter is enabled."warning?
Does this warning affect the time synchronization in chips (in ieee802.15.4 PHY, symbol to chip ) ?

Thanks,
Jionghong

Chip Values and Corrupt packets

Hi, I want to use study the chip values of received corrupt packets, for that i need to disable all CRC and checksum. Can someone give me a heads start, in which files should I look and from where I can get access to the chip values? Thank you.

Using USRPs in transceiver_OQPSK .grc

Hi,

I am using USRPs and downloaded the maint-3.8 branch. To test wireless communication, I have replaced the packet_pad block with USRP source and sink (with packet_pad it is working). However I am not able to receive any packets. I am wondering if someone had the same issue.

Hint: With a manually generated FM receiver flowgraph, I am able to listen to the radio.

OS: Ubuntu 18.04
HW: USRP B200 mini-i
GNUradio version: maint-3.8

For easier troubleshooting, this is how the flowgraph looks like.
Screenshot from 2020-09-21 18-35-04

Any help is appreciated.

ImportError: No module named ieee802_15_4_swig

Hello,

I'm new to GNU Radio and I find your application very interesting. I'm trying to learn more about SDR and digital communication concepts through it. However I'm having troubles to run it. I followed the instructions at the repository, and apparently I could successful install it. I'm also sure I have all the dependencies correctly installed. However when python tries to import ieee802_15_4, I get the following error:

Traceback (most recent call last):
File "", line 1, in
File "/home/silva.vinr07/Softwares/lib64/python2.7/site-packages/ieee802_15_4/init.py", line 17, in
from ieee802_15_4_swig import *
ImportError: No module named ieee802_15_4_swig

Do you have an idea about what could cause this?

Thank you very much!!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.