BLE میں MTU: یہ کیا ہے، پیکٹ کا سائز اور گفت و شنید

مصنف: IT Sectr اشاعت: 2026-07-15 مطالعے کا وقت: 10 منٹ

MTU (Maximum Transmission Unit) ایک BLE پیکٹ میں مفید ڈیٹا کا زیادہ سے زیادہ سائز ہے جو ایک GATT لین دین میں آلات کے درمیان منتقل کیا جا سکتا ہے۔ BLE Classic (4.x) میں، MTU 23 بائٹس پر طے شدہ ہے، جو چھوٹے سینسر ریڈنگ کے لیے کافی ہے، لیکن فائل کی منتقلی یا OTA اپ ڈیٹس کے لیے ناکافی ہے۔ Bluetooth Core Specification 4.2 (2014) نے MTU Size Request کا طریقہ کار متعارف کرایا، جو بڑے MTU — 247 بائٹس (BLE 5.0 — 251 بائٹس تک) پر گفت و شنید کی اجازت دیتا ہے۔ درست MTU ترتیب بڑی مقدار میں ڈیٹا منتقل کرنے والی BLE ایپلی کیشنز کی کارکردگی کے اہم عوامل میں سے ایک ہے۔

اہم نکات

  • MTU — ایک BLE پیکٹ میں ڈیٹا کا زیادہ سے زیادہ سائز، 23 بائٹس (BLE 4.x) سے 251 بائٹس (BLE 5.0) تک۔
  • MTU گفت و شنید GATT کنکشن قائم کرنے کے بعد MTU Size Request/Response کے ذریعے ہوتی ہے۔
  • بڑا MTU (247 بائٹس) معیاری 23 بائٹس کے مقابلے میں ڈیٹا کی منتقلی کی رفتار کو 5–10 گنا بڑھاتا ہے۔
  • Android خود بخود BLE 5.0 کے ساتھ 517 بائٹس MTU کی درخواست کرتا ہے، iOS requestMTU کے ذریعے 512 بائٹس کی درخواست کرتا ہے۔
  • OTA فرم ویئر اپ ڈیٹس میں، بڑا MTU منتقلی کے وقت کو منٹوں سے سیکنڈوں تک کم کر دیتا ہے۔

BLE میں MTU کیا ہے؟

Maximum Transmission Unit (MTU) BLE کے تناظر میں ایک Application Protocol Data Unit (APDU) کا زیادہ سے زیادہ سائز ہے جسے ایک آلہ ایک GATT درخواست میں قبول کر سکتا ہے۔ MTU ATT (Attribute Protocol) سطح پر متعین کیا گیا ہے اور اس میں ATT ہیڈر (1 بائٹ) + مفید ڈیٹا شامل ہے۔ ڈیفالٹ طور پر، تمام BLE آلات MTU 23 بائٹس کی حمایت کرتے ہیں (23 = 1 بائٹ ATT ہیڈر + 22 بائٹس ڈیٹا)۔

MTU ریڈیو چینل کی جسمانی حد نہیں ہے، بلکہ GATT سطح پر آلات کے درمیان ایک معاہدہ ہے۔ لنک لیئر پر جسمانی BLE پیکٹ کا سائز بڑا ہو سکتا ہے (BLE 4.0 میں 27 بائٹس تک، Data Length Extension کے ساتھ BLE 5.0 میں 257 بائٹس تک)، لیکن GATT پرت محدود کرتی ہے کہ فی لین دین کتنا ڈیٹا منتقل ہوتا ہے۔ Data Length Extension (DLE) ایک علیحدہ لنک لیئر میکانزم ہے جو جسمانی پیکٹ کو 251 بائٹس تک بڑھاتا ہے، اور اسے علیحدہ سے گفت و شنید کرنا ہوتی ہے۔

MTU اور DLE کے درمیان فرق: ATT MTU — فی GATT درخواست کتنا ڈیٹا منتقل ہوتا ہے، DLE — ایک لنک لیئر پیکٹ میں کتنا ڈیٹا فٹ ہوتا ہے۔ زیادہ سے زیادہ رفتار کے لیے، دونوں پیرامیٹرز پر گفت و شنید کرنا ضروری ہے۔ DLE کے بغیر، MTU 247 بائٹس کے باوجود بھی، ڈیٹا متعدد 27-بائٹ لنک لیئر پیکٹوں میں تقسیم ہو جائے گا، جس سے تھرو پٹ کم ہو جائے گا۔

MTU گفت و شنید: طریقہ کار اور پروٹوکول

MTU Size Request — ایک طریقہ کار جو GATT کنکشن قائم کرنے کے بعد Central شروع کرتا ہے۔ Central اپنی MTU صلاحیت (زیادہ سے زیادہ سائز جسے وہ قبول کر سکتا ہے) بتاتے ہوئے MTU Request بھیجتا ہے۔ Peripheral اپنی قدر کے ساتھ MTU Response کے ساتھ جواب دیتا ہے۔ نتیجے میں MTU دونوں قدروں میں سے کم سے کم ہوتا ہے۔ اگر Central MTU 512 پیش کرتا ہے اور Peripheral صرف 128 کی حمایت کرتا ہے، تو کنکشن MTU 128 استعمال کرے گا۔

swift
import CoreBluetooth

// iOS پر زیادہ سے زیادہ MTU کی درخواست کریں
func requestMTU(central: CBCentralManager,
                    peripheral: CBPeripheral) {
    peripheral.maximumWriteValueLength(
        for: .withoutResponse
    )

// iOS کنکشن پر خود بخود MTU گفت و شنید کرتا ہے
            // BLE 5.0 آلات کے لیے MTU = 512
    let mtu = peripheral.maximumWriteValueLength(
        for: .withResponse
    )

    print("گفت و شنید شدہ MTU: " +
          String(mtu))
}

گفت و شنید کا وقت: MTU Request سروس کی دریافت (discoverServices) کے بعد، لیکن فعال ڈیٹا کی ترسیل شروع ہونے سے پہلے بھیجی جانی چاہیے۔ iOS Core Bluetooth میں، کنکشن کے وقت MTU خود بخود گفت و شنید ہو جاتی ہے — ڈویلپر کو دستی طور پر MTU Request بھیجنے کی ضرورت نہیں ہے۔ Android میں، requestMTU کو واضح طور پر کال کرنا ضروری ہے۔ ایک بار گفت و شنید ہو جانے کے بعد، MTU اس کنکشن کے لیے مقرر رہتا ہے — منقطع اور دوبارہ منسلک کیے بغیر دوبارہ گفت و شنید ممکن نہیں ہے۔

ATT کی حدود: MTU 251 بائٹس سے زیادہ کیوں نہیں ہو سکتا

ATT (Attribute Protocol) — وہ پروٹوکول جس پر GATT تعمیر کیا گیا ہے۔ ایک ATT پیکٹ کا زیادہ سے زیادہ سائز 257 بائٹس (ATT_MTU-1) ہے۔ ان میں سے، 1 بائٹ Opcode (آپریشن کی قسم)، 1 بائٹ Handle، اور 255 بائٹس تک Value ہے۔ لہذا، ATT تصریح کے ذریعہ اجازت شدہ زیادہ سے زیادہ MTU 257 بائٹس ہے (لیکن عملی طور پر 251 بائٹس تک استعمال ہوتا ہے، کیونکہ کچھ اوور ہیڈ فیلڈز اب بھی ضروری ہیں)۔

MTU سے بڑا ڈیٹا بھیجنے کے لیے، ایپلیکیشن سطح پر تقسیم (fragmentation) استعمال کی جاتی ہے۔ ڈویلپر دستی طور پر ڈیٹا کو ≤ MTU سائز کے ٹکڑوں میں تقسیم کرتا ہے اور انہیں ترتیب وار بھیجتا ہے۔ ہر ٹکڑا ایک علیحدہ GATT Write Request کے طور پر بھیجا جاتا ہے۔ وصول کرنے والا فریق ٹکڑوں کو ایک واحد بفر میں جمع کرتا ہے۔ GATT میں تقسیم کے لیے کوئی بلٹ ان سپورٹ نہیں ہے — یہ ڈویلپر کی ذمہ داری ہے۔

