The MTP specification doesn't support the basic open/read/write/close operations that are required to implement normal file access on Linux - it only provides upload/download for files, and that's what the MTP backend implements.
Nautilus will copy files just fine, but as soon as you try to use an application that doesn't explicitly account for the restricted set of operations, you'll get an error. evince is an example of an app that does support it (it copies the file to /tmp then opens it).
So, that's what's going on in 13.04.
Now, it happens to be the case that Google implemented a set of MTP extensions in Android that offer open/read/write/close, and it's possible to provide normal file access with these. I've done this work in the gvfs development branch but it missed the 1.16 release window, so it's not going to show up in Ubuntu until 13.10 at the earliest. 14.04 and still not there
In the meantime, you can use my ppa to install builds where I have backported this work.
https://launchpad.net/~langdalepl/+archive/gvfs-mtp
Finally, it's important to note that these extensions only exist in Google's MTP stack. You have a Nexus 10, so it will work as it's running stock Android - but someone using a Samsung device, or devices from other manufacturers, will not have these extensions and might not have support for normal file I/O.
Best Answer
I found this surprisingly tough. I have a Nexus 5 and KDE (using
libmtp
, I think) displays it as a Nexus 5. My first instinct was that KDE was simply looking at the hardware database. This maps vendor and product strings from USB devices to known names. Here's the problem:My Nexus 5 just got a downgrade! So KDE isn't getting it from there.
We can use
udevadm
to query devices. In this case we need to pass it a reference to the device. I'm going to use the bus/device numbers from above (they need to be%03d
formatted, so 1 becomes 001, 20 becomes 020, etc):There's a lot of other crap in there but
ID_MODEL
seems to be what we want. If you need to further extract and process that, you could run it throughawk
(or another) to clean it up and replace the underscore: