সিস্টেম স্বাস্থ্য তথ্য প্রাপ্ত

যখন একটি Android 16 (বা উচ্চতর) ডিভাইস বুট হয়, তখন এটিকে ট্রেড-ইন মোডে রাখা হয়, যা আপনাকে adb ব্যবহার করে ডিভাইসের সাথে সংযোগ করতে এবং ডিভাইস সম্পর্কে তথ্য পেতে একটি কমান্ড ব্যবহার করতে দেয়। ডিভাইসটি ট্রেড-ইন মোডে প্রবেশ করার জন্য নিম্নলিখিত পূর্বশর্তগুলি অবশ্যই বিদ্যমান থাকতে হবে:

  • ডিভাইস ফ্যাক্টরি রিসেট করা আবশ্যক.
  • ডিভাইসটিতে সেলুলার পরিষেবা থাকা উচিত নয়৷
  • ডিভাইসে সংযোগ বা একটি অ্যাকাউন্ট স্থাপন করা উচিত নয়।
  • ডিভাইসটি অবশ্যই একটি ননডিবাগেবল বিল্ড চালাচ্ছে।

আপনি সেটআপ উইজার্ডের মাধ্যমে নেভিগেট করার পরে, ডিভাইসটিকে মূল্যায়ন মোডে রাখা হয়, যা আপনাকে adb কমান্ডের একটি সম্পূর্ণ পরিসর সম্পাদন করতে এবং ডিভাইসে অতিরিক্ত ডায়াগনস্টিক চালাতে দেয়।

সাধারণ স্বাস্থ্য তথ্য সংগ্রহ করুন

আপনার ডিভাইসের জন্য সাধারণ স্বাস্থ্য তথ্য সংগ্রহ করতে, যেমন ব্যাটারি, স্টোরেজ স্বাস্থ্য এবং আন্তর্জাতিক মোবাইল সরঞ্জাম পরিচয় (IMEI) নম্বর সম্পর্কে তথ্য, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. নিশ্চিত করুন যে আপনার ডিভাইস ট্রেড-ইন মোডের পূর্বশর্তগুলি পূরণ করে।

  2. ডিভাইসটিকে একটি ওয়ার্কস্টেশনে প্লাগ করুন।

  3. ওয়ার্কস্টেশন থেকে, নিম্নলিখিত কমান্ডটি চালান:

    adb shell tradeinmode getstatus

    এই কমান্ডটি ডিভাইস সম্পর্কে তথ্য সহ একটি JSON অবজেক্ট প্রদান করে। নিম্নলিখিত একটি Pixel 7 থেকে আউটপুট উদাহরণ:

    {
      "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"
    }
    

    factory_reset_protection true সেট করা থাকলে, ডিভাইসটি সুরক্ষিত এবং রিসেট করা যাবে না। যদি ডিভাইসটি রিসেট করা না যায় তবে এটি মূল্যায়ন করা যাবে না।

অ্যান্ড্রয়েড ওএসের অবস্থা চিহ্নিত করুন

অ্যান্ড্রয়েড অপারেটিং সিস্টেমের অবস্থা সম্পর্কে তথ্য সংগ্রহ করতে, যেমন এটি একটি অনুমোদিত বিল্ড হলে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. ডিভাইসটিকে একটি ওয়ার্কস্টেশনে প্লাগ করুন।
  2. ডিভাইসে ইন্টারনেট সংযোগ আছে তা নিশ্চিত করুন।
  3. ওয়ার্কস্টেশন থেকে, নিম্নলিখিত কমান্ডটি চালান:

    adb shell tradeinmode getstatus --challenge CHALLENGE

    CHALLENGE হল একটি এলোমেলোভাবে তৈরি করা আলফানিউমেরিক স্ট্রিং, যেমন p4tRsuHjWB । এই কমান্ডটি একটি বেস64 প্রত্যয়ন রেকর্ড ধারণকারী একটি সত্যায়ন ক্ষেত্র সহ JSON প্রদান করে।

    এই কমান্ডটি getstatus কমান্ড দ্বারা প্রত্যাবর্তিত তথ্যের সাথে একটি প্রমাণীকরণ তথ্য যুক্ত করে। প্রত্যয়ন তথ্য এই মত দেখায়:

    "attestation": {
      "certificates": "AAAC\/DCCAvgwggKeoAMCAQICAQEwCgYIKoZIzj0EAwIwOTEMMAoGA1UEDAwDVEVFMSkwJwYDVQQF\n
        EyBmOTIyZTZhOWFkZmRjNjU0NmZiOWU1YmNlNzhiMDUzMzAeFw03MDAxMDEwMDAwMDBaFw00ODAx\n
        MDEwMDAwMDBaMB8xHTAbBgNVBAMTFEFuZHJvaWQgS2V5c3RvcmUgS2V5MFkwEwYHKoZIzj0CAQYI\n
        KoZIzj0DAQcDQgAEz9un3HpDJQy\/j7l0bWzw6WnRRMjFjvu6rg7+dCzFW93u+otCPK4VjmSjyYw
        ...
    }
    

    অ্যান্ড্রয়েড 16 বা উচ্চতর সংস্করণের সাথে লঞ্চ করা ডিভাইসগুলির জন্য একটি সত্যায়ন রেকর্ড তৈরি করতে ইন্টারনেট সংযোগ প্রয়োজন৷ একটি সংযোগ কনফিগার করার পরে মূল্যায়ন মোডে প্রত্যয়ন করা উচিত, কারণ সেটআপ উইজার্ডে সঞ্চালিত হলে এটি ব্যর্থ হয়।

  4. নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করে সত্যায়ন তথ্য পার্স করুন:

    উদাহরণস্বরূপ, parse_tim_attestation টুল ব্যবহার করতে, চালান:

    parse_tim_attestation --challenge CHALLENGE output_file

    CHALLENGE অবশ্যই একই চ্যালেঞ্জ হতে হবে যেটি আপনি সত্যায়িত তথ্য পেতে ব্যবহার করেছিলেন।

    আপনি যদি ধাপ 2-এর আউটপুট একটি output_file এ সংরক্ষণ করেন, আপনি সেই ফাইলের নাম প্রদান করতে পারেন। অন্যথায়, সত্যায়ন তথ্য stdin থেকে পড়া হয়.

    Android OS তথ্য সহ একটি 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"
    

    trustworthy যদি yes এর সমান হয়, অপারেটিং সিস্টেমটিকে বিশ্বস্ত বলে মনে করা হয়; বিল্ডটি স্বাক্ষরিত এবং IMEI জাল নয়।

    নোট করুন যে ডিভাইস এবং হোস্ট উভয় ক্ষেত্রেই সত্যায়ন করার জন্য ইন্টারনেট সংযোগ প্রয়োজন।

