Skip to main content

MTP คืออะไร มันดีอย่างไร ทำไมต้องใช้ และการแก้ปัญหาเกี่ยวกับ MTP ใน Windows XP


เชื่อว่าหลายๆ คนที่ใช้ Windows XP กันอยู่คงจะหงุดหงิดไม่น้อยกับปัญหาการเชื่อมต่อ Galaxy Nexus กับ Windows XP เพราะเมื่อเชื่อมต่อแล้วมันจะไม่รู้จัก แต่ถ้าเป็น Windows Vista ขึ้นไปจะไม่มีปัญหานี้

MTP คืออะไร
ก่อนอื่นเรามารู้จัก MTP ก่อนว่ามันคืออะไร MTP (Media Transfer Protocol) เป็นมาตรฐานที่ต่อยอดมาจาก PTP (Picture Transfer Protocol) ที่ใช้ในการถ่ายโอนข้อมูลต่างๆ ผ่านสาย USB

จริงๆ แล้ว MTP นี้เป็นมาตรฐานที่อยู่ใน Windows Media framework เนื่องจากว่าในปี 2008 นั้นมีอุปกรณ์มากมายที่สามารถเชื่อมต่อ USB ได้อย่างเช่น MP3 player, Windows Mobile PDA หรือแม้กระทั่งกล้องถ่ายรูป จึงจำเป็นต้องมีมาตรฐานกลางในการถ่ายโอนข้อมูลผ่านสาย USB ในช่วงแรกนั้น Microsoft ได้ออกมาตรฐาน PTP เพื่อใช้ในการถ่ายโอนรูปภาพจากกล้องถ่ายรูปผ่านสาย USB เท่านั้น แต่ต่อมาการถ่ายโอนข้อมูลไม่ได้มีเพียงแค่รูปภาพเท่านั้น ยังรวมถึงเพลงหรือว่า File ต่างๆ ด้วย จึงเมีการพัฒนาต่อเติมมาตรฐาน PTP จนกลายมาเป็น MTP ในปัจจุบัน

แล้วทำไม MTP จึงมาแทน USB Mass Storage?
คำอธิบายง่ายๆ คือ MTP จะเป็นมาตรการป้องปรามไม่ให้ผู้ผลิตมือถือหรือผู้ให้บริการ ให้พื้นที่สำหรับเก็บข้อมูลส่วนตัวมากเกินไป ในขณะที่พื้นที่สำหรับติดตั้ง Application (ROM) นั้นกลับได้เพียงน้อยนิด



คำอธิบายนี้ผมไม่ได้ยกขึ้นมาลอยๆ นะครับ เอามาจาก Dan Morril ผู้ที่ทำงานในตำแหน่ง Android engineer
    We didn't do this because we wanted to use ext3 (although that is a side benefit.) We did it because we wanted to be able to merge the "public shared storage" (i.e. for music and photos) with the internal private app storage.

    We got tired of seeing OEMs include many GB of internal storage for music, while users were still running out of space for apps and data. This approach lets us merge everything on one volume, which is way better.
หากเราลองมองย้อนกลับไปในสมัยที่ Android รุ่นเก่าๆ ที่ยังใช้ USB Mass Storage (ไม่นับรวมเครื่องที่เพิ่งออกใหม่ๆ ที่ยังใช้ USB Mass Storage เพราะให้เนื้อที่สำหรับ ROM มากขึ้น) ที่ผู้ผลิตมักจะให้พื้นที่ของ ROM มาน้อยมากประมาณ 200 - 300 MB ซึ่งแน่นอนว่าเนื้อที่สำหรับลง Application ไม่พอแน่นอน จึงบังเกิด Feature App2SD ใน Android 2.2

หลายคนที่อ่านถึงตรงนี้แล้วอาจจะงง ก็ใช้ App2SD แก้ปัญหาเรื่องพื้นที่สำหรับการติดตั้ง Application ได้แล้ว แต่ทำไมยังต้องใช้ MTP อีกหละ ที่เป็นเช่นนี้เพราะว่าหลักการของ USB Mass Storage นั้นจำเป็นต้องแยกพื้นที่สำหรับ ROM และ พื้นที่สำหรับเก็บข้อมูลส่วนตัว ออกจากกัน และเมื่อมีการเรียกใช้ USB Mass Storage ระบบ Android จำเป็นต้องปล่อยการใช้งานทรัพยากรของ พื้นที่สำหรับเก็บข้อมูลส่วนตัว ให้กับคอมพิวเตอร์ ซึ่งที่มีผลกระทบกับ Application ที่ถูกติดตั้งใน พื้นที่สำหรับเก็บข้อมูลส่วนตัว ทำให้ต้องหยุดการทำงานไป