BLE ورژنزیادہ سے زیادہ MTUزیادہ سے زیادہ DLEATT MTU حد
BLE 4.0 / 4.123 بائٹس27 بائٹسATT مقرر
BLE 4.2247 بائٹس251 بائٹس257 بائٹس
BLE 5.0251 بائٹس251 بائٹس257 بائٹس
Android + iOS512 / 517251 بائٹسATT سے تجاوز

دلچسپ حقیقت: iOS اور Android بالترتیب MTU 512 اور 517 بائٹس کی درخواست کرتے ہیں، لیکن یہ قدر ATT حد سے تجاوز کرتی ہے۔ عملی طور پر، BLE اسٹیک اس طرح کے ڈیٹا کو خود بخود تقسیم کرتا ہے، انہیں ہر ایک زیادہ سے زیادہ 251 بائٹس کی متعدد ترتیب وار GATT درخواستوں کے طور پر بھیجتا ہے۔ ڈویلپر کے لیے، فرق شفاف ہے — iOS پر writeValue 512 بائٹس تک کسی بھی سائز کے ساتھ کام کرتا ہے۔

کارکردگی پر MTU کا اثر

MTU کا سائز براہ راست BLE کنکشن کے تھرو پٹ کو متاثر کرتا ہے۔ MTU 23 بائٹس کے ساتھ، مثالی حالات میں زیادہ سے زیادہ مفید منتقلی کی شرح تقریباً 7–10 KB/s ہے۔ MTU کو 247 بائٹس تک بڑھانے سے رفتار 60–90 KB/s (DLE اور بہترین کنکشن وقفہ کے ساتھ) تک پہنچ جاتی ہے۔ یہ خاص طور پر ان ایپلی کیشنز کے لیے اہم ہے جو تصاویر، آڈیو ٹکڑے یا لاگ منتقل کرتی ہیں۔

BLE منتقلی کی کارکردگی تین عوامل پر منحصر ہے: MTU (فی ATT درخواست کتنا ڈیٹا)، کنکشن وقفہ (تبادلے کے واقعات کتنی بار ہوتے ہیں)، اور DLE (فی لنک لیئر پیکٹ کتنا ڈیٹا)۔ زیادہ سے زیادہ رفتار کے لیے بہترین ترتیب: MTU = 247، DLE = 251، کنکشن وقفہ = 7.5 ms (کم سے کم قدر)۔

Bluetooth SIG White Paper (2023) کے مطابق، 30 ms کنکشن وقفہ کے ساتھ MTU کو 23 سے 247 بائٹس تک بڑھانے سے تھرو پٹ 8 KB/s سے 42 KB/s تک بڑھ جاتا ہے — 5 گنا اضافہ۔ 7.5 ms کنکشن وقفہ کے ساتھ، تھرو پٹ 88 KB/s تک پہنچ جاتا ہے۔ ان ایپلی کیشنز کے لیے جنہیں تیز رفتار کی ضرورت نہیں ہے (درجہ حرارت سینسر، BLE بیکن)، معیاری 23 بائٹس MTU کافی ہے۔

iOS اور Android میں MTU کی ترتیب

iOS Core Bluetooth کسی Peripheral سے کنکشن پر خود بخود MTU گفت و شنید کرتا ہے۔ ڈویلپر maximumWriteValueLength کے ذریعے موجودہ MTU معلوم کر سکتا ہے، لیکن اسے دستی طور پر سیٹ نہیں کر سکتا۔ iOS BLE 5.0 آلات کے لیے 512 بائٹس تک اور BLE 4.2 کے لیے 247 بائٹس تک MTU استعمال کرتا ہے۔ ڈیٹا کی بڑی مقدار لکھنے کے لیے، یقینی ترسیل کے لیے writeType: .withResponse استعمال کریں۔

kotlin
// Android (Kotlin) میں MTU کی درخواست کریں
val bluetoothGatt: BluetoothGatt = ...

// MTU 517 بائٹس کی درخواست کریں
bluetoothGatt.requestMtu(517)

