১. ভূমিকা

ওপেনথ্রেড হলো থ্রেড® নেটওয়ার্কিং প্রোটোকলের একটি ওপেন-সোর্স বাস্তবায়ন, যা ইন্টারনেট অফ থিংস (IoT) ডিভাইসের জন্য ডিজাইন করা একটি শক্তিশালী ও সুরক্ষিত ওয়্যারলেস মেশ নেটওয়ার্কিং প্রোটোকল। ওপেনথ্রেড গুগলের নেস্ট টিম দ্বারা তৈরি করা হয়েছে এবং এটি একটি ওপেন-সোর্স প্রজেক্ট হিসেবে ডেভেলপার কমিউনিটির জন্য বিনামূল্যে উপলব্ধ।
থ্রেড স্পেসিফিকেশন স্মার্ট হোম এবং বাণিজ্যিক ভবনগুলিতে সাধারণত পাওয়া যায় এমন সীমিত-সম্পদযুক্ত ডিভাইসগুলির জন্য একটি নির্ভরযোগ্য, সুরক্ষিত এবং শক্তি-সাশ্রয়ী ওয়্যারলেস যোগাযোগ প্রোটোকল প্রতিষ্ঠা করে। ওপেনথ্রেড-এর মধ্যে থ্রেডের সম্পূর্ণ নেটওয়ার্ক লেয়ারের পরিধি অন্তর্ভুক্ত রয়েছে, যেমন IPv6, 6LoWPAN, MAC নিরাপত্তাসহ IEEE 802.15.4, মেশ লিঙ্ক স্থাপন এবং মেশ রাউটিং।
টেলিংক, জেফির আরটিওএস (Zephyr RTOS)-এ ওপেনথ্রেড (OpenThread) ইমপ্লিমেন্টেশনকে একীভূত করেছে, যা টেলিংক হার্ডওয়্যারের সাথে নির্বিঘ্ন সামঞ্জস্যতা নিশ্চিত করে। এই ইন্টিগ্রেশনের সোর্স কোড গিটহাব (GitHub )-এ সহজেই পাওয়া যায় এবং এটি একটি সফটওয়্যার ডেভেলপমেন্ট কিট (SDK) হিসেবেও সরবরাহ করা হয়।
এই কোডল্যাবে, আপনি বাস্তব হার্ডওয়্যারে ওপেনথ্রেড প্রোগ্রাম করবেন, একটি থ্রেড নেটওয়ার্ক তৈরি ও পরিচালনা করবেন এবং নোডগুলোর মধ্যে বার্তা আদান-প্রদান করবেন। নিচের ছবিতে কোডল্যাবের হার্ডওয়্যার সেটআপটি দেখানো হয়েছে, যেখানে একটি ওটি বর্ডার রাউটার (OTBR) এবং একটি থ্রেড ডিভাইস রয়েছে।

আপনি যা শিখবেন
- Telink Zephyr ডেভেলপমেন্ট এনভায়রনমেন্ট ব্যবহার করে OpenThread ইমপ্লিমেন্টেশন সেট আপ করতে।
- OpenThread CLI স্যাম্পলগুলো (
ot-cli-ftdএবংot-rcp) বিল্ড করে Telink B91 ডেভেলপমেন্ট বোর্ডে ফ্ল্যাশ করতে হবে। - Raspberry Pi 3B+ বা তার পরবর্তী সংস্করণে Docker ব্যবহার করে একটি OpenThread Border Router (OTBR) সেট আপ করতে।
- OTBR-এ একটি থ্রেড নেটওয়ার্ক তৈরি করতে।
- আউট-অফ-ব্যান্ড ডিবাগিং ব্যবহার করে থ্রেড নেটওয়ার্কে ডিভাইস যুক্ত করতে।
- CLI ব্যবহার করে থ্রেড নেটওয়ার্কের নোডগুলোর মধ্যে সংযোগ যাচাই করা।
আপনার যা যা লাগবে
হার্ডওয়্যার:
- দুটি বি৯১ উন্নয়ন বোর্ড।
- One Raspberry Pi 3B+ or greater with Raspbian OS Image.
- কমপক্ষে দুটি ইউএসবি পোর্টসহ একটি লিনাক্স মেশিন।
- একটি ইন্টারনেট-সংযুক্ত সুইচ (বা রাউটার) এবং কয়েকটি ইথারনেট ক্যাবল।
সফটওয়্যার:
- টেলিংক বার্নিং ও ডিবাগিং টুল — লিনাক্সবিডিটি।
- সিরিয়াল পোর্ট টার্মিনাল টুল, যেমন PuTTY।
- অন্যান্য টুল যেমন, গিট এবং ওয়েস্ট।
২. পূর্বশর্তসমূহ
থ্রেড কনসেপ্টস এবং ওপেনথ্রেড সিএলআই
এই কোডল্যাবটি শুরু করার আগে থ্রেডের মৌলিক ধারণা এবং ওপেনথ্রেড সিএলআই (OpenThread CLI)-এর সাথে পরিচিত হওয়ার জন্য ওপেনথ্রেড সিমুলেশন কোডল্যাবটি দেখে নিলে সহায়ক হতে পারে।
লিনাক্স মেশিন
লিনাক্স মেশিনটি (উবুন্টু ভি২০.০৪ এলটিএস বা তার পরবর্তী সংস্করণ) টেলিংক জেফির ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করতে এবং সমস্ত থ্রেড ডেভেলপমেন্ট বোর্ড ফ্ল্যাশ করার জন্য বিল্ড মেশিন হিসেবে কাজ করে। এই কাজগুলো সম্পন্ন করার জন্য লিনাক্স মেশিনটিতে দুটি খালি ইউএসবি পোর্ট এবং ইন্টারনেট সংযোগ প্রয়োজন।
সিরিয়াল পোর্ট সংযোগ এবং টার্মিনাল
আপনি ডিভাইসটি সরাসরি লিনাক্স মেশিনের ইউএসবি পোর্টে লাগাতে পারেন। এছাড়াও, ডিভাইসগুলো অ্যাক্সেস করার জন্য আপনার একটি সিরিয়াল পোর্ট টার্মিনাল টুলের প্রয়োজন হবে।
এই কোডল্যাবে, FTD Joiner এবং Raspberry Pi নিয়ন্ত্রণের জন্য টার্মিনাল টুল PuTTY ব্যবহার করা হয়েছে। এখানে এর ব্যবহারের একটি সংক্ষিপ্ত বিবরণ দেওয়া হয়েছে, তবে অন্যান্য টার্মিনাল সফটওয়্যারও ব্যবহার করা যেতে পারে।
টেলিংক বি৯১ ডেভেলপমেন্ট কিট
This codelab needs two sets of B91 Development Kits. The photo below displays the minimum required components in one set.

