คู่มือนี้ครอบคลุมการสร้างและการกําหนดค่าพื้นฐานของ Border Router แบบ OpenThread (OTBR) เมื่อดำเนินการขั้นตอนนี้เสร็จแล้ว คุณจะมี OTBR ที่ทำงานเป็นอุปกรณ์ Full Thread (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
สําหรับแพลตฟอร์มส่วนใหญ่ ดูรายการ 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