// کال بیک میں نتیجہ کو ہینڈل کریں
override fun onMtuChanged(
    gatt: BluetoothGatt,
    mtu: Int,
    status: Int
) {
    if (status == BluetoothGatt.GATT_SUCCESS) {
        println("MTU negotiated: $mtu")
    }
}

Android BluetoothGatt.requestMtu(int) فراہم کرتا ہے، جو 517 بائٹس تک کسی بھی MTU کی درخواست کرنے کی اجازت دیتا ہے۔ حقیقی MTU پیریفرل ڈیوائس کے ذریعے متعین کیا جاتا ہے — اگر یہ صرف 23 بائٹس کی حمایت کرتا ہے، تو Android MTU 23 واپس کرے گا۔ موجودہ MTU کا تعین کرنے کے لیے، gatt.requestMtu(0) استعمال کریں — یہ اسے تبدیل کرنے کی کوشش کیے بغیر موجودہ قدر واپس کرتا ہے۔ Android 12+ TRANSPORT_LE کے ذریعے کنکشن پر خودکار MTU گفت و شنید کی حمایت کرتا ہے۔

کراس پلیٹ فارم فریم ورک (Flutter, React Native) عام طور پر requestMTU کے لیے API فراہم کرتے ہیں۔ FlutterBlue Plus لائبریری میں، MTU کو کنکشن پیرامیٹر کے طور پر سیٹ کیا جاتا ہے۔ RxAndroidBle میں — requestMtu طریقہ کے ذریعے۔ ڈیٹا کی ترسیل شروع ہونے سے پہلے، سروس کی دریافت کے فوراً بعد ہمیشہ زیادہ سے زیادہ MTU پر گفت و شنید کرنے کی سفارش کی جاتی ہے، تاکہ ایپلیکیشن سطح پر تقسیم سے بچا جا سکے۔

MTU اور OTA اپ ڈیٹس

OTA (Over-The-Air) فرم ویئر اپ ڈیٹس — BLE میں سب سے زیادہ MTU طلب کرنے والا منظر نامہ ہے۔ IoT ڈیوائس کے فرم ویئر کا عام سائز 100–500 KB ہے۔ MTU 23 بائٹس اور 30 ms کنکشن وقفہ کے ساتھ، 100 KB کی منتقلی میں تقریباً 2–3 منٹ لگتے ہیں۔ MTU 247 بائٹس اور DLE 251 بائٹس کے ساتھ — 20–40 سیکنڈ۔ اور MTU 512 بائٹس (iOS) کے ساتھ — 10–15 سیکنڈ۔

OTA اپ ڈیٹ کے عمل میں عام طور پر شامل ہے: فرم ویئر کو ≤ MTU سائز کے پیکٹوں میں تقسیم، Notify/Write کے ذریعے ترتیب وار ترسیل، ہر پیکٹ پر چیکسم کی تصدیق، اور وصولی کی تصدیق۔ اگر کوئی پیکٹ کھو جاتا ہے، تو ڈیوائس دوبارہ ترسیل کی درخواست کرتی ہے۔ OTA کی وشوسنییتا MTU اور کنکشن وقفہ کے صحیح انتخاب پر اہم طور پر منحصر ہے۔

OTA کے لیے سفارشات: زیادہ سے زیادہ MTU (247–512 بائٹس) پر گفت و شنید کریں، کنکشن وقفہ 7.5–15 ms (اگر ڈیوائس سپورٹ کرتی ہے) سیٹ کریں، جسمانی پیکٹ کو 251 بائٹس تک بڑھانے کے لیے DLE (Data Length Extension) استعمال کریں۔ محدود بفر میموری والے آلات (مثال کے طور پر، nRF52 پر مبنی BLE ماڈیولز) کے لیے، چپ کی تصریح میں زیادہ سے زیادہ MTU چیک کریں۔

اکثر پوچھے گئے سوالات

اگر MTU پر گفت و شنید نہ کی جائے تو کیا ہوتا ہے؟

کنکشن ڈیفالٹ MTU — 23 بائٹس استعمال کرے گا۔ زیادہ تر IoT منظرناموں (سینسر ریڈنگ کی ترسیل) کے لیے یہ کافی ہے۔ ڈیٹا کی بڑی مقدار کی منتقلی کے لیے، رفتار 247 بائٹس کے گفت و شنید شدہ MTU کے مقابلے میں 5–10 گنا کم ہوگی۔