এই কিটগুলোর মধ্যে একটি আরসিপি (রেডিও কো-প্রসেসর) হিসেবে এবং অন্যটি এফটিডি (ফুল থ্রেড ডিভাইস) হিসেবে ব্যবহৃত হবে। যদি আপনার কাছে এখনও কিটটি না থাকে, তবে আপনি টেলিংকের অফিসিয়াল ওয়েবসাইট থেকে আরও বিস্তারিত তথ্য সংগ্রহ করতে পারেন। ব্যবহৃতব্য কিছু উপাদান নিচে দেওয়া হলো:
সূচী | নাম |
১ | টেলিঙ্ক বি৯১ উন্নয়ন বোর্ড |
২ | টেলিংক বার্নিং বোর্ড |
৩ | ২.৪ গিগাহার্জ অ্যান্টেনা |
৪ | ইউএসবি কেবল (ইউএসবি এ থেকে মিনি ইউএসবি) |
Raspbian OS ইমেজ সহ Raspberry Pi 3B+ বা তার চেয়ে উন্নত সংস্করণ
এই কোডল্যাবের জন্য, Raspbian Bullseye Lite OS ইমেজ অথবা Raspbian Bullseye with Desktop সহ একটি Raspberry Pi 3B+ বা তার চেয়ে উন্নত মডেলের প্রয়োজন হবে। এটি ইথারনেটের মাধ্যমে ইন্টারনেটে সংযুক্ত থাকবে এবং OpenThread Border Router (OTBR)-এর হোস্ট হিসেবে কনফিগার করা হবে।
নেটওয়ার্ক সংযোগ
একটি ইন্টারনেট-সংযুক্ত সুইচ (বা রাউটার) এবং কয়েকটি ইথারনেট ক্যাবল। এগুলো রাস্পবেরি পাইকে লিনাক্স মেশিনের সাথে সংযোগ করতে ব্যবহৃত হয়, যা হোস্টের মাধ্যমে রাস্পবেরি পাই-এর ব্যবহারকারীকে কনফিগারেশন করতে সুবিধা প্রদান করে।
লিনাক্সবিডিটি
টেলিংক বার্নিং অ্যান্ড ডিবাগিং টুল (বিডিটি) , যা সকল টেলিংক চিপ সিরিজের জন্য প্রযোজ্য, আপনাকে টেলিংক বি৯১ ডেভেলপমেন্ট বোর্ডে ওপেনথ্রেড ফার্মওয়্যার মুছে ফেলতে এবং ফ্ল্যাশ করতে দেয়। আপনার লিনাক্স মেশিনে এক্স৮৬-ভিত্তিক লিনাক্স সংস্করণ লিনাক্সবিডিটি ইনস্টল করুন।
অন্যান্য
- টেলিংক জেফির ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করার জন্য গিট।
- ওয়েস্ট, জেফির প্রজেক্ট পরিচালনা এবং ওপেনথ্রেড বাইনারি তৈরির জন্য।
৩. ফার্মওয়্যার সেট আপ করুন
টেলিংক জেফির ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করুন
লিনাক্স মেশিনে একটি CLI টার্মিনাল খুলুন এবং আপনার APT হালনাগাদ আছে কিনা তা নিশ্চিত করতে নিম্নলিখিত কমান্ডগুলো চালিয়ে শুরু করুন।
$ sudo apt update $ sudo apt upgrade
একবার সেটি হয়ে গেলে, নিম্নলিখিত ধাপগুলো অনুসরণ করুন।
- প্রয়োজনীয় উপাদানগুলো ইনস্টল করুন।
Zephyr-এর জন্য বর্তমানে প্রধান নির্ভরতাগুলির ন্যূনতম সংস্করণ প্রয়োজন, যেমন CMake (3.20.0), Python3 (3.6), এবং Devicetree Compiler (1.4.6)।$ wget https://apt.kitware.com/kitware-archive.sh $ sudo bash kitware-archive.sh $ sudo apt install --no-install-recommends git cmake ninja-build \ gperf ccache dfu-util device-tree-compiler python3-dev python3-pip \ python3-setuptools python3-tk python3-wheel xz-utils file make gcc \ gcc-multilib g++-multilib libsdl2-dev
পরবর্তী পদক্ষেপগুলিতে অগ্রসর হওয়ার আগে আপনার সিস্টেমে ইনস্টল করা সংস্করণগুলি যাচাই করুন। যদি সংস্করণগুলি সঠিক না হয়, তাহলে APT মিররটি একটি স্থিতিশীল এবং হালনাগাদ মিররে পরিবর্তন করুন, অথবা এই নির্ভরতাগুলি ম্যানুয়ালি আপডেট করুন।$ cmake --version $ python3 --version $ dtc --version
- পশ্চিম দিকে স্থাপন করুন।
নিশ্চিত করুন যে$ pip3 install --user -U west $ echo 'export PATH=~/.local/bin:"$PATH"' >> ~/.bashrc $ source ~/.bashrc
~/.local/binআপনার$PATHএনভায়রনমেন্ট ভেরিয়েবলে অন্তর্ভুক্ত আছে। - জেফির প্রজেক্টের সোর্স কোড সংগ্রহ করুন।
$ west init ~/zephyrproject $ cd ~/zephyrproject $ west update $ west blobs fetch hal_telink $ west zephyr-export
- Zephyr-এর জন্য অতিরিক্ত পাইথন নির্ভরতা ইনস্টল করুন।
$ pip3 install --user -r ~/zephyrproject/zephyr/scripts/requirements.txt
- Set up the Zephyr toolchain. Download the Zephyr toolchain (about 1~2 GB) to a local directory to allow you to flash most boards.
Zephyr SDK ডাউনলোড করুন এবং নিচে দেখানো অনুযায়ী প্রস্তাবিত পথে রাখুন।$ wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.1/zephyr-sdk-0.16.1_linux-x86_64.tar.xz $ wget -O - https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.1/sha256.sum | shasum --check --ignore-missing
যেখানে [-xyz] হলো একটি ঐচ্ছিক টেক্সট যা যেকোনো কিছু হতে পারে, যেমন -0.16.1। SDK ইনস্টল করার পর ডিরেক্টরিটি সরানো যাবে না। এরপর Zephyr টুলচেইনটি ইনস্টল করুন।$HOME/zephyr-sdk[-x.y.z] $HOME/.local/zephyr-sdk[-x.y.z] $HOME/.local/opt/zephyr-sdk[-x.y.z] $HOME/bin/zephyr-sdk[-x.y.z] /opt/zephyr-sdk[-x.y.z] /usr/zephyr-sdk[-x.y.z] /usr/local/zephyr-sdk[-x.y.z]
$ tar xvf zephyr-sdk-0.16.1_linux-x86_64.tar.xz $ cd zephyr-sdk-0.16.1 $ ./setup.sh -t riscv64-zephyr-elf -h -c
- হ্যালো ওয়ার্ল্ড উদাহরণটি বিল্ড করুন। প্রথমে, হ্যালো ওয়ার্ল্ড উদাহরণটি ব্যবহার করে অফিসিয়াল Zephyr প্রজেক্ট কনফিগারেশনটি সঠিক আছে কিনা তা যাচাই করুন, তারপর আপনার কাস্টম প্রজেক্ট সেট আপ করার জন্য এগিয়ে যান।
Zephyr রিপোজিটরির রুট ডিরেক্টরি থেকে hello_world উদাহরণটি বিল্ড করতে West বিল্ড কমান্ডটি ব্যবহার করুন। আপনি$ cd ~/zephyrproject/zephyr $ west build -p auto -b tlsr9518adk80d samples/hello_world
build/zephyr directoryঅধীনেzephyr.binনামের ফার্মওয়্যারটি খুঁজে পাবেন। - Zephyr এনভায়রনমেন্ট স্ক্রিপ্টটি
~/.bashrcতে যোগ করুন। নিম্নলিখিত কমান্ডগুলো চালান।$ echo "source ~/zephyrproject/zephyr/zephyr-env.sh" >> ~/.bashrc $ source ~/.bashrc
- Telink Zephyr রিমোট রিপোজিটরিটি যোগ করুন। Telink রিপোটি আপনার লোকাল মেশিনে একটি ডেভেলপমেন্ট ব্রাঞ্চ হিসেবে ডাউনলোড করুন এবং আপডেট করুন।
$ cd ~/zephyrproject/zephyr $ git remote add telink-semi https://github.com/telink-semi/zephyr $ git fetch telink develop $ git checkout develop $ west update $ west blobs fetch hal_telink
আরও তথ্যের জন্য, আপনি Zephyr Doc – Getting Started Guide দেখতে পারেন।
Telink LinuxBDT সেট আপ করুন
B91 ডেভেলপমেন্ট বোর্ডে ফার্মওয়্যার ফ্ল্যাশ করার জন্য, Telink LinuxBDT টুলটি ডাউনলোড করে আপনার লিনাক্স মেশিনের হোম ডিরেক্টরি ( ~ এর মতো একটি লোকাল ডিরেক্টরিতে এক্সট্র্যাক্ট করুন।
$ cd ~ $ wget http://wiki.telink-semi.cn/tools_and_sdk/Tools/BDT/LinuxBDT.tar.bz2 $ tar -vxf LinuxBDT.tar.bz2
ইউএসবি ইন্টারফেসের মাধ্যমে বার্নিং বোর্ডটিকে লিনাক্স মেশিনের সাথে সংযুক্ত করুন এবং তারপর নিম্নলিখিত কমান্ডগুলো প্রবেশ করান।
$ cd LinuxBDT $ sudo ./bdt lsusb -v Bus 002 Device 001: ID 1d6b:0003 xHCI Host Controller Bus 001 Device 003: ID 0bda:565a Integrated_Webcam_HD Bus 001 Device 023: ID 413c:301a Dell MS116 USB Optical Mouse Bus 001 Device 037: ID 248a:826a Telink Web Debugger v3.6 Bus 001 Device 001: ID 1d6b:0002 xHCI Host Controller
যদি আপনি "Telink Web Debugger v3.6" বার্তাটি দেখতে পান, তাহলে বুঝতে হবে যে BDT প্রোগ্রামারটি লিনাক্স মেশিনের সাথে সফলভাবে সংযুক্ত হয়েছে।
ফার্মওয়্যার সংকলন
এই কোডল্যাবটি দুই ধরনের ওপেনথ্রেড ফার্মওয়্যার তৈরি করবে:
-
ot-cli-ftd, - এবং
ot-rcp.
সংকলন পদ্ধতিগুলো নিম্নরূপঃ
- রেডিও কো-প্রসেসর (
ot-rcp)$ cd ~/zephyrproject $ rm -rf build_ot_coprocessor $ west build -b tlsr9518adk80d -d build_ot_coprocessor zephyr/samples/net/openthread/coprocessor -- -DDTC_OVERLAY_FILE="usb.overlay" -DOVERLAY_CONFIG=overlay-rcp-usb-telink.conf
- ইন্টারেক্টিভ কমান্ড লাইন সহ পূর্ণাঙ্গ থ্রেড ডিভাইস (
ot-cli-ftd)$ cd ~/zephyrproject $ rm -rf build_ot_cli_ftd $ west build -b tlsr9518adk80d -d build_ot_cli_ftd zephyr/samples/net/openthread/cli -- -DOVERLAY_CONFIG=overlay-telink-fixed-mac.conf -DCONFIG_OPENTHREAD_FTD=y
ফার্মওয়্যার ফ্ল্যাশ
নিচের চিত্রে দেখানো অনুযায়ী একটি USB কেবল ব্যবহার করে B91 ডেভেলপমেন্ট বোর্ডটিকে বার্নিং বোর্ডের সাথে সংযুক্ত করুন।

ফার্মওয়্যার বার্নিং সম্পন্ন করতে কমান্ড লাইনে নিম্নলিখিত কমান্ডগুলো চালান (উদাহরণ হিসেবে ot-cli-ftd ফার্মওয়্যার ফ্ল্যাশিং ব্যবহার করা হয়েছে)।
$ cd ~/zephyrproject/build_ot_cli_ftd/zephyr $ cp zephyr.bin ~/LinuxBDT/bin/ot-cli-ftd.bin $ cd ~/LinuxBDT $ sudo ./bdt 9518 ac Activate OK! $ sudo ./bdt 9518 wf 0 -i bin/ot-cli-ftd.bin EraseSectorsize... Total Time: 2181 ms Flash writing... [100%][-] [##################################################] File Download to Flash at address 0x000000: 491700 bytes Total Time: 30087 ms
ot-rcp এর ফ্ল্যাশ করার পদ্ধতিটি মূলত ot-cli-ftd এর মতোই। তবে, ফার্মওয়্যারের পাথ এবং নামে কিছু পার্থক্য রয়েছে।
ফ্ল্যাশ করার পর, দুটি B91 ডেভেলপমেন্ট বোর্ডকে যথাযথভাবে চিহ্নিত করে আলাদা করুন। ot-cli-ftd দিয়ে ফ্ল্যাশ করা বোর্ডটিকে "FTD Joiner" এবং ot-rcp দিয়ে ফ্ল্যাশ করা বোর্ডটিকে "RCP" হিসেবে লেবেল করুন।
৪. FTD জয়নার ডিভাইসের জন্য একটি সিরিয়াল কনসোল কনফিগার করুন।
ছবিতে দেখানো অনুযায়ী, FTD Joiner-টি সরাসরি লিনাক্স মেশিনের USB পোর্টে লাগিয়ে দিন।

লিনাক্স মেশিনে FTD Joiner Device সংযোগ করার পর, PuTTY খুলুন। তারপর একটি নতুন টার্মিনাল তৈরি করুন, সিরিয়াল পোর্টের তথ্য সেট করুন এবং সিরিয়াল পোর্টটি খুলুন।

OpenThread কমান্ড লাইন রেফারেন্সটি এখানে রয়েছে: OpenThread CLI Reference । সব কমান্ডের আগে অবশ্যই ot যোগ করবেন।
উদাহরণঃ
> ot state disabled Done > ot channel 11 Done >
5. Set up the Raspberry Pi as a OpenThread Border Router
একটি ওপেনথ্রেড বর্ডার রাউটার হলো দুটি প্রধান অংশ নিয়ে গঠিত একটি ডিভাইসঃ
- রাস্পবেরি পাই-তে বর্ডার রাউটার (BR) হিসেবে কাজ করার জন্য প্রয়োজনীয় সমস্ত পরিষেবা এবং ফার্মওয়্যার রয়েছে।
- আরসিপি থ্রেড যোগাযোগের জন্য দায়ী।
রেডিও কো-প্রসেসর (RCP)
ot-rcp ফার্মওয়্যার ফ্ল্যাশ করার জন্য, ot-cli-ftd ফার্মওয়্যার ফ্ল্যাশ করার প্রক্রিয়ার ধাপগুলোই অনুসরণ করুন। নিচের চিত্রে দেখানো অনুযায়ী B91 ডেভেলপমেন্ট বোর্ডটিকে রাস্পবেরি পাই-এর একটি USB পোর্টের সাথে সংযুক্ত করুন।

রাস্পবেরি পাই
- নিশ্চিত করুন যে Raspbian Bullseye Lite OS ইমেজ অথবা Raspbian Bullseye with Desktop এসডি কার্ডে সঠিকভাবে লেখা হয়েছে।
- আপনার কাছে রাস্পবেরি পাই-তে SSH করার অথবা সরাসরি রাসবিয়ান ডেস্কটপে কাজ করার বিকল্প রয়েছে। এই কোডল্যাবে SSH ব্যবহার করা হবে।
- পরবর্তী ধাপে OTBR ডকার ইনস্টল করার আগে, প্রথমে লোকাল রিপোজিটরি এবং প্যাকেজ ম্যানেজার আপডেট করে নিন।
$ sudo apt-get update $ sudp apt-get upgrade
ডকার ইনস্টল করুন
যদি আপনি আগের ধাপে শুধু লোকাল রিপোজিটরি এবং প্যাকেজ ম্যানেজার APT আপডেট করে থাকেন, তাহলে রাস্পবেরি পাই রিবুট করুন এবং তারপর একটি SSH টার্মিনাল উইন্ডো খুলুন।
- ডকার ইনস্টল করুন:
$ curl -sSL https://get.docker.com | sh
- বর্তমান অ্যাকাউন্টটিকে একটি ডকার গ্রুপে যুক্ত করে অনুমতি দিন, যাতে প্রতিটি কমান্ডের সামনে
sudoযোগ করার প্রয়োজন না হয়। পরিবর্তনটি কার্যকর করার জন্য আপনাকে রাস্পবেরি পাই পুনরায় চালু করতে হবে।$ sudo usermod -aG docker $USER
- যদি ডকার চালু না হয়ে থাকে, তবে এটি চালু করুন:
$ sudo dockerd
- OTBR ফায়ারওয়াল স্ক্রিপ্টগুলো ডকার কন্টেইনারের ভেতরে রুল তৈরি করে। তার আগে, iptables-এর কার্নেল মডিউল লোড করার জন্য
modprobeএক্সিকিউট করুন।$ sudo modprobe ip6table_filter
ডকার কনফিগার এবং রান করুন
এই কোডল্যাবটি সরাসরি ওপেনথ্রেড ডকার হাব থেকে OTBR ডকার ইমেজটি পুল করে। এই ইমেজটি ওপেনথ্রেড টিম দ্বারা পরীক্ষিত ও যাচাইকৃত।
- সর্বশেষ ছবিটি টানুন:
$ docker pull openthread/otbr:latest
- ডকার কন্টেইনারের ইমেজ তালিকাটি পরীক্ষা করুন:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE openthread/otbr latest db081f4de15f 6 days ago 766MB
- Determine the serial port name of the RCP device by checking
/dev,ttyACM0indicates that the RCP is correctly connected.$ ls /dev/tty* ... /dev/ttyACM0 ...
- প্রথমবার OTBR ডকারটি চালান এবং RCP-এর সিরিয়াল পোর্ট (
ttyACM0) উল্লেখ করুন। যদি আপনি এই OTBR ডকারটি ব্যবহার করা চালিয়ে যেতে চান, তাহলে `docker start otbr` কমান্ডটি ব্যবহার করুন।$ docker run --name "otbr" --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" -p 8080:80 --dns=127.0.0.1 -it --volume /dev/ttyACM0:/dev/ttyACM0 --privileged openthread/otbr --radio-url spinel+hdlc+uart:///dev/ttyACM0
- Raspberry Pi এবং RCP-এর মধ্যে সংযোগ পরীক্ষা করার জন্য একটি নতুন SSH টার্মিনাল উইন্ডো খুলুন।
$ docker exec -ti otbr sh -c "sudo ot-ctl" > state disabled Done
ঐচ্ছিক ডকার কমান্ডসমূহ:
- চলমান ডকার কন্টেইনার সম্পর্কে তথ্য জানুন:
$ docker ps -aq
- OTBR ডকার বন্ধ করুন:
$ docker stop otbr
- OTBR ডকার অপসারণ করুন:
$ docker rm otbr
- OTBR ডকার পুনরায় লোড করুন:
$ docker restart otbr
এই পর্যায়ে, একটি FTD Joiner ডিভাইস এবং একটি OTBR প্রস্তুত আছে, এবং আপনি থ্রেড নেটওয়ার্ক তৈরি করার জন্য পরবর্তী ধাপে অগ্রসর হতে পারেন।
৬. একটি থ্রেড নেটওয়ার্ক তৈরি করুন
RCP-তে একটি থ্রেড নেটওয়ার্ক তৈরি করুন
আমরা একটি থ্রেড নেটওয়ার্ক স্থাপন করার জন্য OTBR-এ ot-ctl শেল ব্যবহার করি। আপনি যদি গত বিভাগে শেলটি থেকে বেরিয়ে গিয়ে থাকেন, তবে SSH টার্মিনালে এটি আবার চালু করতে নিম্নলিখিত কমান্ডটি লিখুন:
$ docker exec -ti otbr sh -c "sudo ot-ctl"
এরপর, সারণিতে নির্দিষ্ট করা ক্রমানুসারে কমান্ডগুলো প্রবেশ করান এবং পরবর্তী ধাপে যাওয়ার আগে নিশ্চিত করুন যে প্রতিটি ধাপ প্রত্যাশিত ফলাফল অর্জন করেছে।
সূচী | আদেশ | ভূমিকা | প্রত্যাশিত প্রতিক্রিয়া | ||
১ | | একটি নতুন র্যান্ডম নেটওয়ার্ক ডেটাসেট তৈরি করুন। | সম্পন্ন হয়েছে | ||
২ | | নন-ভোলাটাইল স্টোরেজে থাকা অ্যাক্টিভ অপারেশনাল ডেটাসেটে নতুন ডেটাসেটটি কমিট করুন। | সম্পন্ন হয়েছে | ||
৩ | | IPv6 ইন্টারফেসটি চালু করুন। | সম্পন্ন হয়েছে | ||
৪ | | থ্রেড প্রোটোকল অপারেশন সক্রিয় করুন এবং একটি থ্রেড নেটওয়ার্কের সাথে সংযুক্ত হন। | সম্পন্ন হয়েছে | ||
থ্রেড ইন্টারফেসটি চালু হওয়ার জন্য ১০ সেকেন্ড অপেক্ষা করুন। | |||||
৫ | | ডিভাইসের অবস্থা পরীক্ষা করুন। এই কমান্ডটি একাধিকবার কল করা যেতে পারে যতক্ষণ না এটি লিডার হয়ে পরবর্তী ধাপে যায়। | নেতা | ||
৬ | | সম্পূর্ণ সক্রিয় অপারেশনাল ডেটাসেটটি যাচাই করুন এবং নেটওয়ার্ক কী রেকর্ড করুন। | সক্রিয় টাইমস্ট্যাম্প: ১ | ||
নেটওয়ার্ক তৈরির সময় OTBR দ্বারা দৈবচয়নে তৈরি হওয়া নেটওয়ার্ক কী-টি ব্যবহৃত হবে যখন ot-cli-ftd ডিভাইসগুলি এই থ্রেড নেটওয়ার্কে যোগদান করবে।
Add the FTD Joiner to Thread through out-of-band commissioning
আউট-অফ-ব্যান্ড কমিশনিং বলতে বোঝায়, নেটওয়ার্কে যোগদানের অপেক্ষায় থাকা ডিভাইসগুলিতে ওয়্যারলেস-বহির্ভূত পদ্ধতির মাধ্যমে (যেমন, OpenThread CLI-তে ম্যানুয়ালি প্রবেশ করিয়ে) নেটওয়ার্ক ক্রেডেনশিয়াল প্রেরণ করা। FTD Joiner-এর সিরিয়াল কনসোলে ক্রমানুসারে নিম্নলিখিত কমান্ডগুলি প্রবেশ করান।
সূচী | আদেশ | ভূমিকা | প্রত্যাশিত প্রতিক্রিয়া | ||
১ | | একটি ডিভাইসকে থ্রেড নেটওয়ার্কে সংযোগ করার জন্য শুধুমাত্র নেটওয়ার্ক কী-টিই প্রয়োজন। | সম্পন্ন হয়েছে | ||
২ | | নন-ভোলাটাইল স্টোরেজে থাকা অ্যাক্টিভ অপারেশনাল ডেটাসেটে নতুন ডেটাসেটটি কমিট করুন। | সম্পন্ন হয়েছে | ||
৩ | | IPv6 ইন্টারফেসটি চালু করুন। | সম্পন্ন হয়েছে | ||
৪ | | থ্রেড প্রোটোকল অপারেশন সক্রিয় করুন এবং একটি থ্রেড নেটওয়ার্কের সাথে সংযুক্ত হন। | সম্পন্ন হয়েছে | ||
ডিভাইসটি সংযুক্ত ও কনফিগার হওয়ার জন্য ২০ সেকেন্ড অপেক্ষা করুন। | |||||
৫ | | ডিভাইসের অবস্থা যাচাই করুন। | শিশু/রাউটার | ||
টপোলজি
নিচের কোড স্নিপেটগুলোর মতো প্রতিক্রিয়া পেতে SSH টার্মিনালে ipaddr , child table , router table এর মতো কমান্ডগুলো লিখুন।
> ipaddr rloc fd8c:60bc:a98:c7ba:0:ff:fe00:b000 Done > child table | ID | RLOC16 | Timeout | Age | LQ In | C_VN |R|D|N|Ver|CSL|QMsgCnt|Suprvsn| Extended MAC | +-----+--------+------------+------------+-------+------+-+-+-+---+---+-------+-------+------------------+ | 1 | 0xb001 | 240 | 23 | 3 | 51 |1|1|1| 3| 0 | 0 | 129 | 82bc12fbe783468e | Done > router table | ID | RLOC16 | Next Hop | Path Cost | LQ In | LQ Out | Age | Extended MAC | Link | +----+--------+----------+-----------+-------+--------+-----+------------------+------+ | 44 | 0xb000 | 63 | 0 | 0 | 0 | 0 | 7ae354109d611f7e | 0 | Done ... > child table | ID | RLOC16 | Timeout | Age | LQ In | C_VN |R|D|N|Ver|CSL|QMsgCnt|Suprvsn| Extended MAC | +-----+--------+------------+------------+-------+------+-+-+-+---+---+-------+-------+------------------+ Done > router table | ID | RLOC16 | Next Hop | Path Cost | LQ In | LQ Out | Age | Extended MAC | Link | +----+--------+----------+-----------+-------+--------+-----+------------------+------+ | 33 | 0x8400 | 63 | 0 | 3 | 3 | 13 | e61487c1cda940a6 | 1 | | 44 | 0xb000 | 63 | 0 | 0 | 0 | 0 | 7ae354109d611f7e | 0 | Done
OTBR-এর RLOC16 হলো 0xb000 এবং FTD Joiner-এর RLOC16 প্রাথমিকভাবে 0xb001 । এরপর রাউটার আইডি পাওয়ার পর FTD Joiner-এর RLOC16 হয়ে যায় 0x8400 । এতে দেখা যায় যে, FTD Joiner-টিকে চাইল্ড থেকে মেশ এক্সটেন্ডারে আপগ্রেড করা হয়েছে।
বর্তমান থ্রেড নেটওয়ার্কটিতে দুটি নোড রয়েছে এবং এর টপোলজিটি নিচের চিত্রে দেখানো হয়েছে।

৭. থ্রেড ডিভাইসগুলির মধ্যে যোগাযোগ
ICMPv6 যোগাযোগ
একই নেটওয়ার্কে থাকা থ্রেড ডিভাইসগুলো একে অপরের সাথে যোগাযোগ করতে পারে কিনা, তা পরীক্ষা করার জন্য আমরা ping ) কমান্ড ব্যবহার করি। প্রথমে, ডিভাইসটির RLOC পাওয়ার জন্য ipaddr কমান্ডটি ব্যবহার করুন।
> ipaddr fd8c:60bc:a98:c7ba:0:ff:fe00:fc11 fdbd:7274:649c:1:1d19:9613:f705:a5af fd8c:60bc:a98:c7ba:0:ff:fe00:fc10 fd8c:60bc:a98:c7ba:0:ff:fe00:fc38 fd8c:60bc:a98:c7ba:0:ff:fe00:fc00 fd8c:60bc:a98:c7ba:0:ff:fe00:b000 # Routing Locator (RLOC) fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6 fe80:0:0:0:78e3:5410:9d61:1f7e Done
পিং অপারেশনটি সম্পাদন করতে FTD Joiner-এর সিরিয়াল কনসোলে নিম্নলিখিত কমান্ডটি প্রবেশ করান।
> ot ping fd8c:60bc:a98:c7ba:0:ff:fe00:b000 16 bytes from fd8c:60bc:a98:c7ba:0:ff:fe00:b000: icmp_seq=1 hlim=64 time=19ms 1 packets transmitted, 1 packets received. Packet loss = 0.0%. Round-trip min/avg/max = 19/19.0/19 ms. Done
সিরিয়াল পোর্টের আউটপুট প্রতিক্রিয়া থেকে বোঝা যায় যে, OTBR প্রান্ত পিং অনুরোধটি পেয়েছে এবং FTD Joiner, OTBR কর্তৃক ফেরত পাঠানো পিং প্রতিক্রিয়াটি পেয়েছে। ডিভাইস দুটির মধ্যে যোগাযোগ সফল হয়েছে।
ইউডিপি যোগাযোগ
OpenThread দ্বারা প্রদত্ত অ্যাপ্লিকেশন পরিষেবাগুলির মধ্যে UDP-ও অন্তর্ভুক্ত। আপনি থ্রেড নেটওয়ার্কের নোডগুলির মধ্যে তথ্য আদান-প্রদান করতে, অথবা বর্ডার রাউটারের মাধ্যমে বাহ্যিক নেটওয়ার্কগুলিতে তথ্য পাঠাতে UDP API ব্যবহার করতে পারেন। OpenThread-এর UDP API-এর বিস্তারিত পরিচিতি "OpenThread CLI - UDP Example" -এ রয়েছে। এই কোডল্যাবটি OTBR এবং FTD Joiner-এর মধ্যে তথ্য প্রেরণের জন্য এর কিছু API ব্যবহার করবে।
প্রথমে, OTBR-এর মেশ-লোকাল EID সংগ্রহ করুন। এই অ্যাড্রেসটি থ্রেড ডিভাইসের IPv6 অ্যাড্রেসগুলোর মধ্যে একটি, এবং এটি একই থ্রেড নেটওয়ার্ক পার্টিশনে থাকা থ্রেড ডিভাইসগুলো অ্যাক্সেস করতে ব্যবহার করা যায়।
> ipaddr mleid fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6 Done
OTBR UDP সক্রিয় করতে এবং ডিভাইসটির 1022 পোর্ট বাইন্ড করতে SSH টার্মিনালে নিম্নলিখিত কমান্ডগুলি প্রবেশ করান।
> udp open Done > udp bind :: 1022 Done
সিরিয়াল কনসোলে নিম্নলিখিত কমান্ডগুলি প্রবেশ করান এবং FTD Joiner-এর UDP সক্রিয় করুন। ডিভাইসটির 1022 পোর্ট বাইন্ড করুন, এবং তারপর OTBR-এ একটি ৫-বাইট hello বার্তা পাঠান।
> ot udp open Done > ot udp bind :: 1022 Done > ot udp send fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6 1022 hello Done
SSH টার্মিনাল নিম্নলিখিত তথ্য আউটপুট করে। OTBR, FTD Joiner-এর কাছ থেকে hello বার্তাটি গ্রহণ করে, যার অর্থ UDP যোগাযোগ সফল হয়েছে।
> 5 bytes from fd8c:60bc:a98:c7ba:9386:63cf:19d7:5a61 1022 hello
৮. অভিনন্দন
আপনি একটি সাধারণ থ্রেড নেটওয়ার্ক তৈরি করেছেন এবং এই নেটওয়ার্কের মধ্যেকার যোগাযোগ যাচাই করেছেন।
আপনি এখন জানেন:
- টেলিংক জেফির ডেভেলপমেন্ট এনভায়রনমেন্ট কীভাবে তৈরি ও ব্যবহার করতে হয়।
- কিভাবে
ot-cli-ftdএবংot-rcpবাইনারিগুলো বিল্ড করতে হয় এবং সেগুলোকে Telink B91 ডেভেলপমেন্ট বোর্ডে ফ্ল্যাশ করতে হয়। - ডকার ব্যবহার করে কীভাবে একটি রাস্পবেরি পাই 3B+ বা উচ্চতর সংস্করণকে ওপেনথ্রেড বর্ডার রাউটার (OTBR) হিসেবে সেট আপ করবেন।
- OTBR-এ কীভাবে একটি থ্রেড নেটওয়ার্ক তৈরি করতে হয়।
- আউট-অফ-ব্যান্ড কমিশনিং-এর মাধ্যমে থ্রেড নেটওয়ার্কে কীভাবে ডিভাইস যুক্ত করা যায়।
- থ্রেড নেটওয়ার্কে নোডগুলোর মধ্যে সংযোগ কীভাবে যাচাই করা যায়।
আরও পড়ুন
Check out openthread.io and GitHub to learn about various OpenThread resources, including:
- সমর্থিত প্ল্যাটফর্ম — ওপেনথ্রেড সমর্থন করে এমন সমস্ত প্ল্যাটফর্ম সম্পর্কে জানুন
- OpenThread তৈরি করুন — OpenThread তৈরি ও কনফিগার করার বিষয়ে আরও বিস্তারিত তথ্য
- থ্রেড প্রাইমার — এই কোডল্যাবে আলোচিত থ্রেডের সমস্ত ধারণা এখানে আলোচনা করা হয়েছে।
রেফারেন্স নথি: