การสร้างและกําหนดค่าเราเตอร์ OpenThread Border

ดูแหล่งที่มาใน GitHub

คําแนะนํานี้ครอบคลุมบิวด์และการกําหนดค่าพื้นฐานของเราเตอร์ OpenThread Border Router (OTBR) เมื่อเสร็จสิ้นขั้นตอนนี้ คุณจะมี OTBR ที่ทํางานเป็นอุปกรณ์เทรดแบบเต็ม (FTD) ในการออกแบบ RCP

กําหนดค่าแพลตฟอร์ม

วิธีกําหนดค่าแพลตฟอร์มฮาร์ดแวร์ที่รองรับ

สร้างและแฟลช RCP

OTBR ออกแบบ RCP เลือกแพลตฟอร์ม OpenThread ที่รองรับเพื่อใช้เป็น RCP และทําตามวิธีการสร้างและกะพริบสําหรับแพลตฟอร์มนั้น

สําหรับภาพรวมของการสร้าง OpenThread ดูคู่มือการสร้าง

คุณสามารถดูคําแนะนําเฉพาะในการสร้างแพลตฟอร์มที่รองรับด้วย GNU Autotools ได้ในโฟลเดอร์แพลตฟอร์มของแต่ละตัวอย่าง

ติดตั้ง OTBR

OTBR สื่อสารกับ RCP ผ่าน Sprint หากต้องการติดตั้ง 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 แบบ Flash เข้ากับแพลตฟอร์มเราเตอร์ Border ผ่าน USB

หากต้องการกําหนดค่าพอร์ตอนุกรมของอุปกรณ์ RCP ใน otbr-agent ก่อนอื่นให้กําหนดชื่อพอร์ตอนุกรมของอุปกรณ์ RCP ด้วยการตรวจสอบ /dev ดังนี้

ls /dev/tty*

จากนั้นตรวจสอบการตั้งค่า otbr-agent

cd /etc/default
cat otbr-agent

โดยไฟล์การกําหนดค่า otbr-agent มีชื่ออินเทอร์เฟซเทรด, ชื่ออินเทอร์เฟซอีเทอร์เน็ตหรือ 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"

เปิด/ปิดเราเตอร์ Border หากใช้แพลตฟอร์ม 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 ซึ่งใช้เพื่อเชื่อมต่อกับอินเทอร์เฟซชุดข้อความ (ชุดข้อความเริ่มต้นคือ wpan0) ที่ otbr-agent เชื่อมโยงกับการออกแบบ RCP

หาก RCP ทํางานสําเร็จและโหนดไม่ได้เป็นสมาชิกของเครือข่ายเทรด เอาต์พุตควรมีลักษณะคล้ายกับด้านล่างนี้

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