إنشاء جهاز توجيه حدود 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

  • الاستخدام التلقائي يُفعِّل النص البرمجي للإعداد توجيه الحدود بشكل تلقائي. لتفعيل "توجيه الحدود"، حدِّد واجهة إيثرنت أو منصة 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"

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

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 لسلسلة المحادثات (القيمة التلقائية هي wpan0) التي ترتبط بها otbr-agent بتصميم RCP.

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

disabled

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

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

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

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