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 के संदर्भ में एक एप्लिकेशन प्रोटोकॉल डेटा यूनिट (APDU) का अधिकतम आकार है जिसे एक उपकरण एक GATT अनुरोध में स्वीकार कर सकता है। MTU ATT (Attribute Protocol) स्तर पर परिभाषित किया गया है और इसमें ATT हेडर (1 बाइट) + उपयोगी डेटा शामिल है। डिफ़ॉल्ट रूप से, सभी BLE उपकरण MTU 23 बाइट्स का समर्थन करते हैं (23 = 1 बाइट ATT हेडर + 22 बाइट्स डेटा)।

MTU रेडियो चैनल की भौतिक सीमा नहीं है, बल्कि GATT स्तर पर उपकरणों के बीच एक समझौता है। लिंक लेयर पर भौतिक BLE पैकेट का आकार बड़ा हो सकता है (BLE 4.0 में 27 बाइट्स तक, BLE 5.0 में Data Length Extension के साथ 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))
}

बातचीत का समय: सेवा खोज (discoverServices) के बाद, लेकिन सक्रिय डेटा प्रेषण शुरू होने से पहले MTU Request भेजा जाना चाहिए। 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 बीकन), मानक MTU 23 बाइट्स पर्याप्त रहता है।

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 चुनना चाहिए?

हृदय गति और कदम रीडिंग प्रेषित करने वाले फिटनेस ट्रैकर के लिए, मानक MTU 23 बाइट्स पर्याप्त है। यदि आपको वर्कआउट इतिहास (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 एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें