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