Closed Bug 922927 (mtp) Opened 6 years ago Closed 5 years ago

[Devices][User Story] Media Transfer Protocol (MTP)

Categories

(Firefox OS Graveyard :: MTP/UMS, defect)

x86
Gonk (Firefox OS)
defect
Not set

Tracking

(feature-b2g:2.1)

VERIFIED FIXED
2.1 S3 (29aug)
feature-b2g 2.1

People

(Reporter: bhuang, Assigned: hochang)

References

Details

(Whiteboard: [ucid:Device5, 2.1, ft:devices][2.1-feature-qa+])

Attachments

(2 files, 3 obsolete files)

User story:
As a user, I want to be able to access content on my device while viewing/transferring them on a connected PC.  This can be achieved by connecting via the Media Transfer Protocol.
Whiteboard: [ucid:Device5, 1.4:p2, ft:devices]
Blocks: 1.4-devices
Assignee: nobody → nhsieh
Attached file [Devices] MTP_140117.pdf (obsolete) —
Assignee: nhsieh → nobody
ni UX, we are planning to do MTP in v2.1, want to confirm the previous UX spec is still valid, thanks.
No longer blocks: 1.4-devices-targeted
Flags: needinfo?(ofeng)
Flags: needinfo?(jelee)
Whiteboard: [ucid:Device5, 1.4:p2, ft:devices] → [ucid:Device5, 2.1, ft:devices]
Blocks: 2.1-devices
(In reply to howie [:howie] from comment #2)
> ni UX, we are planning to do MTP in v2.1, want to confirm the previous UX
> spec is still valid, thanks.

So I don't see how item A on page 5 of the attachment can work.

The phone needs to decide whether to present MTP or UMS. The phone can't really tell if the host supports MTP or not.

I think that "Share using USB" needs to be a tristate, with UMS, MTP, and Off as the 3 settings.
And if there are 2 volumes, I think that they need to both be shared the same way (I'm pretty sure that you can't have one volume shared using UMS and one shared using MTP).

So the 3-way choice probably needs to be on "USB Storage" and not "Share using USB" as I suggested in the previous comment.
The spec is mostly valid, we'd like to make 4 minor changes to it:
1) On settings storage section, change the order to
USB storage
Media storage 
Application storage 
2) On media storage page, remove the two "share using USB" switches (when user turned on USB storage from settings, both internal and SD card storage will be accessible). 
3) On media storage page, change the string "Space left" to "Available".
4) On application storage page, change the string "Left" to "Available". 

Thanks!
Flags: needinfo?(ofeng)
Flags: needinfo?(jelee)
I still don't see anyplace to choose between MTP and UMS.
Depends on: 1029533
(In reply to Dave Hylands [:dhylands] from comment #6)
> I still don't see anyplace to choose between MTP and UMS.

Hello Dave, the original spec defines: 
"The MTP and Mass storage will be controlled at the same time. If switch on, MTP will be default enabled and will be the first priority. If that target system doesn’t support MTP feature, then mobile phone will auto enable Mass storage."
I find it quite reasonable. I don't see the necessity of letting user choose between mtp and ums instead of simply letting the device do the work. Is there any specific reason for adding this feature? Let me know, tks!
Flags: needinfo?(dhylands)
Older versions of linux, like ubuntu 12.04, support PTP and "sort of" support MTP.

With a linux 12.04 host, MTP will fail to connect (at least none of my android phones connect properly via MTP), but the phone would detect that the host was trying to connect, and would thus be unable to connect, although if they could connect via UMS, then the user could choose that.
Flags: needinfo?(dhylands)
(In reply to Dave Hylands [:dhylands] from comment #8)
> Older versions of linux, like ubuntu 12.04, support PTP and "sort of"
> support MTP.
> 
> With a linux 12.04 host, MTP will fail to connect (at least none of my
> android phones connect properly via MTP), but the phone would detect that
> the host was trying to connect, and would thus be unable to connect,
> although if they could connect via UMS, then the user could choose that.

Can we try something like auto switch to connect via UMS when fail to connect with MTP for over x seconds? A timeout mechanism. For users that are not tech-savvy, they wouldn't know the difference between MTP and UMS, thus when connection failed, they probably won't realize they can try to connect with UMS. It's better if we do it for users ;)
The problem with doing anything via UMS (even trying), is that the users data goes offline (i.e. inaccessible) while you try, and there isn't really a way to know whether UMS suceeded. Terminating UMS requires unplugging the USB cable.

With MTP trying doesn't make the data go offline, and you do get to find out if a host actually connected or not.

I guess as a user, I might not want my data to become inaccessible, so I might not want to even try UMS.

I'm fine with try MTP, failover to UMS as a backup, as a choice. I just think its a mistake to make it the only option available.

I've also been told that UMS is significantly faster than MTP, so if I were wanting to transfer some podcasts or something, I might want to use UMS even though MTP is available.

I can see usecases for each of the following:
1 - Try MTP, failover to UMS
2 - Only enable MTP
3 - Only enable UMS
4 - Don't share.

Eventually (in a few years) option 2 may be the only option we offer. Until then, we need to deal with the transition.
feature-b2g: --- → 2.1
Attached file [2.1 Settings] MTP_SD card v1.0.pdf (obsolete) —
Hello, please see attached for the latest spec for USB/Media storage settings. Thanks!
Attachment #8366425 - Attachment is obsolete: true
(In reply to Dave Hylands [:dhylands] from comment #10)

Hello Dave, thanks for the detail explanation! I've added the UI for selecting transfer protocol ;)
Attached file [2.1 Settings] MTP_SD card v1.1.pdf (obsolete) —
Hello all, see attached for minor updates. Thanks!
Attachment #8451434 - Attachment is obsolete: true
Depends on: 1036861
Depends on: 1036862
Depends on: 1036863
Depends on: 1037680
QA Whiteboard: [COM=Storage]
Hello all, some of the feature in the latest spec may not in scope of 2.1,
thanks!
Attachment #8453627 - Attachment is obsolete: true
Depends on: 1039939
Depends on: 1043264
QA Whiteboard: [COM=Storage] → [COM=Storage][2.1-feature-qa+]
Summary: [Devices][User Story] Media Transfer Protocol → [Devices][User Story] Media Transfer Protocol (MTP)
Depends on: 1049240
Depends on: 1049243
Depends on: 1049244
Alias: mtp
Flags: in-moztrap?(ashiue)
QA Contact: ashiue
QA Whiteboard: [COM=Storage][2.1-feature-qa+] → [2.1-feature-qa+]
Whiteboard: [ucid:Device5, 2.1, ft:devices] → [ucid:Device5, 2.1, ft:devices][2.1-feature-qa+]
QA Whiteboard: [2.1-feature-qa+]
QA Whiteboard: [COM=Storage]
Target Milestone: --- → 2.1 S3 (29aug)
Depends on: 1052885
Depends on: 1053698
Please take a look at the latest spec, thanks!
To assign Eric as owner of the user story.
Assignee: nobody → echou
Depends on: 1055693
Depends on: 1055699
I see a problem with the UX spec (I didn't fully appreciate this until I started using it).

I used to be enable UMS for internal storage, external storage, or both.

This was needed because not all hosts support the phone sharing both volumes (in this case the user would need to pick which one).

Even with MTP, the user might not want to share both volumes with the PC.

So I think that we need to add back the button to control whether each volume is shared with the PC.

It was also not very obvious that you needed to touch the "USB storage" text in order to get the MTP/UMS selection. I had to go and re-read the spec to figure out how to get that panel up.
Flags: needinfo?(jelee)
Depends on: 1059484
(In reply to Dave Hylands [:dhylands] from comment #18)

> I used to be enable UMS for internal storage, external storage, or both.
> 
> This was needed because not all hosts support the phone sharing both volumes
> (in this case the user would need to pick which one).
> 
I was unaware of this technical situation. Is there a particular host you are referring to? 
What happens if the host supports only one volume and on our device both internal and SD card are enabled? At this point, does the host simply pick one volume? How would user know he has to pick one volume?  

> Even with MTP, the user might not want to share both volumes with the PC.
> 
I'm not too worried about this scenario. Removing the individual toggle for the two storage reduces the chance of user gets confused by the relationship between the "USB storage toggle" and the individual ones (they are at different layers), it also gives user a cleaner/ clearer UI. The benefit seems greater to me than allowing user to choose which volume to share. 

> So I think that we need to add back the button to control whether each
> volume is shared with the PC.
> 
> It was also not very obvious that you needed to touch the "USB storage" text
> in order to get the MTP/UMS selection. I had to go and re-read the spec to
> figure out how to get that panel up.

This particular list style (two touch areas that functions differently) is part of building block design and is also used somewhere else. I agree that it is not too obvious that user can actually do two things here, there will be a discussion with visual designer regarding redesigning the look. 

I personally think it is quite logical to place the switching protocol function here, as it is directly related to "USB storage". Placing the function in "media storage" would make the already cluttered view even more complicated, since it is probably not something user needs to make change often, I prefer to keep it as it is. Thank you!
Flags: needinfo?(jelee)
(In reply to Jenny Lee from comment #19)
> (In reply to Dave Hylands [:dhylands] from comment #18)
> 
> > I used to be enable UMS for internal storage, external storage, or both.
> > 
> > This was needed because not all hosts support the phone sharing both volumes
> > (in this case the user would need to pick which one).
> > 
> I was unaware of this technical situation. Is there a particular host you
> are referring to? 
> What happens if the host supports only one volume and on our device both
> internal and SD card are enabled? At this point, does the host simply pick
> one volume? How would user know he has to pick one volume?  

I ran into this with older ubuntu (around 10.04 IIRC) or Windows XP. I don't recall if the issue was with the host, or the version of android we were using on the phone (it was 2 years ago). Even though both volumes were shared, only one would show up on the host. I don't recall if it picked the same volume each time. Anyways, that was the original reason for having the 2 levels of controls.
QA Whiteboard: [COM=Storage] → [COM=Storage][QAnalyst-Triage?]
Flags: needinfo?(dharris)
Whiteboard: [ucid:Device5, 2.1, ft:devices][2.1-feature-qa+] → [ucid:Device5, 2.1, ft:devices][2.1-feature-qa+][2.1-flame-test-run-1]
QA Whiteboard: [COM=Storage][QAnalyst-Triage?] → [COM=Storage]
Flags: needinfo?(dharris)
Whiteboard: [ucid:Device5, 2.1, ft:devices][2.1-feature-qa+][2.1-flame-test-run-1] → [ucid:Device5, 2.1, ft:devices][2.1-feature-qa+]
All feature blockers have landed. Howie, please assist with the following steps.

Especially thanks to Dave, Alphan, Jenny, Ian and Fred to get MTP working on Firefox OS!
Assignee: echou → hochang
I'm marking this user story bug resolved fixed since all 2.1 bugs are landed. Let's continue to work on the follow up bugs, thanks everyone!
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Verified landed
Gaia      2be78d83a760fa3b9638fe51c266b442d14597f1
Gecko     https://hg.mozilla.org/mozilla-central/rev/1db35d2c9a2f
BuildID   20140831160203
Version   34.0a1
Status: RESOLVED → VERIFIED
Component: General → MTP/UMS
QA Whiteboard: [COM=Storage] → [COM=MTP/UMS]
You need to log in before you can comment on or make changes to this bug.