במדריך הזה נסביר על תהליך ה-build וההגדרה הבסיסיים של OpenThread Border Router (OTBR). בסיום התהליך, תהיה לכם OTBR שפועל כמכשיר Full Thread Device (FTD) בתכנון RCP.
הגדרת הפלטפורמה
הגדרת פלטפורמת חומרה נתמכת:
פיתוח וטעינה של RCP
OTBR פועל על תכנון RCP. בוחרים פלטפורמת OpenThread נתמכת שתשמש כ-RCP, ופועלים לפי ההוראות לבניית הפלטפורמה והפלאש.
במדריך הבנייה תוכלו לקרוא סקירה כללית על פיתוח פרוטוקול OpenThread.
הוראות ספציפיות ליצירת פלטפורמות נתמכות באמצעות GNU Autotools מפורטות בתיקיית הפלטפורמה של כל דוגמה.
התקנת OTBR
OTBR מתקשר עם RCP דרך spinel. כדי להתקין את 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
שימוש ברירת מחדל. סקריפט ההגדרה מפעיל את Border Routing כברירת מחדל. כדי להפעיל ניתוב גבול, צריך לציין את ממשק האתרנט או ה-Wi-Fi של הפלטפורמה:
שימוש ב-Ethernet:
INFRA_IF_NAME=eth0 ./script/setup
שימוש ב-Wi-Fi:
INFRA_IF_NAME=wlan0 ./script/setup
BeagleBone Black. שימוש ב-Network Manager (אופציונלי):
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"
כדי לעדכן ממשק 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 של 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
.