کیا ڈیٹا کی ترسیل شروع ہونے کے بعد MTU تبدیل کیا جا سکتا ہے؟

نہیں، MTU کنکشن کے بعد ایک بار گفت و شنید ہوتا ہے اور منقطع اور دوبارہ منسلک کیے بغیر تبدیل نہیں کیا جا سکتا۔ لہذا، فعال ڈیٹا کی ترسیل شروع ہونے سے پہلے، سروس کی دریافت کے فوراً بعد MTU پر گفت و شنید کرنے کی سفارش کی جاتی ہے۔

Android MTU 517 بائٹس کی درخواست کیوں کرتا ہے جبکہ iOS صرف 512 کی درخواست کرتا ہے؟

یہ ہر اسٹیک کے لیے تاریخی طور پر قائم کردہ تجرباتی زیادہ سے زیادہ حدود ہیں۔ حقیقی ATT MTU اب بھی تصریح کے ذریعہ 257 بائٹس تک محدود ہے۔ اسٹیک 251 بائٹس سے بڑے ڈیٹا کو خود بخود متعدد پیکٹوں میں تقسیم کرتے ہیں، لہذا 512 اور 517 کے درمیان فرق غیر اہم ہے۔

MTU کا Data Length Extension (DLE) سے کیا تعلق ہے؟

MTU — ATT سطح پر GATT درخواست کا سائز۔ DLE — لنک لیئر پر جسمانی پیکٹ کا سائز۔ DLE کے بغیر، ہر GATT درخواست (247 بائٹس تک) 27 بائٹس کے پیکٹوں میں تقسیم ہوتی ہے۔ DLE کے ساتھ، یہ ایک ہی پیکٹ میں منتقل ہوتی ہے۔ زیادہ سے زیادہ رفتار کے لیے، دونوں پیرامیٹرز پر گفت و شنید کرنا ضروری ہے۔

فٹنس ٹریکر کے لیے کون سا MTU منتخب کرنا چاہیے؟

فٹنس ٹریکر کے لیے جو دل کی دھڑکن اور قدموں کی ریڈنگ منتقل کرتا ہے، معیاری 23 بائٹس MTU کافی ہے۔ اگر آپ کو ورزش کی تاریخ (10–50 KB سائز) منتقل کرنے کی ضرورت ہے، تو اسمارٹ فون سے کنکشن پر ڈیٹا کی مطابقت پذیری تیز کرنے کے لیے MTU 247 بائٹس پر گفت و شنید کریں۔

خلاصہ

  • MTU — ایک GATT درخواست میں ڈیٹا کا زیادہ سے زیادہ سائز: 23 بائٹس (ڈیفالٹ) سے 251 بائٹس (BLE 5.0) تک۔
  • MTU گفت و شنید MTU Size Request/Response کے ذریعے ہوتی ہے، جسے کنکشن کے بعد Central شروع کرتا ہے۔
  • ATT پروٹوکول MTU کو 257 بائٹس تک محدود کرتا ہے، لیکن iOS اور Android خودکار تقسیم کے ساتھ 512–517 بائٹس تک کی درخواست کرتے ہیں۔
  • MTU کو 23 سے 247 بائٹس تک بڑھانے سے بہترین کنکشن وقفہ کے ساتھ تھرو پٹ میں 5–10 گنا بہتری آتی ہے۔
  • زیادہ سے زیادہ رفتار کے لیے، MTU + DLE + کنکشن وقفہ 7.5 ms پر گفت و شنید کریں۔
  • iOS میں، MTU خود بخود گفت و شنید ہوتا ہے؛ Android میں، requestMtu استعمال کریں — 247–517 بائٹس کی درخواست کرنے کی سفارش کی جاتی ہے۔
  • OTA اپ ڈیٹس — سب سے زیادہ طلب کرنے والا منظر نامہ: صحیح MTU منتقلی کے وقت کو منٹوں سے سیکنڈوں تک کم کر دیتا ہے۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں