پروتکل MTP چیست! (و حل مشکل دسترسی به فایلهای گوشی اندروید در محیط ویندوز XP)

وقتی من گوشی اندروید خودم رو به کامپیوترم وصل میکردم، نمیتونستم مستقیما در محیط ویندوز XP به فایلهاش دسترسی داشته باشم. قبلا زیاد باهاش ور رفته بودم اما علت و راه حلش رو نفهمیدم. البته به روشهای غیرمستقیم دیگری میتونستم به فایلهای روی گوشی دسترسی پیدا کنم که در مقالهء «تجربیات من با گوشی اندروید و ویندوز XP و توسعه برنامه های اندروید با استفاده از ابزارهای خط فرمان» قبلا براتون گفتم.
ولی من این گوشی رو که وصل میکردم میدیدم همش توی ویندوز که میخواد سخت افزار رو شناسایی کنه یه کلمه ای که میاد MTP است. گفتم بذار توی ویکیپدیا بزنم ببینم چیزی در این مورد هست یا نه.

خلاصه رسیدم به مقالهء ویکیپدیا درمورد Media Transfer Protocol و دیدم که بله خودشه! جالب اینکه راه حل اینکه ویندوز XP بتونه با فایلهای گوشی من کار کنه رو هم از توی همین مقاله کشف کردم که همانا نصب کردن Windows Media Player نسخهء 10 یا بالاتر بود.
جالبه نه؟ گوشی چه ربطی به مدیاپلیر ویندوز داره؟! باید بگم خب هنوزم کمی عجیبه اما بهرحال مدیاپلیر یه کارهایی با گوشی از طریق این پروتکل MTP داره برای امکانی بنام AutoSync و بخاطر همینه که ساپورت از این پروتکل با نصب شدن مدیاپلیر به ویندوز اضافه میشه. حالا دیگه بحثش طولانی میشه و زیاد مفید نمیبینم، واسه همین بقیهء بحث رو درمورد خود پروتکل MTP اینکه چی هست به چه درد میخوره میگم.
خب در وسایل قدیمی تر، و البته هنوزم در خیلی وسایل جدید، یه پروتکلی بود بنام USB mass storage که باید معرف حضور خیلی ها باشه. همینطور که میدونید وقتی وسیله ای رو در این حالت به کامپیوتری چیزی وصل میکنید، فضای ذخیره سازی اون در کامپیوتر شناسایی میشه و در اختیار کامل قرار میگیره.
اما USB mass storage مشکلات و محدودیت هایی داره. مشکل از اونجاست که با این پروتکل عملا یک دسترسی مستقیم به سیستم فایل سخت افزار ذخیره سازی ایجاد میشه. این دسترسی مستقیم و کامل باعث محدودیت هایی میشه. یکیش اینکه تمامی فایلها و دایرکتوری های روی سخت افزار ذخیره سازی در اختیار سیستم مقصد قرار میگیرن، حتی مثلا فایلها و دایرکتوریهایی که متعلق به سیستم عامل و تشکیلات داخلی خود اون دستگاه هستن، مثلا فایلهای و دایرکتوریهای سیستم عامل. یعنی در این پروتکل عملا وضعیت همه چیز یا هیچ چیز برقراره! یا باید دسترسی کامل بدید یا هیچی. نمیشه یکسری فایلهای و فولدرها رو از سیستم متصل شونده پنهان و محافظت کرد. نمیشه یک ساختار شبیه سازی شده و منطقی، بجای فیزیکی، برای فایلهای و فولدرهای موجود ارائه داد بجای دسترسی مستقیم. همچنین یک مشکل بزرگ دیگری که در این حالت هست اینه که حتی خود اون دستگاه هم در این حالت نمیتونه دسترسی به اون فضای ذخیره سازی داشته باشه چون دسترسی کامل و انحصاری هر زمان فقط میتونه در اختیار یک وسیله باشه (شاید به اون پیامی که گوشی در این حالت میده که نوشته در این حالت امکان دسترسی از خود گوشی به فایلها وجود نداره توجه کرده باشید). یک مشکل دیگر اینکه بخاطر این دسترسی مستقیم که در سطح فیزیکی فضای ذخیره سازی است، نیاز هست که سیستم فایلی که روی فضای ذخیره سازی وجود داره توسط سیستمهای متصل شونده شناخته و پشتیبانی بشه. بخاطر همینه که اکثر اینطور سیستمهای ذخیره سازی و همینطور دیسک های USB که امروزه همه کس دارن، با سیستم فایل FAT32 فرمت شدن. اگر شما مثلا یکی از این وسیله ها رو با سیستم فایل مخصوص لینوکس فرمت کنید، اونوقت ویندوز نمیتونه اون رو بخونه (ولی توی لینوکس شناسایی میشه و دسترسی هست). به این شکل مثلا یک گوشی اندرویدی با اینکه سیستم عاملش لینوکسه ولی نمیتونه از سیستم فایلهای لینوکسی برای فضای ذخیره سازی خودش استفاده کنه. البته SD Card های جانبی هنوزم با FAT32 فرمت میشن چون میشه اونا رو از گوشی جدا کرد و مستقیما به رایانه یا دستگاه دیگری وصل کرد. خلاصه FAT32 هنوزم کاربردهای خودش رو داره و یک سیستم فایل استاندارد برای اینگونه وسایل ذخیره سازیه.
خب پس تا اینجا متوجه محدودیت ها و مشکلات سیستم قدیمی دسترسی به وسایل ذخیره سازی تحت پروتکل USB mass storage شدید.
اما پروتکل MTP دقیقا این ضعف ها رو تاحد زیادی برطرف میکنه. این پروتکل توسط میکروسافت ایجاد شد که البته درواقع یک توسعه بر اساس پروتکل قدیمی تری بنام Picture Transfer Protocol (به اختصار: PTP) است. البته پروتکل PTP توسط میکروسافت ایجاد نشده بود. پروتکل PTP برای انتقال فایلهای تصویر از دوربین های دیجیتال به کامپیوتر یا دیگر وسایل جانبی طراحی شده بود و فقط قادر به همین کار هست و بخاطر همین قابل استفادهء عمومی تری نبود، اما پروتکل MTP این محدودیت ها رو برطرف کرد و قادر است انواع فایلهای شامل فایلهای غیر تصویری رو بین دو دستگاه در هر دو جهت منتقل کنه.
پروتکل MTP اکنون توسط مراجع استانداردهای وسایل USB بعنوان یک استاندارد و توسعهء رسمی پروتکل PTP استاندارد شده.
البته پروتکل MTP هم بعضی ضعف ها و محدودیت هایی داره. مثلا در این پروتکل در هر زمان فقط امکان انجام یک عملیات هست و نمیشه همزمان چند عملیات رو انجام داد (درحالیکه در USB mass storage این محدودیت نیست). مثلا شاید تجربه کرده باشید موقعی که یکسری فایل از طریق این پروتکل دارن از روی گوشی دلیت میشن، کپی میشن و غیره، موقعی که میخواید فایل دیگری رو باز کنید یا کار دیگری بکنید به شما پیام خطای دسترسی داده میشه. این بخاطر اینه که تا وقتی عملیات قبلی تموم نشده نمیشه عملیات جدیدی رو بصورت موازی انجام داد. ولی بهرحال باوجود این محدودیت، این پروتکل حداقل توسط گوشی اندروید بنده که ترجیح داده شده، چون گزینهء USB mass storage اصولا وجود نداره! البته اینم بگم که اکثر اینطور وسایل که از پروتکل MTP پشتیبانی میکنن گزینهء PTP رو هم دارن که اگر وسیلهء خودتون رو به دستگاه خاصی وصل کردید (احتمالا یک دستگاه قدیمی) که از پروتکل MTP پشتیبانی نمیکرد ولی از پروتکل PTP پشتیبانی میکرد میتونید گزینهء پروتکل PTP رو روی گوشی یا هر دستگاه دیگری که دارید فعال کنید تا به این شکل حداقل بتونید به تصاویر موجود روی وسیلهء خودتون دسترسی داشته باشید. این گزینه در گوشی اندروید من وجود داره.

