คําแนะนํานี้ครอบคลุมบิวด์และการกําหนดค่าพื้นฐานของเราเตอร์ 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
ให้แก้ปัญหาด้วยสิ่งต่อไปนี้
- ตรวจสอบว่าเราเตอร์เส้นขอบมีพลังงานเพียงพอ (ใช้อะแดปเตอร์ AC ภายนอกที่เหมาะสม)
- ยกเลิกการเชื่อมต่อและเชื่อมต่อกระดาน RCP กับแพลตฟอร์ม Border Router อีกครั้ง
ยืนยันว่ามีอุปกรณ์ซีเรียลของ RCP อยู่ เช่น หากอุปกรณ์ควรเชื่อมต่อกับ
/dev/ttyUSB0
ls /dev/ttyUSB*
/dev/ttyUSB0รีเซ็ต RCP ด้วย
sudo ot-ctl reset
ตรวจสอบสถานะ RCP อีกครั้งด้วย sudo ot-ctl state