[Windows Phone 7 General] PaulosCZ:
Hi folks,

Don't know if anyone posted this before (I haven't found it) - I've discovered that my WP7 device (Samsung Omnia 7) can be connected to the Ubuntu 12.04 and the system recognizes it as a MTP device and can be browsed (for music, pictures, videos...

How I found out? I have accidentally left my WP7 device connected while installing Ubuntu - and when I managed to open Rhythmbox from that simple install interface, I saw my device in the list. Whoa! Then I clicked on it... and it began to show its contents - after five seconds, everything was loaded. Nothing could be played yet (because Live CD has no commercial filters installed), but after reboot, I connected the device again and I had no problem playing anything from the list :)

Proof:

Further details:

It seems that the support for Windows Phone is provided by libgphoto2 and libmtp, as I've seen Windows Phone on their supported devices webpage, which would make it a piece of cake to connect WP7 to any Linux box out there that has libgphoto2 or libmtp. Simple, eh?

What's the big deal?

Windows Phone 7 devices use their own, probably encrypted protocol - MTPZ - that differs from the ordinary MTP and is also used on Zune devices. Besides accessing music, pictures and videos in the phone, it's probably also used for transferring apps to the device and maybe other stuff I don't know about. See here: http://xdaforums.com/showthread.php?t=1692209 - it's not a perfect explanation though. Also some blogpost on MTPZ implementation: http://kbhomes.github.com/2012/02/13/mtpz-implementation.html

Tested programs

Rhythmbox - playback works as it should

UPDATE 2012-10-08: it seems that music copying is working with the latest Ubuntu 12.10 beta. At least a little. Rhythmbox was able to copy music to the phone, although it was there without an album or an artist - but listed in the "songs" pivot. A good start, I would say.

Clementine - attempts to load the device's library but crashes

UPDATE 2012-11-18: attempts to load the device's library and in the process it gets stuck in an infinite loop and causes huge memory leak - do not use!

Nautilus - browsing and playing/displaying/copying from the device works, but I've experienced a timeout issue once (device did not respond, probably it was too busy). Copying to the device also works but neither pictures nor music appear in the phone when browsing there. (Someone could work on that as the files are there when I reconnect the phone.)

lsusb:

Bus 001 Device 006: ID 045e:04ec Microsoft Corp. Windows Phone (Zune)
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2 ?
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x045e Microsoft Corp.
idProduct 0x04ec Windows Phone (Zune)
bcdDevice 0.00
iManufacturer 0
iProduct 0
iSerial <not going to tell you :) >
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 62
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 255 Vendor Specific Protocol
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 4
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 255 Vendor Specific Protocol
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x05 EP 5 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2 ?
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0000
(Bus Powered)