Forum: HF, Funk und Felder ZigBee 868/915Mhz Packet Sniffer


von Markus K. (winny)


Lesenswert?

Hallo,

kann mir einer sagen, wie ich ZigBee 802.15.4 Packete zur Analyse 
mitsniffen kann? Dabei suche ich eigentlich speziel etwas für die 
Bandbreite 868/915 Mhz. Ich arbeite zur Zeit hauptsächlich mit den 
Atmega ZigBit-900 Chips. Ich habe bei Atmega auch das AVRRZ541 AVR 
Z-Link Kit für 2.4 GHz gefunden. Das gibt es aber eben nicht für 
868/915Mhz. Außerdem ist da Daintree Networks SNA dabei. Auf der 
Daintree Seite steht aber, dass dies seit März 2010 nicht mehr 
vertrieben wird. Ich hab noch Wisens Classic gefunden, dass scheint auch 
nur von 2006 zu sein und nicht mehr aktualisiert zu werden und in der 
Bandbreite 868/915Mhz gibt es dort wohl nichts, ausserdem ist das ein 
bissel teuer mit 800$. Ich hab noch den ZENA Network Analyzer gefunden, 
aber eben wieder nur 2,4Ghz.

Online Analyse wäre zwar schön, aber offline Analyse wäre auch schon 
was. In Wireshark ist ja ZigBee schon implementiert. Sollte doch 
eigentlich nicht so schwer sein, dass ein ZigBit USB Dongle z.B. 
AtAny900 einfach alles mitsnifft, wie es bei WLAN auch möglich ist.

Weiss jemand, ob es irgendetwas vernünftiges gibt in dieser Richtung 
oder wie man das genau macht?

Für Hilfe wäre ich dankbar

Grüße
winny

von A. W. (uracolix)


Lesenswert?

Ich habe sowas mal mit uracoli gebaut, die ANY USB Sticks sind in dem 
Paket zwar noch nicht drin, aber mit ZigBit/Meshbean gehts, bzw. auch 
mit den
DE RCBs + Sensor Terminal board / STK541.

Als Interface zw. serieller Schnittstelle und Wireshark dient ein Python 
Script, das eine "Named Pipe" aufmacht (Unter Windows haengen manchmal 
ein paar Pakete, was aber an der Wireshark Seite zu liegen scheint). In 
dem Script kannst du auch Modulation und Kanal einstellen.

 - http://download.savannah.gnu.org/releases/uracoli/apps/
 - u5isniffer-lin-0.2.rc1.zip enthaelt nur den Python Code
 - u5isniffer-win-0.2.rc1.zip enthaelt zusaetzlich ein
   py2exe Version des Scripts

von Markus K. (winny)


Lesenswert?

Danke schonmal.
Heute sind STB Boards angekommen. Ich werde das jetzt mit denen 
ausprobieren. Bin schon gespannt, ob das klappt. Mit den AtAny 900 
Modulen hat das nicht geklappt. Keine Ahnung, was hier wieder gebraucht 
wird, sind ja nicht soviel anders als die Meshnetics Boards. Ich hab 
aber auch nicht verstanden, welcher USB Treiber hier zu benutzen wäre, 
der im Pakage hatte nicht geklappt. Und eigentlich ist ja auf dem 
Meshnetics auch der CP2102 und auf den AtAny900 Dongle der Cp2103 Chip 
drauf. Dafür war der Treiber ja bereits installiert und nicht der aus 
dem uracoli Pakage. Ich werd sehen, wie weit ich jetzt komme.

Gruß

von Peter (Gast)


Lesenswert?

Hallo,

kannst Du mir kurz mitteilen, wie Du diese Sniffer-Lösung auf dem 
Meshbean-Board (Zigbit-Modul mit 86RF212 und ATmega1281) zum Laufen 
gebracht hast ? Die im zip-File enthaltenen Firmware-Files beziehen sich 
ja wohl auf andere Plattformen ?

Gruß und danke

Peter

von A. W. (uracolix)


Lesenswert?

Hallo Peter, 2011 ist nun schon eine Weile her, da sah das Paket noch
etwas anders aus.

