Roomba RF Protokoll (Teil 2)

Im zweiten Teil der Roomba RF Protokoll Reihe geht es um die Unterschiede im MAC Layer Protokoll. Unverständlicherweise wird beim Roomba nicht der IEEE 802.15.4 MAC Layer verwendet, sondern ein eigenes Protokoll, obwohl IEEE 802.15.4 ein Standard ist und lizens- und kostenfrei verwendet werden kann, im Gegensatz zum lizens- und kostenpflichtigen Zigbee Protokoll.
Das unterschiedliche MAC Layer Protokoll ist wahrscheinlich auch die Ursache dafür, das ich mit der Standard RZRAVEN Software keinen Erfolg beim Sniffen der Pakete hatte.

Unterschiede im MAC Layer

Die Protokolle sind zwar ähnlich aber im Detail doch sehr unterschiedlich, was das Reengineering nicht gerade einfach macht.

IEEE 802.15.4 MAC Layer Frame:

IEEE 802.15.4 Pakete sind im Little Endian Format. (HIGH Byte wird vor dem LOW Bate gesendet). Jedes Byte wird mit LSB zuerst gesendet.

  |  FCF  |Seq No|  Addressing |         Data          |  FCS  |
  |2 bytes|1 byte|0 to 20 bytes|Length-(Overhead) bytes|2 Bytes|
 

Hier findet man neben dem 2 Byte Frame Control Field (FCF) noch einen 1 Byte Frame Counter.

Roomba MAC Layer Frame:

  |  FCF  Seq No |  Addressing |         Data          |  FCS  |
  |2 bytes       |0 to xx bytes|Length-(Overhead) bytes|2 Bytes|
 

Beim Roomba Protokoll gibt es nur den kombinierten 2 Byte Frame Header / Frame Counter.

Wenn man nun mit Wireshark oder einem anderen Paket-Sniffer die Roomba Frames encoden möchte, erhält man lauter ‚unknown frame types‘ und ‚invalid address mode‘ Fehlermeldungen. Man müßte seinen eigenen Dissector für Wireshark schreiben oder das frame encoding abschalten.
wireshark-frame
wireshark-frame7

Frame Checksumme FCS

Zum Glück wird bei beiden MAC layer das selbe Format für die Frame Checksumme (FCS) verwendet. In den Wireshark Quellen findet man die genauen Parameter und den Algorythmus zur Checksummen Erzeugung.

   CRC16 is calculated using the x^16 + x^12 + x^5 + 1 polynomial
   as specified by ITU-T, and is calculated over the IEEE 802.15.4
   packet (excluding the FCS) as transmitted over the air. Note,
   that because the least significan bits are transmitted first, this
   will require reversing the bit-order in each byte. Also, unlike
   most CRC algorithms, IEEE 802.15.4 uses an initial and final value
   of 0x0000, instead of 0xffff (which is used by the CCITT).

Klingt kompliziert, aber es ist lösbar. Mein C# Sniffer kann inzwischen auch die Checksumme erzeugen. Damit steht dem Erzeugen/Senden eigener Frames eigentlich nichts mehr im Wege.
Roomba RF sniffer

Fazit

Mit den neuen Erkenntnissen und vor allem mit der Checksummen Erzeugung ist es nun möglich eigene Frames zu erzeugen und zu senden. Vorest als Notlösung auf PC Seite. Später ist es sicher besser, die ganze MAC Schicht auf dem Jackdaw Board laufen zu lassen und zum PC nur auf der Applikationsebene zu kommunizieren.

Weblinks

5 Antworten auf „Roomba RF Protokoll (Teil 2)“

  1. Ich wüsste gerne, was der Roomba mit den Lighthouses „bespricht“, unter anderem scheint er wenn er einen Raum fertig hat das Lighthouse zu bitten, den blockadestrahl zu beenden und stattdessen einen Leitstrahl von einer auf die andere Seite des Lighthouses zu bringen.

    Heute hat sich der Roomba bei mir von einem der Lighthouses einfangen lassen, daher weiss ich leider echt nicht, ob das so gut funktioniert.

    Ausserdem würde ich gerne KLEINERE lighthouses bauen, die ich in meine Türrahmen integrieren kann. Die von Roomba sind sehr klobig.

    1. Hallo Moritz,

      das Protokoll zwischen Roomba und Lighthouses habe ich mir leider nicht angeschaut. Die Lighthouses kann man sicher auch kleiner bauen. Den größten Teil nimmt das Batteriefach für die Baby Zellen ein. Die Elektronik Platine selbst befindet komplett im oberen Teil.

      LG Peter

  2. Hallo – kleine Korrektur: das ZigBee Protokoll selbst ist nicht lizenzpflichtig und die Nutzung von Zigbee-Stacks der verschiedenen Hersteller auch nicht mit direkten Kosten verbunden – die meisten Stacks werden von den Chip-Herstellern sogar kostenlos zum Download angeboten. Aber die Nutzung von ZigBee-IP d.h. Stack, Applikationsprofile oder gar Logos in einem kommerziellen Produkt erfordert die kostenpflichtige Mitgliedschaft in der Zigbee-Allianz und eine ebenfalls kostenpflichtige ZigBee-Zertifizierung dieses Produktes um es dann mit einem ZigBee-Logo versehen zu dürfen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert