إنشاء جهاز توجيه حدود OpenThread وضبطه

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

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

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

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

إنشاء RCP والفلاش

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

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

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

تثبيت 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"

لتحديث واجهة 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

وإذا كانت هذه الخدمات قيد التشغيل، ولكن حالة العائد لكل مستخدم (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 بنجاح ولم تكن العقدة جزءًا من شبكة 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.