ประโยชน์ของ MTP คือ Android ไม่ต้องปล่อยการใช้งานทรัพยากรของพื้นที่หน่วยความจำ แต่ก็ยังสามารถโอนถ่ายข้อมูลผ่าน USB ได้ และนอกเหนือจากนี้ ถ้าหากเรายังใช้ USB Mass Storage พื้นที่สำหรับเก็บข้อมูลส่วนตัว จำเป็นต้องใช้ระบบ File System ที่เป็น Fat ซึ่ง Android นั้นเป็นระบบที่มี Linux เป็นแกนหลักใช้ระบบ File System ที่เป็น Ext ทำให้ Android เข้าถึงข้อมูลได้ช้าลง

ปัญหาเกี่ยวกับ MTP ใน Windows XP
เื่ชื่อว่าหลายๆ คนที่ใช้ Windows XP คงอาจจะเจอปัญหานี้ คือเสียบอุปกรณ์ Andriod ที่ใช้ระบบ MTP แล้วปรากฎว่าคอมพิวเตอร์มองไม่เห็น ที่เป็นเช่นนี้เพราะว่า MTP Driver ใน Windows XP ของคุณนั้นเวอร์ชั่นเก่าไป วิธีการแก้ปัญหานั้นสรุปง่ายๆ สามวิธีคือ

1. ปัญหานี้จะถูกแก้ได้เองถ้าคุณใช้ Windows XP ที่ถูกกฎหมาย และได้อัพเดท Windows XP อยู่เรื่อยๆ ก็จะสามารถเชื่อมต่อ USB ผ่าน MTP ได้ ซึ่งตัวอัพเดทที่สำคัญคือตัวนี้

SAMSUNG Electronics Co., Ltd. - Other hardware - SAMSUNG Mobile MTP Device 
SAMSUNG Electronics Co., Ltd. Other hardware software update released in October, 2011

2. แต่ถ้าหากว่าเครื่องของคุณเป็น Windows เถื่อนแนะนำให้ติดตั้ง Kies ซะ ซึ่งใครๆ หลายคนเลือกที่จะไม่ยอมติดเพราะว่ามันทำให้เครื่องอืด

3. วิธีสุดท้ายติดตั้งสิ่งเหล่านี้ลงบนเครื่องอย่างใดอย่างหนึ่งหรือว่าทั้งหมด
วิธีสุดท้ายนี้ผมไม่ได้ลองดูว่าได้จริงหรือเปล่า เป็นวิธีที่ผมลองค้นหาดูจาก internet กับปัญหานี้ ส่วนวิธีให้สามารถใช้ MTP นอกเหนือจาก OS ของ Windows อย่าง Linux และ Mac OS ให้ตามไปอ่านได้จากแหล่งอ้างอิงเลยครับ

อ้างอิงจาก Androidcentral และ AndroidForums

Comments

Popular posts from this blog

ลองเล่นและเรียนรู้พื้นฐานขั้นต้นของ Spring Framework

** สำหรับใครที่ไม่เคยเรียนรู้ในด้านของ Java EE หรือ J2EE อาจจะมึนงงกับศัพท์หน่อยครับ ทำไมต้อง Spring Spring เป็น framework ที่นิยมมากในการนำไปสร้างระบบในระดับ enterprise ในเริ่มแรกที่ Spring เกิดมา มีจุดมุ่งหมายเพื่อที่จะมาแทนที่มาตรฐานของ Java อย่าง J2EE (Java 2 Enterprise Edition) ที่มันทั้งหน่วงทั้งอืดและยุ่งยาก โดยเฉพาะในส่วนของ EJB (Enterprise Java Bean) ที่ถือว่าเป็นฝันร้ายของนักพัฒนา ทำให้กูรูสาย Java ในช่วงนั้นถึงกับแนะนำว่า ถ้าจำเป็นที่ต้องพัฒนาระบบด้วย J2EE จงอย่าใช้ EJB ถึงขั้นถึงกับมีหนังสือแนะแนวทางการพัฒนาระบบ J2EE โดยไม่ใช้ EJB อย่างไรก็ตามทาง Sun ผู้เป็นเจ้าของ Java ในสมัยนั้น ถึงกับต้องมาล้างระบบ J2EE ใหม่ในปี 2006 จัดการใน EJB ให้ใช้ง่ายขึ้น มีประสิทธิภาพมากขึ้น และมีการเปลี่ยนชื่อจาก J2EE เป็น Java EE (Java Enterprise Edition) เพื่อลบภาพอันเลวร้ายของเดิมให้หมด และได้มีการนำฟีเจอร์เด็ดๆ ของ open source framework หลายๆ ตัว อย่างเช่นแกนหลักของ Spring อย่าง IoC (Inversion of Control) หรือ OR Mapping (Object Relational Mapping) ที่เป็นที่นิยมอย่าง Hibernate แต่ก็ไ

