מדריך זה מכסה את ההרכב והתצורה הבסיסיים של Openthread Router (OTBR). בסיום התהליך, יהיה לכם OTBR המשמש כמכשיר Thread מלא (FTD) בעיצוב RCP.
הגדרת הפלטפורמה
הגדרה של פלטפורמת חומרה נתמכת:
יצירה ופלאש בעזרת RCP
OTBR פועל בעיצוב RCP. יש לבחור פלטפורמה נתמכת פתוחה של Openthread כדי להשתמש בה כ-CPP ולפעול בהתאם להוראות הבנייה והפלאש לפלטפורמה הזו.
לקבלת סקירה כללית של בניית 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
מכיל את שם הממשק שלך בשרשור, שם של ממשק 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
מוודאים שה-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
.