يتناول هذا الدليل الخطوات الأساسية لإنشاء وضبط "جهاز توجيه الحدود" لبروتوكول 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
، يمكنك تحديد المشاكل وحلّها باستخدام ما يلي:
- تأكَّد من توفُّر طاقة كافية في جهاز توجيه الحدود (استخدِم محوّل AC الخارجي المناسب).
- افصل لوحة RCP وأعد توصيلها بمنصة Border Router.
تأكَّد من توفّر جهاز RCP التسلسلي. على سبيل المثال، إذا كان يجب إرفاق الجهاز بـ
/dev/ttyUSB0
:ls /dev/ttyUSB*
/dev/ttyUSB0أعِد ضبط وحدة التحكّم في حدود السرعة القصوى باستخدام
sudo ot-ctl reset
.
تحقَّق من حالة RCP مرة أخرى باستخدام sudo ot-ctl state
.