Inversion of Control และ Dependency Injection

Inversion of Control (IoC) คืออะไร IoC เป็นทฤษฏีที่ว่าด้วย การลดความผูกมัด (dependency) กันในระหว่าง module เพื่อให้ application ของเราแก้ไข (maintain) ต่อเติม (extensible) หรือทดสอบ (test) ได้ง่ายขึ้น ซึ่งเอาจริงๆ IoC เป็นอะไรที่ทำให้เราสับสนและงุนงงมากๆ ว่ามันคืออะไร หลายๆ คนจึงยกให้ว่า IoC คือ Dependency Injection (DI) ซึ่งจริงๆ มันก็ไม่ถูกซะทีเดียว  Dependency คืออะไร Dependency คือการผูกมัดที่เกิดขึ้นในระบบ เมื่อ module นึงมีการเรียกใช้อีก module นึงด้วยการอ้างอิง (reference) ตรงๆ แล้วอะไรที่เรียกว่าการ อ้างอิง (Reference) แบบตรงๆ   อย่างภาพ diagram ด้านบน class LogEngine มีการเรียกใช้ ConsoleLog โดยตรง ซึ่งมองผ่าน diagram อาจจะไม่เห็นภาพลองดู code กัน public class ConsoleLog { public void openLog(){ //do something to open log } public void log(String message){ //do something to log } public void closeLog(){ //do something to close log } } public class LogEngine { private ConsoleLog log; public LogEngine(){

ลองเล่น Lambda Expression ฟีเจอร์เด่นใน Java 8

ประวัติความเป็นมาของ Lambda expression Lambda expression ไม่ใช่สิ่งแปลกใหม่ในวงการ ภาษาโปรแกรม ( Programming Language ) เพราะ lambda มันเป็นแกนหลักของ การเขียนโปรแกรมเชิงฟังก์ชัน ( Functional Programming ) ซึ่งมีอายุมานานมากแล้ว แต่ Java เพิ่งนำเอาคุณสมบัตินี้เอามาใส่ลงในเวอร์ชัน 8 หากจะกล่าวถึงที่มาของ lambda คงต้องไปดูที่ถึงที่มาของ lambda calculus ซึ่งถูกสร้างขึ้นมาตั้งแต่ปี 1930 โดยนักคณิตศาสตร์ชาวอเมริกัน  Alonzo Church  เพื่อใช้ในการแก้โจทย์ปัญหาทางคณิตศาสตร์ที่มีความซับซ้อน ในบางครั้งสมการทางคณิตศาสตร์ที่ยาวไปอาจจะทำให้เกิดความซับซ้อนโดยใช่เหตุ lambda calculus จะทำการยุบบางส่วนของสมการนั้นออกมาเป็นฟังก์ชันย่อยๆ เพื่อทำให้สมการนั้นเข้าใจง่ายขึ้น ต่อมาหลักการของ lambda calculus ได้ถูกนำไปใช้ใน Turing Machine ซึ่งเป็นแบบจำลองในอุดมคติของ Alan Turing  ที่ต่อมากลายเป็นต้นแบบที่ถูกนำไปใช้ในการผลิต  Von Neumann Machine  ซึ่ง Von Neumann Machine ตัวนี้ได้กลายเป็นต้นแบบของคอมพิวเตอร์เครื่องแรกของโลกในเวลาต่อมา ท้ายที่สุดแนวคิดของ lambda calculus ก็ถูกนำมาแปลงเป็นภาษาโปรแกรมท