ساخت و پیکربندی روتر مرزی OpenThread

مشاهده منبع در GitHub

این راهنما ساخت و پیکربندی اولیه OpenThread Border Router (OTBR) را پوشش می دهد. پس از تکمیل این رویه، یک OTBR خواهید داشت که به عنوان یک دستگاه نخ کامل (FTD) در طراحی RCP عمل می کند.

پیکربندی پلت فرم

یک پلت فرم سخت افزاری پشتیبانی شده را پیکربندی کنید:

RCP را بسازید و فلش کنید

OTBR بر روی یک طراحی RCP اجرا می شود. یک پلتفرم OpenThread پشتیبانی شده را برای استفاده به عنوان RCP انتخاب کنید و دستورالعمل های ساختمانی و چشمک زن را برای آن پلتفرم دنبال کنید.

برای نمای کلی از ساخت OpenThread، به راهنمای ساختمان مراجعه کنید.

دستورالعمل‌های خاص در مورد ساختن پلتفرم‌های پشتیبانی‌شده با ابزار خودکار گنو را می‌توانید در پوشه پلتفرم هر نمونه پیدا کنید.

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
    

    استفاده از وای فای:

    INFRA_IF_NAME=wlan0 ./script/setup
    
  • BeagleBone Black . استفاده از مدیر شبکه (اختیاری):

    NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/setup
    

دستگاه RCP را متصل و پیکربندی کنید

دستگاه RCP فلش شده را از طریق USB به پلتفرم Border Router وصل کنید.

برای پیکربندی پورت سریال دستگاه 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 ارائه شده است. برای برقراری ارتباط با رابط Thread PAN (پیش‌فرض wpan0 است) که otbr-agent در طراحی RCP به آن متصل است، استفاده می‌شود.

اگر RCP با موفقیت اجرا شود و گره عضو یک شبکه Thread نباشد، خروجی باید مشابه زیر باشد:

disabled

اگر خروجی OpenThread daemon is not running ، با موارد زیر عیب یابی کنید:

  1. بررسی کنید که روتر مرزی قدرت کافی دارد (از آداپتور AC خارجی مناسب استفاده کنید).
  2. برد RCP را به پلتفرم Border Router جدا کرده و دوباره وصل کنید.
  3. بررسی کنید که دستگاه سریال RCP وجود دارد. برای مثال، اگر دستگاه باید به /dev/ttyUSB0 متصل شود:

    ls /dev/ttyUSB*
    /dev/ttyUSB0
    
  4. RCP را با تنظیم مجدد sudo ot-ctl reset کنید.

وضعیت RCP را دوباره با وضعیت sudo ot-ctl state کنید.