הרכבה והגדרה של נתב גבולות

קל לארגן דפים בעזרת אוספים אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.

הצגת המקור ב-GitHub

מדריך זה מכסה את ההרכב והתצורה הבסיסיים של 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, פותרים את הבעיות הבאות:

  1. יש לוודא שבנתב הגבול יש מתח מספיק (יש להשתמש במתאם ה-AC החיצוני המתאים).
  2. יש לנתק ולחבר מחדש את לוח ה-RCP לפלטפורמת נתב הגבולות.
  3. יש לוודא שהמכשיר הסידורי של RCP קיים. לדוגמה, אם צריך לקשר את המכשיר אל /dev/ttyUSB0:

    ls /dev/ttyUSB*
    /dev/ttyUSB0
    
  4. איפוס ה-RCP באמצעות sudo ot-ctl reset.

יש לבדוק שוב את הסטטוס של ה-RCP עם sudo ot-ctl state.