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

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

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

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

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

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

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

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

ดูภาพรวมการสร้าง 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

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

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

disabled

หากเอาต์พุตเป็น OpenThread daemon is not running ให้แก้ปัญหาต่อไปนี้

  1. ตรวจสอบว่าเราเตอร์เส้นขอบมีไฟเพียงพอ (ใช้อะแดปเตอร์ AC ภายนอกที่เหมาะสม)
  2. ยกเลิกการเชื่อมต่อและเชื่อมต่อบอร์ด RCP กับแพลตฟอร์มเราเตอร์ Border อีกครั้ง
  3. ยืนยันว่ามีหมายเลขซีเรียลของ RCP อยู่ เช่น หากอุปกรณ์ควรแนบ /dev/ttyUSB0

    ls /dev/ttyUSB*
    /dev/ttyUSB0
    
  4. รีเซ็ต RCP ด้วย sudo ot-ctl reset

ตรวจสอบสถานะ RCP อีกครั้งด้วย sudo ot-ctl state