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

الاطّلاع على المصدر على GitHub

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

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

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

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

تعمل OTBR على تصميم 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 مع مدير الشبكة (اختياري):

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

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

  • الاستخدام التلقائي. يعمل النص البرمجي للإعداد على تفعيل التوجيه الحدودي تلقائيًا. للتفعيل توجيه الحدود، حدّد واجهة Ethernet أو 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 الوامض بمنصة جهاز توجيه الحدود عبر USB.

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

ls /dev/tty*

بعدها، تحقّقي من إعدادات otbr-agent.

cd /etc/default
cat otbr-agent

يحتوي ملف الإعداد "otbr-agent" على اسم واجهة Thread، وهو إيثرنت أو اسم واجهة 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"

لتحديث واجهة Ethernet:

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

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

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) لسلسلة Thread (الإعداد التلقائي هو wpan0) الذي otbr-agent في تصميم RCP.

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

disabled

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

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

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

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