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