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

ดูแหล่งข้อมูลใน GitHub

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

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

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

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

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

ในภาพรวมของการสร้าง OpenThread โปรดดูคู่มือการสร้าง

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

ติดตั้ง OTBR

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

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

disabled

หากเอาต์พุตคือ OpenThread daemon is not running ให้แก้ปัญหาด้วยข้อมูลต่อไปนี้

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

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

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