إنشاء جهاز توجيه حدود OpenThread وإعداده

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

يتناول هذا الدليل الخطوات الأساسية لإنشاء وضبط "جهاز توجيه الحدود" لبروتوكول OpenThread (OTBR). بعد الانتهاء من هذا الإجراء، سيكون لديك OTBR يعمل كجهاز مؤشر ترابط كامل (FTD) بتصميم RCP.

ضبط المنصة

عليك ضبط نظام أساسي للأجهزة متوافق:

إنشاء برنامج RCP وتحديثه

يتم تشغيل ميزة "الاستبدال عند الترقية" على تصميم RCP. اختَر منصّة OpenThread متوافقة لاستخدامها كجهاز تحكم في شبكة الطاقة (RCP) واتّبِع تعليمات الإنشاء والبرمجة لتلك المنصة.

للحصول على نظرة عامة حول إنشاء OpenThread، يُرجى الاطّلاع على دليل الإنشاء.

يمكن العثور على تعليمات محددة حول إنشاء أنظمة أساسية متوافقة باستخدام 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 مع Network Manager (اختياري):

    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=1 NETWORK_MANAGER_WIFI=1 ./script/setup
    

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

وصِّل جهاز RCP الذي تم فلاشه بمنصّة Border Router عبر USB.

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

ls /dev/tty*

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

cd /etc/default
cat otbr-agent

يحتوي ملف الإعدادات otbr-agent على اسم واجهة Thread واسم واجهة Ethernet أو 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 في الحالة الصحيحة:

sudo ot-ctl state

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

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

disabled

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

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

    ls /dev/ttyUSB*
    /dev/ttyUSB0
    
  4. أعِد ضبط وحدة التحكّم في حدود السرعة القصوى باستخدام sudo ot-ctl reset.

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