เหตุใดนักพัฒนา Android จึงไม่จำเป็นต้องใช้ไดรเวอร์ USB บน Windows อีกต่อไป
- ในยุคแรกของแพลตฟอร์ม Android นักพัฒนาสามารถเชื่อมต่ออุปกรณ์ผ่านสาย USB บน Linux หรือ Mac OS X ได้ แต่ผู้ใช้ Windows ต้องค้นหาและติดตั้งไดรเวอร์เอง
- ปัจจุบันไม่จำเป็นต้องใช้ไดรเวอร์อีกต่อไป
USB Driver/OS 101
- เมื่อเชื่อมต่ออุปกรณ์ USB เข้ากับพอร์ต ระบบปฏิบัติการจะตรวจสอบลำดับชั้นของ USB descriptor เพื่อโหลดไดรเวอร์สำหรับอินเทอร์เฟซ
- อุปกรณ์ USB ส่วนใหญ่รวมอยู่ในระบบปฏิบัติการให้ทำงานอัตโนมัติได้ด้วยไดรเวอร์
Device Class ที่มีมาให้
- Windows จะโหลดไดรเวอร์ที่ผู้ใช้ติดตั้งไว้ หากไม่พบไดรเวอร์
Device Class แบบฝังในระบบหรือมีไดรเวอร์ที่ดีกว่า
ทำไมเมื่อก่อนถึงใช้ไม่ได้
- หากหาไดรเวอร์ไม่พบ Linux จะโหลด
usbfs และ Mac OS จะโหลด IOKit เพื่อให้โปรแกรมใน user space เข้าถึงอุปกรณ์ได้
- แต่ Windows จะรายงานข้อผิดพลาดและไม่โหลดไดรเวอร์ ทำให้ไม่สามารถเข้าถึงอุปกรณ์ Android ได้
เหตุใดจึงใช้งานได้ด้วยไดรเวอร์ Android
- เพื่อทำความเข้าใจว่าเกิดอะไรขึ้นเมื่อมีการติดตั้งไดรเวอร์ ผู้เขียนได้ตรวจสอบ
android_winusb.inf ซึ่งเป็น “สมอง” ของ Google USB Driver
WinUSB เป็นไดรเวอร์ USB ที่คล้ายกับ usbfs ของ Linux และ IOKit ของ Mac OS โดยช่วยให้โปรแกรมใน user space สามารถ enumerate อินเทอร์เฟซ และอ่านเขียนข้อมูลจาก endpoint ได้
เหตุใดอุปกรณ์ Android จึงไม่ต้องใช้ไดรเวอร์ Windows อีกต่อไป
- วิธีเดิมมีข้อบกพร่องชัดเจน หาก VID/PID ของอุปกรณ์ Android ไม่อยู่ในรายการ
winusb จะไม่ถูกโหลด
- Windows 8 มีวิธีที่ดีกว่าไฟล์ INF โดยจะร้องขอไดรเวอร์ที่อินเทอร์เฟซต้องการจากอุปกรณ์โดยตรง
- หากอุปกรณ์รองรับ Microsoft OS Descriptor (MOD) Windows จะร้องขอ Extended Compat ID OS Feature Descriptor
- สิ่งนี้ทำให้
winusb.sys ถูกโหลด และ adb ซึ่งเป็น executable ใน user space สามารถเปิดอุปกรณ์ ขอใช้อินเทอร์เฟซ และให้นักพัฒนาเริ่มทำงานได้
อุปกรณ์ใดบ้างที่รองรับ Microsoft OS Descriptor
- จากอุปกรณ์ Pixel ที่ผู้เขียนเป็นเจ้าของเอง ดูเหมือนว่าการรองรับ MOD เริ่มต้นขึ้นในช่วงระหว่าง Pixel 2 (2017) และ Pixel 3a (2019)
Extended Properties OS Feature Descriptor
- อุปกรณ์รุ่นใหม่กว่า เช่น Pixel 8 มี Extended Properties OS Feature Descriptor ซึ่งอาจรวม GUID, หน้าช่วยเหลือ, URL และแม้แต่ไอคอนด้วย
ความเห็นจาก GN⁺
- ประเด็นสำคัญที่สุดของบทความนี้คือ ตอนนี้อุปกรณ์ Android สามารถใช้พัฒนาบน Windows ได้โดยไม่ต้องติดตั้งไดรเวอร์แยกต่างหากอีกแล้ว
- การนำ Microsoft OS Descriptor และ Extended Compat ID OS Feature Descriptor มาใช้ ทำให้ประสบการณ์ผู้ใช้ดีขึ้นอย่างมาก
- การเปลี่ยนแปลงนี้ช่วยเพิ่มความสะดวกให้กับนักพัฒนา Android และช่วยให้เข้าถึงสภาพแวดล้อมการพัฒนาได้ง่ายยิ่งขึ้น
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ความชื่นชอบต่อ ADB(Android Debug Bridge)
ช่วงเวลาที่อุปกรณ์ Pixel เริ่มรองรับ MOD(Modern Operating Devices)
ไดรเวอร์ Windows Precision Touchpad
พัฒนาการของไดรเวอร์ ADB
ปัญหาไดรเวอร์ USB บน Windows
คำวิจารณ์ต่อการเพิ่ม USB descriptor แบบเฉพาะของ Microsoft
ประสบการณ์การแก้ปัญหา ADB
ประสบการณ์การใช้โปรโตคอล HID