بطور کلی در پروتکل MTP این خود وسیله هست که نقش یک میانجی برای دسترسی به فایلها رو ایفا میکنه، بنابراین وسیله کنترل کاملی روی اینکه چه فایلهای و فولدرهایی رو تحت چه سلسله مراتبی (ساختار دایرکتوری ها) به وسیلهء دیگر نشون بده داره و همچنین میتونه نوع دسترسی رو هم به هر شکلی که میخواد کنترل کنه. وسیلهء دیگر، دسترسی مستقیم و فیزیکی به فضای ذخیره سازی نداره و نه نیازی هست که از سیستم فایل واقعی روی فضای ذخیره سازی اطلاعی داشته باشه و پشتیبانی بکنه و نه اینکه دسترسی انحصاری و کامل داشته باشه.

منابع:

https://en.wikipedia.org/wiki/USB_mass_storage_device_class

https://en.wikipedia.org/wiki/Media_Transfer_Protocol

https://en.wikipedia.org/wiki/Picture_Transfer_Protocol

1 دیدگاه در “پروتکل MTP چیست! (و حل مشکل دسترسی به فایلهای گوشی اندروید در محیط ویندوز XP)

  1. با سلام فقط خواستم تشکر ویژه ای کرده باشم از وبلاگ خوبتون
    چون همش این سؤال تو ذهنم بود چرا با وجود اینکهMTPرو ویندوز xpنصب کردم نمیتونم
    از نت گوشی تو ویندوز xp استفاده کنم.
    دمتون گرم D:

پاسخ دادن به محمود لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>