যখন একটি অ্যান্ড্রয়েড ১৬ (বা উচ্চতর) ডিভাইস বুট হয়, তখন এটি ট্রেড-ইন মোডে চলে যায়, যা আপনাকে adb ব্যবহার করে ডিভাইসটির সাথে সংযোগ স্থাপন করতে এবং ডিভাইসটি সম্পর্কে তথ্য পেতে একটি কমান্ড ব্যবহার করার সুযোগ দেয়। ডিভাইসটির ট্রেড-ইন মোডে প্রবেশ করার জন্য নিম্নলিখিত পূর্বশর্তগুলো অবশ্যই পূরণ করতে হবে:
- ডিভাইসটি ফ্যাক্টরি রিসেট করতে হবে।
- ডিভাইসটিতে সেলুলার পরিষেবা থাকা যাবে না।
- ডিভাইসটিতে কোনো সংযোগ বা অ্যাকাউন্ট থাকা যাবে না।
- ডিভাইসটিতে অবশ্যই একটি নন-ডিবাগেবল বিল্ড চলতে হবে।
ট্রেড-ইন মোড আপনাকে প্রাথমিক ডায়াগনস্টিক তথ্য জানতে দেয়, অথবা ইভ্যালুয়েশন মোডে প্রবেশ করতে দেয়, যা আপনাকে সম্পূর্ণ পরিসরের adb কমান্ড সম্পাদন করতে এবং ডিভাইসটিতে অতিরিক্ত ডায়াগনস্টিকস চালাতে সক্ষম করে।
সাধারণ স্বাস্থ্য তথ্য সংগ্রহ করুন
আপনার ডিভাইসের সাধারণ স্বাস্থ্য সম্পর্কিত তথ্য, যেমন ব্যাটারি, স্টোরেজের অবস্থা এবং আন্তর্জাতিক মোবাইল ইকুইপমেন্ট আইডেন্টিটি (IMEI) নম্বর সংগ্রহ করতে, এই ধাপগুলো অনুসরণ করুন:
আপনার ডিভাইসটি ট্রেড-ইন মোডের পূর্বশর্তগুলো পূরণ করে কিনা, তা নিশ্চিত করুন।
ডিভাইসটি একটি ওয়ার্কস্টেশনে সংযুক্ত করুন।
ওয়ার্কস্টেশন থেকে নিম্নলিখিত কমান্ডটি চালান:
adb shell tradeinmode getstatusএই কমান্ডটি ডিভাইস সম্পর্কিত তথ্যসহ একটি JSON অবজেক্ট রিটার্ন করে। নিচে একটি পিক্সেল ৭ থেকে প্রাপ্ত আউটপুটের উদাহরণ দেওয়া হলো:
{ "battery": { "cycle_count": 16, "health": 100, "state": 2, "manufacturing_date": 1653004800, "first_usage_date": 0 }, "storage": { "useful_lifetime_remaining": 99, "capacity_bytes": "128000000000" }, "launch_level": 33, "locks": { "factory_reset_protection": false }, "product": { "brand": "google", "device": "panther", "manufacturer": "Google", "model": "Pixel 7", "name": "panther" }, "imeis": [ "353644930127905", "353644930127913" ], "serial": "26061FDH2000AP", "cameras": [ { "num_physical": 3, "lens_facing": "back" }, { "num_physical": 2, "lens_facing": "front" } ], "uiccs": [ { "eid": "89033023427100000000007982221521", "removable": false, "physical_slot_index": 0 }, { "removable": true, "physical_slot_index": 1 } ] }যদি
factory_reset_protectionমানtrueসেট করা থাকে, তাহলে ডিভাইসটি সুরক্ষিত থাকে এবং রিসেট করা যায় না। যদি ডিভাইসটি রিসেট করা না যায়, তবে সেটিকে মূল্যায়নও করা যায় না।camerasএবংuiccsফিল্ডগুলো অ্যান্ড্রয়েড ১৭ বা তার পরবর্তী সংস্করণগুলোতে বিদ্যমান।
অ্যান্ড্রয়েড ওএস-এর অবস্থা শনাক্ত করুন
অ্যান্ড্রয়েড অপারেটিং সিস্টেমের অবস্থা, যেমন এটি একটি অনুমোদিত বিল্ড কিনা, সে সম্পর্কে তথ্য সংগ্রহ করতে এই ধাপগুলো অনুসরণ করুন:
- ডিভাইসটি একটি ওয়ার্কস্টেশনে সংযুক্ত করুন।
- ডিভাইসটিতে ইন্টারনেট সংযোগ আছে কিনা তা নিশ্চিত করুন।
ওয়ার্কস্টেশন থেকে নিম্নলিখিত কমান্ডটি চালান:
adb shell tradeinmode getstatus --challenge CHALLENGECHALLENGE হলো এলোমেলোভাবে তৈরি একটি আলফানিউমেরিক স্ট্রিং, যেমন
p4tRsuHjWB। এই কমান্ডটি JSON রিটার্ন করে, যার মধ্যে একটি অ্যাটেস্টেশন ফিল্ড থাকে এবং সেই ফিল্ডে একটি বেস৬৪ অ্যাটেস্টেশন রেকর্ড থাকে।এই কমান্ডটি
getstatusকমান্ড দ্বারা ফেরত আসা তথ্যের সাথে একটি প্রত্যয়ন তথ্য যুক্ত করে। প্রত্যয়ন তথ্যটি দেখতে এইরকম:"attestation": { "certificates": "AAAC\/DCCAvgwggKeoAMCAQICAQEwCgYIKoZIzj0EAwIwOTEMMAoGA1UEDAwDVEVFMSkwJwYDVQQF\n EyBmOTIyZTZhOWFkZmRjNjU0NmZiOWU1YmNlNzhiMDUzMzAeFw03MDAxMDEwMDAwMDBaFw00ODAx\n MDEwMDAwMDBaMB8xHTAbBgNVBAMTFEFuZHJvaWQgS2V5c3RvcmUgS2V5MFkwEwYHKoZIzj0CAQYI\n KoZIzj0DAQcDQgAEz9un3HpDJQy\/j7l0bWzw6WnRRMjFjvu6rg7+dCzFW93u+otCPK4VjmSjyYw ... }অ্যান্ড্রয়েড ১৬ বা তার উচ্চতর সংস্করণ সহ চালু হওয়া ডিভাইসগুলিতে অ্যাটেস্টেশন রেকর্ড তৈরি করার জন্য ইন্টারনেট সংযোগ প্রয়োজন। সংযোগ কনফিগার করার পরে, ইভ্যালুয়েশন মোডে অ্যাটেস্টেশন করা উচিত, কারণ সেটআপ উইজার্ডে এটি করলে তা ব্যর্থ হয়।
নিম্নলিখিত পদ্ধতিগুলোর যেকোনো একটি ব্যবহার করে প্রত্যয়ন তথ্য বিশ্লেষণ করুন:
- AOSP বিল্ড করার সময় যে
parse_tim_attestationটুলটি তৈরি হয়, সেটি ব্যবহার করুন। - একটি অ্যান্ড্রয়েড কী অ্যাটেস্টেশন লাইব্রেরি ব্যবহার করুন।
উদাহরণস্বরূপ,
parse_tim_attestationটুলটি ব্যবহার করতে, চালান:parse_tim_attestation --challenge CHALLENGE output_fileCHALLENGE অবশ্যই সেই একই চ্যালেঞ্জ হতে হবে যা আপনি অ্যাটেস্টেশন তথ্য পেতে ব্যবহার করেছিলেন।
যদি আপনি ধাপ ২-এর আউটপুট একটি output_file সংরক্ষণ করে থাকেন, তাহলে আপনি সেই ফাইলের নামটি দিতে পারেন। অন্যথায়, অ্যাটেস্টেশন তথ্য stdin থেকে পড়া হয়।
অ্যান্ড্রয়েড ওএস-এর তথ্যসহ একটি JSON অবজেক্ট ফেরত দেওয়া হয়:
"record": { "keymaster_version": "400", "keymaster_security_level": "TRUSTED_ENVIRONMENT", "attributes": { "imeis": [ "353644930125669", "353644930125677" ], "vendor_patch_level": 20250305, "serial": "26161FDH2000NV", "os_version": 160000, "source": "hardware", "boot_patch_level": 20250305 }, "bootloader_locked": false, "verified_boot": false, "security_level": "TRUSTED_ENVIRONMENT" }, "certificate": "verified", "trustworthy": "verified boot disabled"যদি
trustworthyyesএর সমান হয়, তাহলে অপারেটিং সিস্টেমটিকে বিশ্বস্ত বলে গণ্য করা হয়; বিল্ডটি স্বাক্ষরিত এবং IMEI জাল নয়।উল্লেখ্য যে, অ্যাটেস্টেশন সম্পাদনের জন্য ডিভাইস এবং হোস্ট উভয় ক্ষেত্রেই ইন্টারনেট সংযোগ প্রয়োজন।
- AOSP বিল্ড করার সময় যে
ট্রেড-ইন মোড পরীক্ষা করুন
ডেভেলপমেন্টের সময়, আপনার ডিভাইসটি সঠিকভাবে ট্রেড-ইন মোডে প্রবেশ ও প্রস্থান করছে কিনা তা নিশ্চিত করতে পরীক্ষা করে দেখুন। আপনার ডিভাইসের ট্রেড-ইন মোডে প্রবেশ ও প্রস্থান করার ক্ষমতা পরীক্ষা করতে এই ধাপগুলো অনুসরণ করুন:
ডিভাইসটি একটি ওয়ার্কস্টেশনে সংযুক্ত করুন।
ওয়ার্কস্টেশন থেকে ডিভাইসটিকে ট্রেড-ইন মোডে রিবুট করুন:
adb shell tradeinmode testing startডিভাইসটি রিবুট হয়ে ট্রেড-ইন মোডে প্রবেশ করে। ট্রেড-ইন মোডে প্রবেশ করার পর, আপনি যেকোনো
adb shell tradeinকমান্ড ব্যবহার করতে পারবেন।ট্রেড-ইন মোড সক্রিয় আছে কিনা তা নিশ্চিত করুন:
adb shell tradeinmode testing statusডিভাইসটি শনাক্ত করেছে যে ট্রেড-ইন মোড টেস্টিং সক্রিয় আছে।
ট্রেড-ইন মোড থেকে বেরিয়ে আসুন এবং সম্পূর্ণ adb অ্যাক্সেস পুনরুদ্ধার করুন:
adb shell tradeinmode testing stop
কাস্টম সেটআপ উইজার্ড ইন্টিগ্রেশন
কাস্টম সেটআপ উইজার্ডযুক্ত ডিভাইসগুলিতে ব্রডকাস্ট রিসিভার যোগ করা না থাকলে evaluate কমান্ড কাজ করবে না। কাস্টম সেটআপ উইজার্ড অ্যাপে একটি ব্রডকাস্ট রিসিভার যোগ করতে:
অ্যাপস ম্যানিফেস্টে একটি রিসিভার ঘোষণা করুন:
<receiver android:name=".EnterEvaluationModeReceiver" android:exported="true" android:permission="android.permission.ENTER_TRADE_IN_MODE"> <intent-filter> <action android:name="com.google.android.setupwizard.ENTER_TRADE_IN_MODE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver>এর অনুরূপ একটি ব্রডকাস্ট রিসিভার তৈরি করুন:
public class EnterEvaluationModeReceiver extends BroadcastReceiver { private static final String TRADE_IN_MODE_PROPERTY = "persist.adb.tradeinmode"; private static final int TIM_EVALUATION_MODE = 2; @Override public void onReceive(Context context, Intent intent) { if (SystemProperties.getInt(TRADE_IN_MODE_PROPERTY, 0) != TIM_EVALUATION_MODE) { return; } // Check if any factory reset protection is enabled. // Provision the device. // End the setup wizard activity. } }
প্রাপককে অবশ্যই নিম্নলিখিত কাজগুলো ক্রমানুসারে সম্পাদন করতে হবে।
- যাচাই করুন যে
persist.adb.tradeinmodeমান2। - যাচাই করে দেখুন যে কোনো ফ্যাক্টরি রিসেট প্রোটেকশন বা অ্যান্টিথেফট লক চালু নেই।
- ডিভাইসটি প্রোভিশন করুন, এবং নিশ্চিত করুন যে
Settings.Secure.USER_SETUP_COMPLETEএবংSettings.Global.DEVICE_PROVISIONEDএর মান1। - সেটআপ উইজার্ড অ্যাক্টিভিটিটি বাতিল করুন, যাতে ডিভাইসটি হোম স্ক্রিনে ফিরে আসে।
ট্রেড-ইন-মোড রেফারেন্স
এই বিভাগে ট্রেড-ইন-মোডের সমস্ত কমান্ড ব্যাখ্যা করা হয়েছে।
মূল্যায়ন করুন
adb shell tradeinmode evaluateসেটআপ উইজার্ডটি এড়িয়ে গিয়ে ইভ্যালুয়েশন মোডে প্রবেশ করে, যেন ব্যবহারকারী নিজে থেকেই প্রতিটি সেটআপ স্ক্রিন এড়িয়ে গেছেন।
সেটআপ উইজার্ডটি এড়িয়ে যাওয়ার পর, আপনি ডিভাইসটিতে অতিরিক্ত ADB কমান্ড বা কার্যকারিতা পরীক্ষা চালাতে পারবেন।
মূল্যায়ন মোড থেকে বেরিয়ে আসার পর একটি ফ্যাক্টরি রিসেট সম্পন্ন হয়, যাতে পরীক্ষার কোনো উপাদান ভুলবশত কোনো গ্রাহকের কাছে স্থানান্তরিত না হয়।
গেটস্ট্যাটাস
adb shell tradeinmode getstatus [--challenge CHALLENGE]ডিভাইসটির ব্যাটারি ও স্টোরেজের স্বাস্থ্য সম্পর্কিত তথ্যসহ সিস্টেমের তথ্য সম্বলিত একটি JSON স্ট্রিং ফেরত দেয়।
একটি অতিরিক্ত অ্যাটেস্টেশন ফিল্ড ফেরত পেতে --challenge প্যারামিটারটির সাথে এলোমেলোভাবে তৈরি একটি আলফানিউমেরিক চ্যালেঞ্জ কী অন্তর্ভুক্ত করুন। বুটলোডারের অবস্থা (লক করা বা আনলক করা) এবং IMEI সিরিয়াল নম্বরের বৈধতার মতো গুরুত্বপূর্ণ অপারেটিং সিস্টেমের তথ্য শনাক্ত করতে এই প্রতিক্রিয়াটি পার্স করুন।
পাওয়ার বন্ধ
adb shell tradeinmode poweroffডিভাইসটি বন্ধ করে দেয়। ডিভাইসটি সক্রিয়ভাবে পরীক্ষা বা মূল্যায়ন করা না হলে ব্যাটারির চার্জ শেষ হওয়া রোধ করতে এই কমান্ডটি ব্যবহার করুন।
রিবুট
adb shell tradeinmode rebootডিভাইসটি রিবুট করে।
পরীক্ষা শুরু
adb shell tradeinmode testing startডিভাইসটিকে ট্রেড-ইন মোডে রিবুট করে। এই কমান্ডটি শুধুমাত্র সেটআপ উইজার্ডের মধ্যে কাজ করে। এই কমান্ডটি জারি করলে, অনুমোদন প্রক্রিয়াটি বাইপাস হয়ে যায় এবং শুধুমাত্র ট্রেড-ইন মোডের কমান্ডগুলো কাজ করে।
এই কমান্ডটি শুধুমাত্র userdebug , eng , বা user বিল্ডযুক্ত ডিভাইসগুলিতে কাজ করে। user বিল্ডটিতে অবশ্যই ro=debuggable=1 সেট করা থাকতে হবে।
পরীক্ষার অবস্থা
adb shell tradeinmode testing statusট্রেড-ইন মোড টেস্টিং সক্রিয় আছে কিনা তা শনাক্ত করে।
এই কমান্ডটি শুধুমাত্র userdebug , eng , বা user বিল্ডযুক্ত ডিভাইসগুলিতে কাজ করে। user বিল্ডটিতে অবশ্যই ro=debuggable=1 সেট করা থাকতে হবে।
পরীক্ষা বন্ধ
adb shell tradeinmode testing stopadb shell tradeinmode testing start কমান্ডটি দেওয়ার আগে ডিভাইসটি যে মোডে ছিল, এটিকে সেই মোডে ফিরিয়ে দেয়।
এই কমান্ডটি শুধুমাত্র userdebug , eng , বা user বিল্ডযুক্ত ডিভাইসগুলিতে কাজ করে। user বিল্ডটিতে অবশ্যই ro=debuggable=1 সেট করা থাকতে হবে।
পরীক্ষার জন্য মুছে ফেলা
adb shell tradeinmode testing wipeডিভাইসটি ফ্যাক্টরি রিসেট করে।
এই কমান্ডটি শুধুমাত্র userdebug , eng , বা user বিল্ডযুক্ত ডিভাইসগুলিতে কাজ করে। user বিল্ডটিতে অবশ্যই ro=debuggable=1 সেট করা থাকতে হবে।
প্রস্তুত হওয়া পর্যন্ত অপেক্ষা করুন
adb shell tradeinmode wait-until-readyসিস্টেম সার্ভিসগুলো প্রস্তুত না হওয়া পর্যন্ত অপেক্ষা করে, যাতে ট্রেড-ইন মোড সম্পূর্ণরূপে কাজ করতে পারে। ট্রেড-ইন মোডের কমান্ডগুলো সফল হয় তা নিশ্চিত করতে আপনার অটোমেশনের মধ্যে এই কমান্ডটি ব্যবহার করুন।
আপনি অন্যান্য ট্রেড-ইন মোড কমান্ডের আগে wait-until-ready যোগ করতে পারেন। উদাহরণস্বরূপ, এখানে getstatus এর সাথে wait-until-ready চেইন করে দেখানো হলো:
adb shell tradeinmode wait-until-ready getstatus