إصدار جهاز توجيه حدود OpenOpen والإعداد

عرض المصدر على 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

تثبيت البرامج التابعة

يُفعّل الإعداد التلقائي BORDER_ROUTING لمعظم الأنظمة الأساسية. للحصول على قائمة كاملة بعلامات OTBR التلقائية، راجع أمثلة الأنظمة الأساسية على GitHub. اختَر النظام الأساسي الذي تستخدمه، ثم انقر على default، إذا كان متاحًا.

  • الاستخدام التلقائي:

    cd ot-br-posix
    ./script/bootstrap
    
  • BeagleBone Black مع مدير الشبكة (اختياري):

    cd ot-br-posix
    NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/bootstrap
    

تجميع وتثبيت OTBR

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

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

    INFRA_IF_NAME=eth0 ./script/setup
    

    استخدام Wi-Fi:

    INFRA_IF_NAME=wlan0 ./script/setup
    
  • تطبيق BeagleBone Black استخدام Network Manager (اختياري):

    NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/setup
    

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

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

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

ls /dev/tty*

بعد ذلك، تحقّق من إعدادات otbr-agent.

cd /etc/default
cat otbr-agent

يحتوي ملف الإعداد otbr-agent على اسم واجهة سلاسل المحادثات، واسم إيثرنت أو واجهة Wi-Fi، واسم منفذ تسلسلي لـ RCP.

OTBR_AGENT_OPTS="-I wpan0 -B OTBR_INFRA_IF_NAME spinel+hdlc+uart:///dev/ttyACM0 trel://OTBR_INFRA_IF_NAME"

ليست كل الأجهزة مُرفقة باسم المنفذ التسلسلي نفسه. إنّ أسماء المنافذ الأكثر شيوعًا هي ttyACM* وttyUSB*. ارجع إلى وثائق جهازك لتحديد اسم المنفذ التسلسلي المتوقع.

إذا لزم الأمر، حدِّث ملف الإعداد otbr-agent. على سبيل المثال، بالنسبة إلى واجهة Wi-Fi واسم منفذ تسلسلي لـ ttyUSB0:

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

لتحديث واجهة إيثرنت:

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

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

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

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

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

sudo systemctl status

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

  • mdns.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
             ├─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
  # enabled  ├─mdns.service
             │ └─725 /usr/sbin/mdnsd
             ├─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

يمكنك أيضًا التحقّق من كل خدمة على حدة:

sudo service mdns status
sudo service otbr-agent status
sudo service otbr-web status

يتم تفعيل otbr-web تلقائيًا لمعظم الأنظمة الأساسية. إذا لم يكن otbr-web مثبتًا، جرّب تمرير العلامة WEB_GUI:

WEB_GUI=1 ./script/bootstrap
INFRA_IF_NAME=wlan0 WEB_GUI=1 ./script/setup

التحقُّق من سرعة عرض المحتوى على الصفحة (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.