Aktuell nimmst du fuer das Zigbit-Modul mit AT86RF212 und ATmega1281
die any900st firmware. Das Any900 ist intern zum Zigbit
kompatibel verdrahtet. Es verwendet den UART-1 des ATmega1281.

Die Settings fuer den UART1 sind 38400 8N1. Bitte das Paket
uracoli-sniffer-0.3.1.zip verwenden, dort stimmt die Baudrate.

Ich werde wohl in der naechsten Release eine Meshbean-Firmware
(230,212) beilegen, da die Frage nach einem Zigbit-Sniffer auch
schon mal  bei AVR Freaks auftauchte.

von Patrick C. (pcrom)


Lesenswert?

http://www.ti.com/tool/packet-sniffer
Software ist kostenlos, man braucht einen dongle aber die sind auch 
nicht so teuer. Ich benutze es fuer Bluetooth 4.0 und da bezahlte ich 50 
euro fuer starterkit (dongle+evaluation board). Da brauchst du einen 
dongle fuer Zigbee.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Patrick C. schrieb:
> Da brauchst du einen
> dongle fuer Zigbee.

Ah ja.  Und wo genau findet man selbige bei TI für 868/916 MHz? ;-)

von Patrick C. (pcrom)


Lesenswert?

> Ah ja.  Und wo genau findet man selbige bei TI für 868/916 MHz? ;-)

Ja, da hast du recht, das hatte ich nicht gut gelesen...

von Peter (Gast)


Lesenswert?

Danke für den Hinweis, nun funktioniert alles wie gewünscht.

Peter

von A. W. (uracolix)


Lesenswert?

>nun funktioniert alles wie gewünscht.

Schoen! Weitere Wuensche und Anregungen gern auch per
Mailingliste uracoli-devel at nongnu dot org
(bitte in englisch).

von Markus K. (winny)


Lesenswert?

Hallo,

ich hab das damals mit dem Dresden Elektronik Board hinbekommen. Mit der 
aktuellen Version bekomme ich es unter Windows mit dem Any900 Stick auch 
hin mitzusniffen. Wir haben allerdings auch eigene Module, die den 
ZigBit900-Chip benutzen. Mit diesen funktioniert die Firmware des Any900 
Sticks nicht. Mir ist nicht so ganz klar woran das liegt. Es wird 
ebenfalls die Uart1 benutzt. Den einzigen Unterschied, den ich sehe ist, 
dass wir einen FTDI FT232 als USB-Uart Bridge einsetzten. Mit einer 
CP2102 USB-Uart Bridge hat es allerdings auch nicht funktioniert. Der 
Any900 benutzt den CP2103, aber daran kann es doch eigentlich nicht 
liegen, oder?

Grüße
Markus

von Markus K. (winny)


Lesenswert?

Noch zur Info:

Das Python Programm sniffer_io.py hängt sich mit der folgenden 
Fehlermeldung auf:

  File 
"C:\Users\krausse\Downloads\Sniffer_mit_Wireshark\uracoli-sniffer-
racoli-sniffer-0.3.1\script\sniffer_io.py", line 175, in info
    'tscale' : self.tscale,
AttributeError: PortIn instance has no attribute 'tscale'

Wenn ich das Attribut auskommentiere fehlen die nächsten Attribute
ticknb,rates und plattform.

Grüße
Markus

von A. W. (uracolix)


Lesenswert?

Da stimmt was mit der seriellen Schnittstelle nicht.

Am besten mal ein Terminal aufmachen und dann
Reset am Board druecken. Danach erscheint:

====================================
Sniffer V0.1 [<boardname>]
====================================

Mit dem Kommando "parms" sollte die
Ausgabe in etwa wie folgt aussehen:

====================================
> parms
PLATFORM: stb231 V0.1
SUPP_CMSK: 0x7fff800
CURR_CMSK: 0x7fff800
CURR_CHAN: 11
CURR_PAGE: 0
CURR_RATE: OQPSK250
SUPP_RATES: OQPSK250 OQPSK500 OQPSK1000 OQPSK2000
TIMER_SCALE: 1.0/8000000
TICK_NUMBER: 65536
CHKCRC: 0
MISSED_FRAMES: 0
OK
====================================

Folgende Ideen zur Fehlersuche:

1) COM-Port von zwei Programmen zugleich geoeffnet
2) Falsche Baudrate
3) Hardware-Handshake enabled --> muss aus sein.

von A. W. (uracolix)


Lesenswert?

Achso, ich hatte das vorige Post uebersehen.


Sind die Fuses des Zigbits auf 8MHz internal RC OSC, LowFuse = 0xe2
(default ist glaube ich 0x62 -> 1MHz, dann stimmt die Baudrate nicht).

Die UART bridge CP2103 oder FTDI wuerde ich nicht in Verdacht haben,
wenn sie prinzipiell zuvor schon mal gegangen ist.

von Markus K. (winny)


Lesenswert?

Ich habe daheim jetzt nur Module mit 2400MHz ZigBit Chip. Aber damit 
klappt es jetzt nachdem ich die Fuse auf 0xe2 gesetzt habe. Die 900Mhz 
Module kann ich erst wieder am Donnerstag testen, aber das sollte dann 
ja auch gehen. Vielen Dank.

So ganz verstanden hab ich das mit der Fuse aber nicht oder besser 
gesagt warum funktioniert die serielle Schnittstelle jedesmal, wenn ich 
eine Firmware mit AVRStudio 5.1/Bitcloud bzw. AVRStudio 5.1/MAC-Stack 
erstelle. Ich kann dann die Fuse setzen wie ich will. Die Ausgabe 
funktioniert jedes Mal. F_CPU bleibt immer auf 8000000UL. Da frag ich 
mich jetzt natürlich, wie dies dort gelöst wurde???

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Markus K. schrieb:
> So ganz verstanden hab ich das mit der Fuse aber nicht oder besser
> gesagt warum funktioniert die serielle Schnittstelle jedesmal, wenn ich
> eine Firmware mit AVRStudio 5.1/Bitcloud bzw. AVRStudio 5.1/MAC-Stack
> erstelle.

Vermutlich benutzt du deren "ELF production file", welches die
Fuse-Einstellungen mit beinhaltet.

Oder aber, sie setzen den clock prescaler einfach zur Laufzeit.  Könnte
man natürlich auch in µracoli einbauen.

von Markus K. (winny)


Lesenswert?

Ich benutze schon das hex-File. Und die Fuse kann ich auch noch ändern 
nachdem die Firmware auf dem Chip ist. Ändert auch nix. Muss dann eher 
die zweite Lösung sein. Bedeutet das die Fuses werden zur Laufzeit 
ausgelesen oder wie darf ich mir das vorstellen?

von A. W. (uracolix)


Lesenswert?

Die Fuses verdrahten u.a. fest die Clockauswahl in der MCU, man kann sie
zur Laufzeit im Programm zwar lesen, aber das dient nur fuer
Diagnose-Zwecke. Nicht einmal der Bootloader kann die Werte der Fuses
aendern, das geht nur mit einem externen Programmer, ISP, JTAG oder
HighVoltage.

Leider kenne ich mich mit AVR-Studio gar nicht aus, so dass ich keine
Ahnung habe, wann welches Studio-Modul an welchen Einstellungen dreht.
Ich errinnere mich nur mit Grausen an ein Setting in der GUI, das die
EESAVE-Fuse per Software ausser Kraft setzte, d.h. trotz gesetzter Fuse
war nach einem Programmierzyklus der EEPROM Inhalt 0xff :-(

von Peter Schmidt (Gast)


Lesenswert?

Mit einem DVB-T Stick (R820t und RTL2832), gnu radio und UCLA ZigBee 
sollte man doch eigentlich auch einen Packet Sniffer zusammenclicken 
können, oder?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Markus K. schrieb:
> Bedeutet das die Fuses werden zur Laufzeit
> ausgelesen oder wie darf ich mir das vorstellen?

Man kann zur Laufzeit den clock prescaler neu einstellen.

Die CKDIV8-Fuse legt lediglich fest, ob initial beim Reset ein
1:8-Vorteiler bereits aktiviert ist oder nicht.  Zur Laufzeit kann
man aber beliebig zwischen 1:1 und 1:256 (bei macnhen AVRs auch bis
1:1024) einstellen.  Damit ist man völlig unabhängig von der
CKDIV8-Fuse.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.