คู่มือนี้มีเนื้อหาเกี่ยวกับการสร้างและการกำหนดค่าพื้นฐานของ OpenThread Border Router (OTBR) เมื่อเสร็จสิ้นขั้นตอนนี้ คุณจะมี OTBR ที่ทำงาน เป็นอุปกรณ์ Full Thread (FTD) ในการออกแบบ RCP
กำหนดค่าแพลตฟอร์ม
กำหนดค่าแพลตฟอร์มฮาร์ดแวร์ที่รองรับ ดังนี้
สร้างและ Flash RCP
OTBR จะทำงานบนการออกแบบ RCP เลือก OpenThread ที่รองรับ แพลตฟอร์มเพื่อใช้เป็น RCP และตามสิ่งปลูกสร้างและการกะพริบ วิธีการสำหรับแพลตฟอร์มนั้น
สำหรับภาพรวมของการสร้าง OpenThread โปรดดูที่ คู่มือการสร้าง
สามารถบอกวิธีการเฉพาะในการสร้างแพลตฟอร์มที่รองรับด้วย GNU Autotools ได้ ที่พบในแต่ละตัวอย่าง แพลตฟอร์ม
ติดตั้ง OTBR
OTBR สื่อสารกับ RCP ผ่านสปิเนล วิธีติดตั้ง OTBR ในอุปกรณ์ที่กำหนดค่าไว้ แพลตฟอร์มฮาร์ดแวร์ ให้ทำตามขั้นตอนต่อไปนี้
โคลนที่เก็บ OTBR ด้วยคำสั่งต่อไปนี้
git clone https://github.com/openthread/ot-br-posix
ติดตั้งการอ้างอิง
การกำหนดค่าเริ่มต้นจะเปิดใช้ BORDER_ROUTING
สำหรับแพลตฟอร์มส่วนใหญ่ สำหรับ
รายการ Flag เริ่มต้น OTBR ทั้งหมดโปรดดู
ตัวอย่างแพลตฟอร์มใน GitHub
เลือกแพลตฟอร์ม แล้วคลิก default
หากมี
การใช้งานเริ่มต้น:
cd ot-br-posix
./script/bootstrap
BeagleBone Black โดยใช้ Network Manager (ไม่บังคับ):
cd ot-br-posix
NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/bootstrap
คอมไพล์และติดตั้ง OTBR
การใช้งานเริ่มต้น สคริปต์การตั้งค่าจะเปิดใช้ Border Routing โดยค่าเริ่มต้น วิธีเปิดใช้งาน Border Routing ให้ระบุอินเทอร์เฟซอีเทอร์เน็ตหรือ 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 Router ผ่าน 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 Router หากใช้แพลตฟอร์ม 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
ให้แก้ปัญหาดังนี้
- ตรวจสอบว่า Border Router มีไฟเพียงพอ (ใช้ AC ภายนอกที่เหมาะสม อะแดปเตอร์)
- ยกเลิกการเชื่อมต่อและเชื่อมต่อบอร์ด RCP กับแพลตฟอร์ม Border Router อีกครั้ง
ยืนยันว่ามีอุปกรณ์ซีเรียล RCP อยู่ เช่น หากอุปกรณ์ ควรแนบกับ
/dev/ttyUSB0
:ls /dev/ttyUSB*
/dev/ttyUSB0รีเซ็ต RCP ด้วย
sudo ot-ctl reset
โปรดตรวจสอบสถานะ RCP อีกครั้งกับ sudo ot-ctl state