Open Source & Linux Lab

It's better when it's simple

User Tools

Site Tools


etc:common_activities:zigbee

Стек ZigBee для Linux

Проект linux-zigbee реализует стек протоколов ieee802.15.4 в виде набора драйверов ядра linux, драйвер трансивера zigbee, firmware для трансивера и набор утилит. Взаимодействие с транисивером идет через последовательный порт. Отладка выполняется в UserModeLinux.

Внешние ссылки

Установка и настройка

Первый шаг – получить исходники драйвера (svn co https://zigbee-stack-t.svn.sourceforge.net/svnroot/zigbee-stack-t zigbee-stack-t). Дальше – zigbee-stack-t/trunk/README.txt с небольшими исправлениями:

  • перед компиляцией ядра пропатчить файлы include/linux/net.h и include/linux/socket.h: (для запуска sock-coord и sock-router требуется поддержка PF_ZIGBEE. Для этого следует modprobe af_zigbee, который регистрирует новый протокол. Для него-то и нужен новый индекс)
diff -bur linux-2.6.25-org/include/linux/net.h linux-2.6.25/include/linux/net.h
--- linux-2.6.25-org/include/linux/net.h        2008-04-17 06:49:44.000000000 +0400
+++ linux-2.6.25/include/linux/net.h    2008-08-10 00:58:00.000000000 +0400
@@ -26,7 +26,7 @@
 struct inode;
 struct net;

-#define NPROTO         34              /* should be enough for now..   */
+#define NPROTO         35              /* should be enough for now..   */

 #define SYS_SOCKET     1               /* sys_socket(2)                */
 #define SYS_BIND       2               /* sys_bind(2)                  */
diff -bur linux-2.6.25-org/include/linux/socket.h linux-2.6.25/include/linux/socket.h
--- linux-2.6.25-org/include/linux/socket.h     2008-04-17 06:49:44.000000000 +0400
+++ linux-2.6.25/include/linux/socket.h 2008-08-10 00:57:47.000000000 +0400
@@ -189,7 +189,7 @@
 #define AF_BLUETOOTH   31      /* Bluetooth sockets            */
 #define AF_IUCV                32      /* IUCV sockets                 */
 #define AF_RXRPC       33      /* RxRPC sockets                */
-#define AF_MAX         34      /* For now.. */
+#define AF_MAX         35      /* For now.. */

 /* Protocol families, same as address families. */
 #define PF_UNSPEC      AF_UNSPEC
  • на этапе сборки ядра, после make defconfig ARCH=um выполнить make menuconfig ARCH=um и поставить M в Library routines/CRC* functions;
  • вместо http://uml.nagafix.co.uk/FedoraCore5/FedoraCore5-x86-root_fs.bz2 удобнее использовать http://uml.nagafix.co.uk/Fedora8/Fedora8-x86-root_fs.bz2, особенно, если host-система – такая же. Иначе все может закончиться Floating Point Exception при запуске утилит (если версия glibc host-системы сильно отличается от той что в FedoraCore5), добавлением LDFLAGS+=-static и перекомпиляцией утилит;
  • после загрузки в uml отредактировать /etc/inittab, убрав последнюю строку (что-то заканчивающееся на ttyS0, через который мы работаем с устройством);
  • список загружаемых модулей должен быть длиннее чем указано в README.txt:
depmod
dmesg -n8
modprobe ieee80215_lib
modprobe zb
modprobe dbg_print
modprobe ieee80215 debug_opts=20 ts=1
modprobe zb_ldisc dev_name="my_dev1"
modprobe af_zigbee

Как это выглядит у меня

Цели объявленные в группе

  1. реализовать диссектор для Wireshark – решение
  2. сделать чтобы все уровни (LDISC, IEEE 802.15.4, ZigBee NWK) были независимы друг от друга
  3. определить и реализовать интерфейс сокетов на уровне IEEE 802.15.4 и ZigBee NWK
  4. реализовать ZigBee APL в пользовательском коде

Текущие результаты

Тестовый набор патчей для достижения первой цели:

  • патч для драйвера (http://groups.google.ru/group/osll/web/zigbee-stack-t_for-wshark_mac.patch) добавляющий утилиту tools/zbcap захватывающую пакеты ieee802.15.4 уровня MAC с указанного сетевого интерфейса в файл и функции перенаправления входящих и исходящих пакетов стека с уровня MAC в пакетный сокет;
  • патч для драйвера (http://groups.google.ru/group/osll/web/zigbee-stack-t_for-wshark_phy.patch) добавляющий утилиту tools/zbcap захватывающую пакеты ieee802.15.4 уровня PHY с указанного сетевого интерфейса в файл и функции перенаправления входящих и исходящих пакетов стека с уровня PHY в пакетный сокет;
  • патч для wireshark-1.0.2 (http://osll.googlegroups.com/web/wireshark-1.0.2-zigbee-phy.patch) добавляющий чтение и разбор пакетов ieee802.15.4 уровня PHY (работает и для 1.0.3).
etc/common_activities/zigbee.txt · Last modified: 2008/09/14 15:26 by jcmvbkbc