ট্রেড-ইন মোড পরীক্ষা করুন

বিকাশের সময়, আপনার ডিভাইসটি সঠিকভাবে ট্রেড-ইন মোডে প্রবেশ করেছে এবং বিদ্যমান রয়েছে তা নিশ্চিত করতে আপনার ডিভাইসটি পরীক্ষা করা উচিত। ট্রেড-ইন মোডে প্রবেশ এবং প্রস্থান করার জন্য আপনার ডিভাইসের ক্ষমতা পরীক্ষা করতে এই পদক্ষেপগুলি অনুসরণ করুন:

  1. ডিভাইসটিকে একটি ওয়ার্কস্টেশনে প্লাগ করুন।

  2. ওয়ার্কস্টেশন থেকে, ডিভাইসটিকে ট্রেড-ইন মোডে রিবুট করুন:

    adb shell tradeinmode testing start

    ডিভাইসটি রিবুট হয় এবং ট্রেড-ইন মোডে প্রবেশ করে। ট্রেড-ইন মোডে প্রবেশ করার পর, আপনি যেকোনো adb shell tradein কমান্ড ব্যবহার করতে পারেন।

  3. ট্রেড-ইন মোড সক্রিয় আছে তা নিশ্চিত করুন:

    adb shell tradeinmode testing status

    ডিভাইসটি সনাক্ত করে যে ট্রেড-ইন মোড পরীক্ষা সক্রিয়।

  4. ট্রেড-ইন মোড থেকে প্রস্থান করুন এবং সম্পূর্ণ অ্যাডবি অ্যাক্সেস পুনরুদ্ধার করুন:

    adb shell tradeinmode testing stop

কাস্টম সেটআপ উইজার্ড ইন্টিগ্রেশন

একটি ব্রডকাস্ট রিসিভার যোগ না করা পর্যন্ত কাস্টম সেটআপ উইজার্ড সহ ডিভাইসগুলিতে evaluate কমান্ড কাজ করবে না। কাস্টম সেটআপ উইজার্ড অ্যাপে একটি ব্রডকাস্ট রিসিভার যোগ করতে:

  1. অ্যাপস ম্যানিফেস্টে একটি রিসিভার ঘোষণা করুন:

    <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>
    
  2. এর মতো একটি সম্প্রচার রিসিভার তৈরি করুন:

    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.
     }
    }
    

রিসিভারকে অবশ্যই নিম্নোক্ত কাজগুলো করতে হবে।

  1. পরীক্ষা করুন যে persist.adb.tradeinmode 2
  2. কোন ফ্যাক্টরি রিসেট সুরক্ষা বা অ্যান্টিথেফ্ট লক উপস্থিত নেই তা পরীক্ষা করুন৷
  3. Settings.Secure.USER_SETUP_COMPLETE এবং Settings.Global.DEVICE_PROVISIONED 1 নিশ্চিত করে ডিভাইসের ব্যবস্থা করুন।
  4. সেটআপ উইজার্ড কার্যকলাপ খারিজ করুন যাতে ডিভাইসটি হোম স্ক্রিনে থাকে৷

ট্রেড-ইন-মোড রেফারেন্স

এই বিভাগটি সমস্ত ট্রেড-ইন-মোড কমান্ড ব্যাখ্যা করে।

মূল্যায়ন

adb shell tradeinmode evaluate

সেটআপ উইজার্ডটি এড়িয়ে গিয়ে মূল্যায়ন মোডে প্রবেশ করে যেন প্রতিটি সেটআপ স্ক্রীন ব্যবহারকারীর দ্বারা ম্যানুয়ালি এড়িয়ে যায়৷

সেটআপ উইজার্ড এড়িয়ে যাওয়ার পরে, আপনি ডিভাইসে অতিরিক্ত ADB কমান্ড বা কার্যকরী পরীক্ষা চালাতে পারেন।

আপনি মূল্যায়ন মোড ত্যাগ করার পরে, একটি ফ্যাক্টরি রিসেট ঘটে তা নিশ্চিত করার জন্য যে পরীক্ষার থেকে কোনো শিল্পকর্ম ঘটনাক্রমে কোনো গ্রাহকদের কাছে স্থানান্তরিত না হয়।

getstatus

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 stop

আপনি adb 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