במדריך הזה מוסבר על תהליך הפיתוח והתצורה הבסיסיים של נתב OpenThread Border (OTBR). לאחר השלמת התהליך הזה, יהיה לכם מכשיר OTBR שפועל כמכשיר בפרוטוקול Thread מלא (FTD) בעיצוב RCP.
הגדרת הפלטפורמה
הגדרת פלטפורמת חומרה נתמכת:
יצירה ו-Flash של RCP
OTBR פועל בתכנון RCP. צריך לבחור OpenThread נתמך לשימוש כ-RCP לצורך מעקב אחר הבניין וההבהוב המתאים לפלטפורמה הזו.
לסקירה כללית של פיתוח OpenThread ניתן למצוא מדריך ליצירה.
הוראות ספציפיות לפיתוח פלטפורמות נתמכות באמצעות GNU Autotools שנמצא בכל אחת מהדוגמאות תיקיית הפלטפורמה.
התקנת OTBR
OTBR מתקשר עם ה-RCP באמצעות ספינל. כדי להתקין OTBR (דפדפן 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 המהבהב לפלטפורמת Border Router באמצעות 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
אם השירותים האלה פועלים, אבל הגורם המוגבל (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 של פרוטוקול Thread (ברירת המחדל היא wpan0
) שotbr-agent
שמקושרת בתכנון RCP.
אם ה-RCP פועל בהצלחה והצומת לא חבר בפרוטוקול Thread הרשת, הפלט אמור להיות דומה לזה:
disabled
אם הפלט הוא OpenThread daemon is not running
, אפשר לפתור את הבעיה לפי השלבים הבאים:
- צריך לוודא שלנתב הגבולות יש מספיק מתח (יש להשתמש בחיבור החיצוני המתאים) מתאם).
- מנתקים את לוח ה-RCP ומחברים אותו מחדש לפלטפורמה של Border Router.
יש לוודא שקיים מכשיר עם יציאה טורית מסוג RCP. לדוגמה, אם המכשיר צריך להיות מצורף אל
/dev/ttyUSB0
:ls /dev/ttyUSB*
/dev/ttyUSB0יש לאפס את ה-RCP באמצעות
sudo ot-ctl reset
.
צריך לבדוק שוב את סטטוס ה-RCP באמצעות sudo ot-ctl state
.