Comment 8 for bug 1797890

Revision history for this message
James Cuzella (trinitronx) wrote :

After testing out the newer version of libmtp v1.1.18, I was able to get even the current version of Calibre working (as long as I unmounted the device from Nautilus / GVFS first!)

Here is the initial error if the device is already automounted by GVFS:

Device 0 (VID=1949 and PID=0581) is a Amazon Kindle Fire HD8 Plus.
libusb_claim_interface() reports device is busy, likely in use by GVFS or KDE MTP device handling alreadyLIBMTP PANIC: Unable to initialize device
Error while trying to open MTPDevice(busnum=1, devnum=36, vendor_id=6473, product_id=1409, bcd=547, serial='XXXXXXXXXXXXXXXX', manufacturer='Amazon', product='XXXXXX') (Driver: <calibre.devices.mtp.driver.MTP_DEVICE object at 0x7f8353368880>)
Traceback (most recent call last):
  File "/usr/lib/calibre/calibre/devices/mtp/unix/driver.py", line 218, in open
    self.dev = self.create_device(connected_device)
  File "/usr/lib/calibre/calibre/devices/mtp/base.py", line 25, in synchronizer
    return func(self, *args, **kwargs)
  File "/usr/lib/calibre/calibre/devices/mtp/unix/driver.py", line 171, in create_device
    return self.libmtp.Device(d.busnum, d.devnum, d.vendor_id,
libmtp.MTPError: Unable to open MTP device with busnum=1 and devnum=36, tried 1 such devices

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/calibre/calibre/gui2/device.py", line 297, in detect_device
    dev.open(cd, self.current_library_uuid)
  File "/usr/lib/calibre/calibre/devices/mtp/driver.py", line 125, in open
    BASE.open(self, device, library_uuid)
  File "/usr/lib/calibre/calibre/devices/mtp/base.py", line 25, in synchronizer
    return func(self, *args, **kwargs)
  File "/usr/lib/calibre/calibre/devices/mtp/unix/driver.py", line 221, in open
    raise OpenFailed('Failed to open %s: Error: %s'%(
calibre.devices.errors.OpenFailed: Failed to open MTPDevice(busnum=1, devnum=36, vendor_id=6473, product_id=1409, bcd=547, serial='XXXXXXXXXXXXXXXX', manufacturer='Amazon', product='XXXXXX'): Error: Unable to open MTP device with busnum=1 and devnum=36, tried 1 such devices
Device 0 (VID=1949 and PID=0581) is a Amazon Kindle Fire HD8 Plus.
libusb_claim_interface() reports device is busy, likely in use by GVFS or KDE MTP device handling alreadyLIBMTP PANIC: Unable to initialize device
Error while trying to open MTPDevice(busnum=1, devnum=37, vendor_id=6473, product_id=1409, bcd=547, serial='XXXXXXXXXXXXXXXX', manufacturer='Amazon', product='XXXXXX') (Driver: <calibre.devices.mtp.driver.MTP_DEVICE object at 0x7f8353368880>)
Traceback (most recent call last):
  File "/usr/lib/calibre/calibre/devices/mtp/unix/driver.py", line 218, in open
    self.dev = self.create_device(connected_device)
  File "/usr/lib/calibre/calibre/devices/mtp/base.py", line 25, in synchronizer
    return func(self, *args, **kwargs)
  File "/usr/lib/calibre/calibre/devices/mtp/unix/driver.py", line 171, in create_device
    return self.libmtp.Device(d.busnum, d.devnum, d.vendor_id,
libmtp.MTPError: Unable to open MTP device with busnum=1 and devnum=37, tried 1 such devices

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/calibre/calibre/gui2/device.py", line 297, in detect_device
    dev.open(cd, self.current_library_uuid)
  File "/usr/lib/calibre/calibre/devices/mtp/driver.py", line 125, in open
    BASE.open(self, device, library_uuid)
  File "/usr/lib/calibre/calibre/devices/mtp/base.py", line 25, in synchronizer
    return func(self, *args, **kwargs)
  File "/usr/lib/calibre/calibre/devices/mtp/unix/driver.py", line 221, in open
    raise OpenFailed('Failed to open %s: Error: %s'%(
calibre.devices.errors.OpenFailed: Failed to open MTPDevice(busnum=1, devnum=37, vendor_id=6473, product_id=1409, bcd=547, serial='XXXXXXXXXXXXXXXX', manufacturer='Amazon', product='XXXXXX'): Error: Unable to open MTP device with busnum=1 and devnum=37, tried 1 such devices

Reference: https://sourceforge.net/p/libmtp/bugs/1879/#5c37

To work around Ubuntu's GVFS automount behavior:

- Open Nautilus
- Find your device's product ID name in the mounted filesystems list
- Click the Eject button
- Now open Calibre

After making sure only Calibre is managing the MTP device, it works fine!

Resolution: Update to libmtp >= 1.1.18