OpenThread Border Router بناء وتكوين

عرض المصدر على GitHub

يتناول هذا الدليل الإصدار الأساسي وإعداد جهاز توجيه حدّ OpenOpen Border (OTBR). عند الانتهاء من هذا الإجراء، سيصبح لديك OTBR يعمل كجهاز كامل سلسلة (FTD) في تصميم RCP.

إعداد النظام الأساسي

إعداد نظام أساسي متوافق للجهاز:

إنشاء RCP ووميضه

تعمل OTBR على تصميم RCP. اختَر منصّة Openthread متوافق لاستخدامها كبروتوكول RCP، واتّبِع التعليمات الأساسية والفلاشية لتلك المنصة.

للحصول على نظرة عامة عن إنشاء OpenString، راجع دليل البناء.

يمكن العثور على تعليمات محددة حول إنشاء منصات متوافقة باستخدام GNU Autotools في مجلد النظام الأساسي في كل مثال.

تثبيت OTBR

تتواصل OTBR مع RCP عبر القرص الدوّار. لتثبيت OTBR على النظام الأساسي للجهاز الذي تم إعداده، أكمل الخطوات التالية:

استنساخ مستودع OTBR:

git clone https://github.com/openthread/ot-br-posix

ثبِّت التبعيّات:

cd ot-br-posix
./script/bootstrap

تجميع OTBR وتثبيته. لاحظ أن النص البرمجي للإعداد يُفعِّل توجيه الحدود بشكل تلقائي. لتفعيل التوجيه عبر الحدود، حدِّد واجهة إيثرنت أو Wi-Fi الخاصة بالنظام الأساسي.

لاستخدام إيثرنت:

INFRA_IF_NAME=eth0 ./script/setup

لاستخدام Wi-Fi:

INFRA_IF_NAME=wlan0 ./script/setup

إرفاق جهاز RCP وضبطه

وصِّل جهاز RCP الوامض بمنصّة جهاز توجيه الحدود من خلال USB.

لضبط المنفذ التسلسلي لجهاز RCP في otbr-agent، حدِّد أولاً اسم المنفذ التسلسلي لجهاز RCP من خلال التحقّق من /dev:

ls /dev/tty*

بعد ذلك، إضافة هذا إلى /etc/default/otbr-agent. على سبيل المثال، بالنسبة إلى منفذ تسلسلي اسم ttyUSB0:

OTBR_AGENT_OPTS="-I wpan0 spinel+hdlc+uart:///dev/ttyUSB0"

جهِّز جهاز توجيه الحدود. في حال استخدام منصّة BeagleBone Black، يُرجى الاستمرار في الضغط على زر BOOT أثناء القيام بذلك.

من المفترض أن تبدأ خدمة OTBR عند التشغيل.

التحقّق من الخدمات

تحقَّق من تفعيل جميع الخدمات المطلوبة:

sudo systemctl status

في حال نجاح النص البرمجي setup، ستظهر الخدمات التالية في الإخراج:

  • avahi-daemon.service
  • otbr-agent.service
  • otbr-web.service

مثال:

● raspberrypi
    State: running
     Jobs: 0 queued
   Failed: 0 units
    Since: Thu 1970-01-01 00:00:01 UTC; 47 years 7 months ago
   CGroup: /
           ├─user.slice
           │ └─user-1000.slice
           │   ├─user@1000.service
           │   │ └─init.scope
           │   │   ├─576 /lib/systemd/systemd --user
           │   │   └─580 (sd-pam)
           │   └─session-c1.scope
           │     ├─480 /bin/login --
           │     └─585 -bash
           ├─init.scope
           │ └─1 /sbin/init
           └─system.slice
             ├─systemd-timesyncd.service
             │ └─334 /lib/systemd/systemd-timesyncd
             ├─dbus.service
             │ └─339 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
             ├─hciuart.service
             │ └─442 /usr/bin/hciattach /dev/serial1 bcm43xx 921600 noflow -
             ├─ssh.service
             │ └─621 /usr/sbin/sshd -D
  # enabled  ├─avahi-daemon.service
             │ ├─341 avahi-daemon: running [raspberrypi.local]
             │ └─361 avahi-daemon: chroot helper
  # enabled  ├─otbr-web.service
             │ └─472 /usr/sbin/otbr-web
             ├─triggerhappy.service
             │ └─354 /usr/sbin/thd --triggers /etc/triggerhappy/triggers.d/ --socket /run/thd.socket --user nobody --deviceglob /dev/input/event*
             ├─systemd-logind.service
             │ └─353 /lib/systemd/systemd-logind
  # enabled  ├─otbr-agent.service
             │ └─501 /usr/sbin/otbr-agent -I wpan0
             ├─cron.service
             │ └─350 /usr/sbin/cron -f
             ├─systemd-udevd.service
             │ └─154 /lib/systemd/systemd-udevd
             ├─rsyslog.service
             │ └─345 /usr/sbin/rsyslogd -n
             ├─bluetooth.service
             │ └─445 /usr/lib/bluetooth/bluetoothd
             ├─systemd-journald.service
             │ └─136 /lib/systemd/systemd-journald
             └─dhcpcd.service
               ├─409 wpa_supplicant -B -c/etc/wpa_supplicant/wpa_supplicant.conf -iwlan0
               └─466 /sbin/dhcpcd -q -w

إذا كانت هذه الخدمات قيد التشغيل، ولكن RPI في حالة تراجع، فقد تعذّر بدء بعض الخدمات الأخرى. تحقّق لمعرفة ما يلي:

sudo systemctl --failed

التحقُّق من سرعة عرض المحتوى على الصفحة (RCP)

تحقق من أن RCP في الحالة الصحيحة:

sudo ot-ctl state

ot-ctl هي أداة سطر أوامر يتم تقديمها مع OTBR. من المُستخدَم للاتصال بواجهة واجهة سلسلة المحادثات (PAN) (القيمة التلقائية هي wpan0) التي يرتبط بها otbr-agent في تصميم RCP.

إذا تم تشغيل RCP بنجاح ولم تكن العُقدة عضوًا في شبكة سلاسل محادثات، يجب أن تكون المخرجات مشابهة لما يلي:

disabled

إذا كان الناتج OpenThread daemon is not running، يمكنك تحديد المشكلة وحلّها باستخدام ما يلي:

  1. تحقق من أن جهاز توجيه الحدود مزوَّد بما يكفي من الطاقة (استخدِم محوِّل تكييف الهواء الخارجي المناسب).
  2. افصِل لوحة RCP وأعيد توصيلها بمنصّة جهاز توجيه الحدود.
  3. تحقق من وجود الجهاز التسلسلي لـ RCP. على سبيل المثال، إذا كان الجهاز مرفقًا بـ /dev/ttyUSB0:

    ls /dev/ttyUSB*
    /dev/ttyUSB0
    
  4. أعِد ضبط RCP باستخدام sudo ot-ctl reset.

تحقَّق من حالة RCP مرة أخرى من خلال sudo ot-ctl state.