আপনি কাছাকাছি RTT-সক্ষম Wi-Fi অ্যাক্সেস পয়েন্ট এবং পিয়ার ওয়াই-ফাই অ্যাওয়ার ডিভাইসগুলির দূরত্ব পরিমাপ করতে Wi-Fi RTT (রাউন্ড-ট্রিপ-টাইম) API দ্বারা প্রদত্ত Wi-Fi অবস্থান কার্যকারিতা ব্যবহার করতে পারেন।
আপনি যদি তিন বা ততোধিক অ্যাক্সেস পয়েন্টের দূরত্ব পরিমাপ করেন, তাহলে আপনি একটি মাল্টিলেটারেশন অ্যালগরিদম ব্যবহার করে ডিভাইসের অবস্থান অনুমান করতে পারেন যা সেই পরিমাপের জন্য সবচেয়ে উপযুক্ত। ফলাফল সাধারণত 1-2 মিটারের মধ্যে সঠিক হয়।
এই নির্ভুলতার সাথে, আপনি ইনডোর নেভিগেশন, দ্ব্যর্থহীন ভয়েস কন্ট্রোল (উদাহরণস্বরূপ, "এই আলোটি চালু করুন") এবং অবস্থান-ভিত্তিক তথ্য (উদাহরণস্বরূপ, "এর জন্য বিশেষ অফার আছে) এর মতো সূক্ষ্ম-দানাযুক্ত অবস্থান-ভিত্তিক পরিষেবাগুলি বিকাশ করতে পারেন। এই পণ্য?")।
অনুরোধকারী ডিভাইসটিকে Wi-Fi RTT দিয়ে দূরত্ব পরিমাপ করতে অ্যাক্সেস পয়েন্টগুলির সাথে সংযোগ করার প্রয়োজন নেই৷ গোপনীয়তা বজায় রাখার জন্য, শুধুমাত্র অনুরোধকারী ডিভাইস অ্যাক্সেস পয়েন্টের দূরত্ব নির্ধারণ করতে সক্ষম হয়; অ্যাক্সেস পয়েন্টে এই তথ্য নেই। ফোরগ্রাউন্ড অ্যাপের জন্য Wi-Fi RTT অপারেশন সীমাহীন কিন্তু ব্যাকগ্রাউন্ড অ্যাপের জন্য থ্রোটল করা হয়।
Wi-Fi RTT এবং সম্পর্কিত ফাইন-টাইম-মেজারমেন্ট (FTM) ক্ষমতাগুলি IEEE 802.11-2016 মান দ্বারা নির্দিষ্ট করা হয়েছে৷ Wi-Fi RTT-এর জন্য FTM দ্বারা প্রদত্ত সুনির্দিষ্ট সময়ের পরিমাপ প্রয়োজন কারণ এটি একটি প্যাকেট ডিভাইসগুলির মধ্যে একটি রাউন্ড ট্রিপ করতে যে সময় নেয় তা পরিমাপ করে এবং আলোর গতি দ্বারা সেই সময়কে গুণ করে দুটি ডিভাইসের মধ্যে দূরত্ব গণনা করে।
অ্যান্ড্রয়েড সংস্করণের উপর ভিত্তি করে বাস্তবায়ন পার্থক্য
Android 9 (API লেভেল 28) এ Wi-Fi RTT চালু করা হয়েছিল। Android 9 চালিত ডিভাইসগুলির সাথে মাল্টিলেটেশন ব্যবহার করে একটি ডিভাইসের অবস্থান নির্ধারণ করতে এই প্রোটোকল ব্যবহার করার সময়, আপনার অ্যাপে পূর্ব-নির্ধারিত অ্যাক্সেস পয়েন্ট (AP) অবস্থানের ডেটাতে অ্যাক্সেস থাকতে হবে। এই ডেটা কীভাবে সংরক্ষণ এবং পুনরুদ্ধার করা যায় তা সিদ্ধান্ত নেওয়া আপনার উপর নির্ভর করে।
Android 10 (API স্তর 29) এবং উচ্চতর চলমান ডিভাইসগুলিতে, AP লোকেশন ডেটাকে ResponderLocation
অবজেক্ট হিসাবে উপস্থাপন করা যেতে পারে, যার মধ্যে অক্ষাংশ, দ্রাঘিমাংশ এবং উচ্চতা অন্তর্ভুক্ত রয়েছে। অবস্থান কনফিগারেশন তথ্য/লোকেশন সিভিক রিপোর্ট (LCI/LCR ডেটা) সমর্থন করে এমন Wi-Fi RTT AP-এর জন্য, রেঞ্জিং প্রক্রিয়া চলাকালীন প্রোটোকল একটি ResponderLocation
অবজেক্ট ফিরিয়ে দেবে।
এই বৈশিষ্ট্যটি অ্যাপগুলিকে এই তথ্যগুলি আগে থেকে সংরক্ষণ করার প্রয়োজন না করে সরাসরি তাদের অবস্থানের জন্য জিজ্ঞাসা করতে অ্যাপগুলিকে জিজ্ঞাসা করতে দেয়৷ সুতরাং, আপনার অ্যাপটি APগুলিকে খুঁজে পেতে এবং তাদের অবস্থান নির্ধারণ করতে পারে এমনকি যদি APগুলি আগে জানা না থাকে, যেমন যখন কোনও ব্যবহারকারী একটি নতুন বিল্ডিংয়ে প্রবেশ করেন৷
প্রয়োজনীয়তা
- রেঞ্জিং অনুরোধ করা ডিভাইসের হার্ডওয়্যারকে অবশ্যই 802.11-2016 FTM মান প্রয়োগ করতে হবে।
- রেঞ্জিং রিকোয়েস্ট করা ডিভাইসটি অবশ্যই Android 9 (API লেভেল 28) বা তার পরে চলমান হতে হবে।
- রেঞ্জিং রিকোয়েস্ট করা ডিভাইসটিতে অবশ্যই লোকেশন সার্ভিস চালু থাকতে হবে এবং ওয়াই-ফাই স্ক্যানিং চালু থাকতে হবে ( সেটিংস > লোকেশনের অধীনে)।
- যে অ্যাপটি রেঞ্জিং রিকোয়েস্ট করছে সেটি যদি Android 13 (API লেভেল 33) বা উচ্চতরকে টার্গেট করে, তাহলে তার
NEARBY_WIFI_DEVICES
অনুমতি থাকতে হবে। যদি এই ধরনের একটি অ্যাপ Android এর পূর্ববর্তী সংস্করণকে লক্ষ্য করে, তবে এটির পরিবর্তেACCESS_FINE_LOCATION
অনুমতি থাকতে হবে। - অ্যাপটি দৃশ্যমান থাকা অবস্থায় বা অগ্রভাগের পরিষেবায় থাকা অবস্থায় অ্যাপটিকে অবশ্যই অ্যাক্সেস পয়েন্টের পরিসীমা জিজ্ঞাসা করতে হবে। অ্যাপটি ব্যাকগ্রাউন্ড থেকে অবস্থানের তথ্য অ্যাক্সেস করতে পারে না।
- অ্যাক্সেস পয়েন্টকে অবশ্যই IEEE 802.11-2016 FTM মান প্রয়োগ করতে হবে।
সেটআপ
Wi-Fi RTT ব্যবহার করার জন্য আপনার অ্যাপ সেট আপ করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন৷
1. অনুমতি অনুরোধ করুন
আপনার অ্যাপের ম্যানিফেস্টে নিম্নলিখিত অনুমতিগুলির জন্য অনুরোধ করুন:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!-- If your app targets Android 13 (API level 33)
or higher, you must declare the NEARBY_WIFI_DEVICES permission. -->
<uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES"
<!-- If your app derives location information from Wi-Fi APIs,
don't include the "usesPermissionFlags" attribute. -->
android:usesPermissionFlags="neverForLocation" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
<!-- If any feature in your app relies on precise location
information, don't include the "maxSdkVersion"
attribute. -->
android:maxSdkVersion="32" />
NEARBY_WIFI_DEVICES
এবং ACCESS_FINE_LOCATION
অনুমতিগুলি বিপজ্জনক অনুমতি, তাই ব্যবহারকারী যখনই RTT স্ক্যান অপারেশন করতে চায় তখন আপনাকে রানটাইমে তাদের অনুরোধ করতে হবে৷ অনুমতি ইতিমধ্যে মঞ্জুর করা না হলে আপনার অ্যাপটিকে ব্যবহারকারীর অনুমতির অনুরোধ করতে হবে৷ রানটাইম অনুমতি সম্পর্কে আরও তথ্যের জন্য, অ্যাপের অনুমতির অনুরোধ দেখুন।
2. ডিভাইসটি Wi-Fi RTT সমর্থন করে কিনা তা পরীক্ষা করুন৷
ডিভাইসটি Wi-Fi RTT সমর্থন করে কিনা তা পরীক্ষা করতে, PackageManager API ব্যবহার করুন:
কোটলিন
context.packageManager.hasSystemFeature(PackageManager.FEATURE_WIFI_RTT)
জাভা
context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI_RTT);
3. Wi-Fi RTT উপলব্ধ কিনা তা পরীক্ষা করুন৷
ডিভাইসে Wi-Fi RTT থাকতে পারে, কিন্তু ব্যবহারকারী Wi-Fi অক্ষম করার কারণে এটি বর্তমানে উপলব্ধ নাও হতে পারে। তাদের হার্ডওয়্যার এবং ফার্মওয়্যার ক্ষমতার উপর নির্ভর করে, কিছু ডিভাইস Wi-Fi RTT সমর্থন নাও করতে পারে যদি SoftAP বা টিথারিং ব্যবহার করা হয়। Wi-Fi RTT বর্তমানে উপলব্ধ কিনা তা পরীক্ষা করতে, isAvailable() কল করুন।
Wi-Fi RTT এর উপলব্ধতা যে কোনো সময় পরিবর্তন হতে পারে। ACTION_WIFI_RTT_STATE_CHANGED পাওয়ার জন্য আপনার অ্যাপের একটি BroadcastReceiver নিবন্ধন করা উচিত, যা উপলব্ধতা পরিবর্তন হলে পাঠানো হয়। যখন আপনার অ্যাপটি সম্প্রচারের অভিপ্রায় পায়, তখন অ্যাপটির উপলব্ধতার বর্তমান অবস্থা পরীক্ষা করা উচিত এবং সেই অনুযায়ী তার আচরণ সামঞ্জস্য করা উচিত।
যেমন:
কোটলিন
val filter = IntentFilter(WifiRttManager.ACTION_WIFI_RTT_STATE_CHANGED) val myReceiver = object: BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { if (wifiRttManager.isAvailable) { … } else { … } } } context.registerReceiver(myReceiver, filter)
জাভা
IntentFilter filter = new IntentFilter(WifiRttManager.ACTION_WIFI_RTT_STATE_CHANGED); BroadcastReceiver myReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (wifiRttManager.isAvailable()) { … } else { … } } }; context.registerReceiver(myReceiver, filter);
আরও তথ্যের জন্য, সম্প্রচার দেখুন।
একটি সীমাবদ্ধ অনুরোধ তৈরি করুন
একটি রেঞ্জিং রিকোয়েস্ট ( RangingRequest ) তৈরি করা হয় APs বা Wi-Fi সচেতন সমবয়সীদের একটি তালিকা নির্দিষ্ট করে যার কাছে একটি রেঞ্জের অনুরোধ করা হয়েছে৷ একাধিক অ্যাক্সেস পয়েন্ট বা Wi-Fi সচেতন সমকক্ষ একটি একক রেঞ্জিং অনুরোধে নির্দিষ্ট করা যেতে পারে; সমস্ত ডিভাইসের দূরত্ব পরিমাপ করা হয় এবং ফেরত দেওয়া হয়।
উদাহরণস্বরূপ, দূরত্ব পরিমাপ করার জন্য একটি অ্যাক্সেস পয়েন্ট নির্দিষ্ট করতে একটি অনুরোধ addAccessPoint() পদ্ধতি ব্যবহার করতে পারে:
কোটলিন
val req: RangingRequest = RangingRequest.Builder().run { addAccessPoint(ap1ScanResult) addAccessPoint(ap2ScanResult) build() }
জাভা
RangingRequest.Builder builder = new RangingRequest.Builder(); builder.addAccessPoint(ap1ScanResult); builder.addAccessPoint(ap2ScanResult); RangingRequest req = builder.build();
একটি অ্যাক্সেস পয়েন্ট তার ScanResult অবজেক্ট দ্বারা চিহ্নিত করা হয়, যা WifiManager.getScanResults() কল করে পাওয়া যেতে পারে। আপনি addAccessPoints(List
একইভাবে, একটি রেঞ্জিং অনুরোধ যথাক্রমে addWifiAwarePeer(MacAddress peer) এবং addWifiAwarePeer(PeerHandle পিয়ার) পদ্ধতি ব্যবহার করে একটি Wi-Fi Aware পিয়ার এর MAC ঠিকানা বা তার PeerHandle ব্যবহার করে যোগ করতে পারে। Wi-Fi সচেতন সমকক্ষদের আবিষ্কার সম্পর্কে আরও তথ্যের জন্য, Wi-Fi সচেতন ডকুমেন্টেশন দেখুন।
সীমাবদ্ধ অনুরোধ
একটি অ্যাপ WifiRttManager.startRanging() পদ্ধতি ব্যবহার করে একটি রেঞ্জিং অনুরোধ জারি করে এবং নিম্নলিখিতগুলি প্রদান করে: অপারেশনটি নির্দিষ্ট করার জন্য একটি RangingRequest , কলব্যাক প্রসঙ্গ নির্দিষ্ট করার জন্য একটি এক্সিকিউটর এবং ফলাফলগুলি পাওয়ার জন্য একটি RangingResultCallback ৷
যেমন:
কোটলিন
val mgr = context.getSystemService(Context.WIFI_RTT_RANGING_SERVICE) as WifiRttManager val request: RangingRequest = myRequest mgr.startRanging(request, executor, object : RangingResultCallback() { override fun onRangingResults(results: List<RangingResult>) { … } override fun onRangingFailure(code: Int) { … } })
জাভা
WifiRttManager mgr = (WifiRttManager) Context.getSystemService(Context.WIFI_RTT_RANGING_SERVICE); RangingRequest request ...; mgr.startRanging(request, executor, new RangingResultCallback() { @Override public void onRangingFailure(int code) { … } @Override public void onRangingResults(List<RangingResult> results) { … } });
রেঞ্জিং অপারেশন অ্যাসিঙ্ক্রোনাসভাবে সম্পাদিত হয়, এবং RangingResultCallback- এর কলব্যাকগুলির একটিতে রেঞ্জিং ফলাফল ফেরত দেওয়া হয়:
- পুরো রেঞ্জিং অপারেশন ব্যর্থ হলে, RangingResultCallback- এ বর্ণিত একটি স্ট্যাটাস কোড দিয়ে onRangingFailure কলব্যাক ট্রিগার করা হয়। এই ধরনের ব্যর্থতা ঘটতে পারে যদি পরিষেবাটি সময়ে একটি রেঞ্জিং অপারেশন চালাতে না পারে--উদাহরণস্বরূপ, কারণ Wi-Fi অক্ষম করা আছে, কারণ অ্যাপ্লিকেশনটি অনেকগুলি পরিসরের ক্রিয়াকলাপগুলির জন্য অনুরোধ করেছে এবং থ্রোটল করা হয়েছে, বা একটি অনুমতি সমস্যার কারণে৷
- রেঞ্জিং অপারেশন সম্পূর্ণ হলে, ফলাফলের একটি তালিকা দিয়ে onRangingResults কলব্যাক ট্রিগার হয় যা অনুরোধের তালিকার সাথে মেলে--প্রতিটি অনুরোধের জন্য একটি ফলাফল। ফলাফলের ক্রম অগত্যা অনুরোধের ক্রম মেলে না। মনে রাখবেন রেঞ্জিং অপারেশন সম্পূর্ণ হতে পারে কিন্তু প্রতিটি ফলাফল এখনও সেই নির্দিষ্ট পরিমাপের ব্যর্থতা নির্দেশ করতে পারে।
পরিসরের ফলাফল ব্যাখ্যা করুন
onRangingResults কলব্যাক দ্বারা প্রত্যাবর্তিত ফলাফলগুলির প্রতিটি একটি RangingResult বস্তু দ্বারা নির্দিষ্ট করা হয়৷ প্রতিটি অনুরোধে, নিম্নলিখিত করুন।
1. অনুরোধ সনাক্ত করুন
RangingRequest তৈরি করার সময় প্রদত্ত তথ্যের উপর ভিত্তি করে অনুরোধটি শনাক্ত করুন : প্রায়শই ScanResult
এ দেওয়া একটি MAC ঠিকানা একটি অ্যাক্সেস পয়েন্ট সনাক্ত করে। getMacAddress() পদ্ধতি ব্যবহার করে রেঞ্জিং ফলাফল থেকে MAC ঠিকানা পাওয়া যেতে পারে।
রেঞ্জিং রিকোয়েস্টে নির্দিষ্ট করা পিয়ার (অ্যাক্সেস পয়েন্ট) থেকে রেঞ্জিং ফলাফলের তালিকা ভিন্ন ক্রমে হতে পারে, তাই আপনার পিয়ার সনাক্ত করতে MAC ঠিকানা ব্যবহার করা উচিত, ফলাফলের ক্রম নয়।
2. প্রতিটি পরিমাপ সফল হয়েছে কিনা তা নির্ধারণ করুন
একটি পরিমাপ সফল হয়েছে কিনা তা নির্ধারণ করতে, getStatus() পদ্ধতি ব্যবহার করুন। STATUS_SUCCESS ব্যতীত অন্য কোনো মান একটি ব্যর্থতা নির্দেশ করে৷ একটি ব্যর্থতার অর্থ হল এই ফলাফলের অন্যান্য সমস্ত ক্ষেত্র (উপরের অনুরোধ শনাক্তকরণ ব্যতীত) অবৈধ, এবং সংশ্লিষ্ট get*
পদ্ধতিটি একটি IllegalStateException ব্যতিক্রম সহ ব্যর্থ হবে৷
3. প্রতিটি সফল পরিমাপের জন্য ফলাফল পান
প্রতিটি সফল পরিমাপের জন্য, আপনি সংশ্লিষ্ট get
পদ্ধতিগুলির সাথে ফলাফলের মানগুলি পুনরুদ্ধার করতে পারেন:
দূরত্ব, মিমি, এবং পরিমাপের আদর্শ বিচ্যুতি:
পরিমাপের জন্য ব্যবহৃত প্যাকেটগুলির RSSI:
মিলিসেকেন্ডে সময় যেখানে পরিমাপ নেওয়া হয়েছিল (বুট হওয়ার পর থেকে সময় নির্দেশ করে):
পরিমাপের সংখ্যা যা চেষ্টা করা হয়েছিল এবং পরিমাপের সংখ্যা যা সফল হয়েছে (এবং যার উপর ভিত্তি করে দূরত্ব পরিমাপ করা হয়):
অ্যান্ড্রয়েড ডিভাইস যা ওয়াইফাই-আরটিটি সমর্থন করে
নীচের সারণীতে কিছু ফোন , অ্যাক্সেস পয়েন্ট এবং খুচরা, গুদামজাতকরণ এবং বিতরণ কেন্দ্র ডিভাইসগুলির তালিকা রয়েছে যা WiFi-RTT সমর্থন করে৷ এগুলি ব্যাপক থেকে অনেক দূরে। আমরা আপনাকে এখানে আপনার RTT সক্ষম-পণ্য তালিকাভুক্ত করতে আমাদের সাথে যোগাযোগ করতে উৎসাহিত করি।
অ্যাক্সেস পয়েন্ট
প্রস্তুতকারক এবং মডেল | সমর্থন তারিখ |
---|---|
Nest Wifi Pro (Wi-Fi 6E) | সমর্থিত |
Compulab ওয়াইল্ড এপি | সমর্থিত |
Google Wi-Fi | সমর্থিত |
Google Nest Wi-Fi রাউটার | সমর্থিত |
Google Nest Wi-Fi পয়েন্ট | সমর্থিত |
আরুবা AP-635 | সমর্থিত |
সিসকো 9130 | সমর্থিত |
সিসকো 9136 | সমর্থিত |
সিসকো 9166 | সমর্থিত |
সিসকো 9164 | সমর্থিত |
আরুবা AP-505 | সমর্থিত |
আরুবা AP-515 | সমর্থিত |
আরুবা AP-575 | সমর্থিত |
আরুবা AP-518 | সমর্থিত |
আরুবা AP-505H | সমর্থিত |
আরুবা AP-565 | সমর্থিত |
আরুবা AP-535 | সমর্থিত |
ফোন
প্রস্তুতকারক এবং মডেল | অ্যান্ড্রয়েড সংস্করণ |
---|---|
পিক্সেল 6 | 9.0+ |
Pixel 6 Pro | 9.0+ |
পিক্সেল 5 | 9.0+ |
Pixel 5a | 9.0+ |
Pixel 5a 5G | 9.0+ |
Xiaomi Mi 10 Pro | 9.0+ |
Xiaomi Mi 10 | 9.0+ |
Xiaomi Redmi Mi 9T Pro | 9.0+ |
Xiaomi Mi 9T | 9.0+ |
Xiaomi Mi 9 | 9.0+ |
Xiaomi Mi Note 10 | 9.0+ |
Xiaomi Mi Note 10 Lite | 9.0+ |
Xiaomi Redmi Note 9S | 9.0+ |
Xiaomi Redmi Note 9 Pro | 9.0+ |
Xiaomi Redmi Note 8T | 9.0+ |
Xiaomi Redmi Note 8 | 9.0+ |
Xiaomi Redmi K30 Pro | 9.0+ |
Xiaomi Redmi K20 Pro | 9.0+ |
Xiaomi Redmi K20 | 9.0+ |
Xiaomi Redmi Note 5 Pro | 9.0+ |
Xiaomi Mi CC9 Pro | 9.0+ |
LG G8X ThinQ | 9.0+ |
LG V50S ThinQ | 9.0+ |
LG V60 ThinQ | 9.0+ |
LG V30 | 9.0+ |
Samsung Galaxy Note 10+ 5G | 9.0+ |
Samsung Galaxy S20+ 5G | 9.0+ |
Samsung Galaxy S20+ | 9.0+ |
Samsung Galaxy S20 5G | 9.0+ |
Samsung Galaxy S20 Ultra 5G | 9.0+ |
Samsung Galaxy S20 | 9.0+ |
Samsung Galaxy Note 10+ | 9.0+ |
Samsung Galaxy Note 10 5G | 9.0+ |
Samsung Galaxy Note 10 | 9.0+ |
Samsung A9 Pro | 9.0+ |
Google Pixel 4 XL | 9.0+ |
গুগল পিক্সেল 4 | 9.0+ |
Google Pixel 4a | 9.0+ |
গুগল পিক্সেল 3 এক্সএল | 9.0+ |
গুগল পিক্সেল 3 | 9.0+ |
Google Pixel 3a XL | 9.0+ |
Google Pixel 3a | 9.0+ |
Google Pixel 2 XL | 9.0+ |
গুগল পিক্সেল 2 | 9.0+ |
গুগল পিক্সেল 1 এক্সএল | 9.0+ |
গুগল পিক্সেল 1 | 9.0+ |
পোকো এক্স২ | 9.0+ |
শার্প অ্যাকোস R3 SH-04L | 9.0+ |
খুচরা, গুদামজাতকরণ এবং বিতরণ কেন্দ্র ডিভাইস
প্রস্তুতকারক এবং মডেল | অ্যান্ড্রয়েড সংস্করণ |
---|---|
জেব্রা PS20 | 10.0+ |
জেব্রা TC52/TC52HC | 10.0+ |
জেব্রা TC57 | 10.0+ |
জেব্রা TC72 | 10.0+ |
জেব্রা TC77 | 10.0+ |
জেব্রা MC93 | 10.0+ |
জেব্রা TC8300 | 10.0+ |
জেব্রা VC8300 | 10.0+ |
জেব্রা EC30 | 10.0+ |
জেব্রা ET51 | 10.0+ |
জেব্রা ET56 | 10.0+ |
জেব্রা L10 | 10.0+ |
জেব্রা CC600/CC6000 | 10.0+ |
জেব্রা MC3300x | 10.0+ |
জেব্রা MC330x | 10.0+ |
জেব্রা TC52x | 10.0+ |
জেব্রা TC57x | 10.0+ |
জেব্রা EC50 (LAN এবং HC) | 10.0+ |
জেব্রা EC55 (WAN) | 10.0+ |
জেব্রা WT6300 | 10.0+ |
Skorpio X5 | 10.0+ |