mounting my camera as a normal (usb) device

Duncan 1i5t5.duncan at cox.net
Tue Nov 13 20:14:49 GMT 2012


B.W.H. van Beest posted on Mon, 12 Nov 2012 23:14:17 +0100 as excerpted:

> When I connect my camera to my computer (opensuse 12.2, kde 4.8.5) I can
> mount it via the device notifier, selecting the option "open in
> filemanager".
> Then konqueror pops up and opens a screen using the "camera:" protocol.
> 
> Although this may look nice, it isn't!   It turns out to be very slow,
> error prone and unreliable.
> I prefer to mount the camera "the old way", that is, just as an ordinary
> usb -device so that I can in a konsole copy the files from the camera to
> a destination directory.
> But I have no clue how that should be done. Can somebody give me a hint
> or clue?

Let me put this right at the top.  I don't personally have such a camera 
or other device (cell phones are common, media players...), so I'll be 
limited in the amount of specifics I can give you.  However, I have some 
knowledge of the general technology and how Linux (and kde) deals with 
that, that I can share, that will hopefully at least point you in the 
right direction.

In general there are at least three standard or semi-standard methods for 
accessing and transferring files to/from a USB device.  Two of these, PTP 
(picture transfer protocol, for cameras) and MTP (media transfer 
protocol, for portable media players) are related and compatible, tho 
aimed at different devices.  The third, USB MSC (USB mass storage device 
class), aka UMS (USB mass storage), is much different, more general 
purpose (tho USB specific), and faster, but has one significant 
limitation that the other two avoid.

For more about each than I care to write, check the wikipedia entries:

http://en.wikipedia.org/wiki/Picture_Transfer_Protocol

http://en.wikipedia.org/wiki/Media_Transfer_Protocol

http://en.wikipedia.org/wiki/USB_mass_storage_device_class

MTP is an originally Microsoft extension of PTP designed to support DRM 
(digitial restrictions management), etc, on portable media players.  It 
was standardized in 2008.  PTP was designed as a common object transfer 
protocol by the various digital camera manufacturers.  Both variants 
operate on individual objects (generally files) as provided by the USB 
gadget (as opposed to host, generally computer) device.  The operating 
system on the USB device remains in full control of how it actually 
manages these objects and over what it exposes or choses not to expose.  
As such, it's ideally suited to various DRM schemes, since the OS can 
simply refuse to deal with (expose, outgoing, save, incoming) anything 
that doesn't have the appropriate DRM tags.

On Linux, PTP/MTP access is provided to an implementing app by user-space 
libraries, so only specific applications which choose to support it (and 
thus depend on those libraries) can be used.  Apps that haven't built in 
that support simply won't see PTP/MTP at all.

Meanwhile, of specific interest in this thread, since MTP/PTP access is 
mediated by the devices OS, (1) it's possible (indeed, required) to 
access objects while the device is "on" without risk of corruption or 
damage to the underlying filesystem, and (2) speeds are often limited by 
the relatively high level access provided due to the additional 
processing required on the often relatively slow device CPU.

This (PTP in this case) would appear to be the access method exposed by 
the camera:// protocol, while the alternative USB mass storage would 
appear to be what you're after.


USB mass storage (UMS) by contrast, is a much lower level access 
protocol.  It presents something very close to a raw block device, which 
the accessing USB host (computer) is able to manipulate pretty much as it 
will.  This tends to be much faster since the gadget's normally 
relatively slow (as compared to the host computer) CPU does much less 
processing, pretty much just exposing the underlying storage device as-
is.  HOWEVER, because it allows the accessing host virtually unlimited 
access, it's not safe to allow both the gadget's normal access and the 
hosts direct access at the same time, so the USB gadget device must be 
"off" in terms of its normal OS while in UMS mode.  This can be quite 
inconvenient for phones especially, but also prevents UMS mode access and 
listening to a media player over its headphones at the same time, for 
instance.  Thus, UMS mode, while faster and less restricted, is becoming 
less popular as portable devices merge and such devices are more often a 
phone/tablet/media-player/camera all-in-one, where you often do NOT want 
to shut off the device and thus stop taking calls, etc, just to put it in 
exclusive-access UMS mode.

But as your device is apparently a dedicated camera, this shouldn't be 
such an issue, and UMS mode should be quite practical... assuming your 
device supports it of course, which it probably does. =:^)

Because the underlying block device is exposed to the host OS /as/ a 
normal block device, it's of course possible to format it as one would 
any other block device.  So in theory you could fdisk it and format 
various partitions as ext4, fat32, etc.  The problem is that the embedded 
OS probably understands only fat32 or the like, and may not even 
understand partitions, so while you /could/ do that, it could well brick 
the device in terms of its original purpose, such that it's now only a 
fancy and expensive USB stick with some extra but worthless additional 
hardware.  That's obviously not something most users would want, but it's 
precisely the flexibility of the low-level block-device access that UMS 
mode exposes, that allows you do do it anyway, should you decide to do so.

On Linux, a kernel module provides the UMS "driver".  With it (and 
associated SCSI modules, etc) loaded and the device attached in UMS mode, 
the device appears as an ordinary block device, typically as /dev/sdX 
(where X is a letter).

Depending on your automount configuration, the device may be automounted, 
typically as /media/something-or-other.  Alternatively, on kde it'll show 
up in the device notifier and you can mount it and open in konqueror, etc.

Alternatively, as Chuck suggested, you can use the standard commandline 
mount/umount tools, and/or setup an entry for it in fstab, as you would 
any other block device with a filesystem on it.


The key I suspect you're missing, however, is that UMS is an entirely 
separate access mode on the USB gadget device (your camera in this 
case).  Some such devices have a method to select which mode they appear 
in.  Others automatically present ptp/mtp mode if connected while they're 
"on", or in UMS mode if they're connected while they're "off".  Either 
way, in ordered to get UMS mode, you must figure out how your device 
exposes it (manual mode switch or simply on/off toggle), or indeed, 
whether it exposes UMS mode at all (some devices don't), and activate 
that on the device, before it's connected.

Once you connect the device in UMS mode, kde's device notifier should 
detect it, and "open using konqueror" should "just work" as it would with 
any other USB mass storage device, thumb drive, portable disk, etc.  
Alternatively, you can use the standard Linux block device and filesystem 
tools, fdisk, mkfs, fsck, mount/umount, an entry in /etc/fstab, etc.

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman

___________________________________________________
This message is from the kde mailing list.
Account management:  https://mail.kde.org/mailman/listinfo/kde.
Archives: http://lists.kde.org/.
More info: http://www.kde.org/faq.html.




More information about the kde mailing list