You are not logged in.

#1 2009-12-21 17:19:56

phunni
Member
From: Bristol, UK
Registered: 2003-08-13
Posts: 794

libmtp, udev and Cowon D2+

I have  Cowon D2+ which I have been trying ot get working with MTP since I first got it.  Before anyone asks - the reason I want MTP support is simply so that I can scrobble to last.fm and also for better playlist support. I have set the device to connect using MTP.

I have followed the instructions here : http://bbs.archlinux.org/viewtopic.php? … 87#p585487.  The relevant results of

lsusb -v

are:

Bus 001 Device 006: ID 0e21:0871 Cowon Systems, Inc.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x0e21 Cowon Systems, Inc.
  idProduct          0x0871
  bcdDevice            2.51
  iManufacturer           1
  iProduct                2
  iSerial                 3
  bNumConfigurations      1

So, based on the instructions, I created /etc/udev/rules.d/65-libmtp.rules and added the following:

SUBSYSTEM!="usb_device", ACTION!="add", GOTO="libmtp_rules_end"

#Cowon D2+
SYSFS{idVendor}=="0e21", SYSFS{idProduct}=="0871", SYMLINK+="libmtp-%k", MODE="666", GROUP="audio"

LABEL="libmtp_rules_end"

However, when I run mtp-detect I am simply told that there are

No raw devices found.

If I look in /dev and run

ls -larth libmtp*

I get the following results:

lrwxrwxrwx 1 root root 15 Dec 21 16:33 libmtp-1-6 -> bus/usb/001/006
lrwxrwxrwx 1 root root  9 Dec 21 16:33 libmtp-usbdev1.6 -> usbdev1.6
lrwxrwxrwx 1 root root  3 Dec 21 16:33 libmtp-sg5 -> sg5
lrwxrwxrwx 1 root root 11 Dec 21 16:33 libmtp-7:0:0:0 -> bsg/7:0:0:0
lrwxrwxrwx 1 root root  3 Dec 21 16:33 libmtp-sg6 -> sg6
lrwxrwxrwx 1 root root 11 Dec 21 16:33 libmtp-7:0:0:1 -> bsg/7:0:0:1
lrwxrwxrwx 1 root root  3 Dec 21 16:33 libmtp-sdg -> sdg
lrwxrwxrwx 1 root root  3 Dec 21 16:33 libmtp-sdf -> sdf

Which suggests to me that something is happening - but not enough for me to connect over MTP.

Offline

#2 2009-12-22 16:25:06

phunni
Member
From: Bristol, UK
Registered: 2003-08-13
Posts: 794

Re: libmtp, udev and Cowon D2+

After a failed attempt to run 'mtp-detect' my kernel.log contains the following:

Dec 22 16:19:50 localhost kernel: usb 1-6: usbfs: USBDEVFS_CONTROL failed cmd mtp-detect rqt 128 rq 6 len 255 ret -110
Dec 22 16:19:51 localhost kernel: usb 1-6: usbfs: USBDEVFS_CONTROL failed cmd mtp-detect rqt 128 rq 6 len 1024 ret -110
Dec 22 16:20:21 localhost kernel: usb 1-6: usbfs: USBDEVFS_CONTROL failed cmd mtp-detect rqt 128 rq 6 len 255 ret -110
Dec 22 16:20:22 localhost kernel: usb 1-6: usbfs: USBDEVFS_CONTROL failed cmd mtp-detect rqt 128 rq 6 len 1024 ret -110

Does that help shed any light on why this is failing?

Offline

#3 2009-12-23 11:07:34

phunni
Member
From: Bristol, UK
Registered: 2003-08-13
Posts: 794

Re: libmtp, udev and Cowon D2+

No ideas at all?

Offline

#4 2009-12-23 16:38:37

MadCat_X
Member
Registered: 2009-10-08
Posts: 189

Re: libmtp, udev and Cowon D2+

What's your version of libmtp? There is a libmtp 0.3.7 available in extra repo, which seems to be outdated. A bit of googling told me that such errors in kernel.log can be caused by a device unsupported by libmtp. Feel free to use following PKGBUILD to update your libmtp to the 1.0.1 version.

# $Id: PKGBUILD 53862 2009-10-03 15:55:18Z giovanni $
# Contributor: damir <damir@archlinux.org>
# Contributor: Kevin Edmonds <edmondskevin@hotmail.com>

pkgname=libmtp
pkgver=1.0.1
pkgrel=1.0
pkgdesc="library implementation of the Media Transfer Protocol"
arch=("i686" "x86_64")
url="http://libmtp.sourceforge.net"
license=("LGPL")
depends=("libusb")
makedepends=('doxygen')
source=("http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz")
md5sums=('d540a0ef033483bd10b7f83f7a84e4a7')
options=('!libtool')

build() {
  cd $srcdir/$pkgname-$pkgver
  ./configure --prefix=/usr
  make || return 1
  make DESTDIR=$pkgdir install
  install -D -m0644 libmtp.rules \
         $pkgdir/lib/udev/rules.d/52-libmtp.rules
  install -D -m0644 libmtp.fdi \
         $pkgdir/usr/share/hal/fdi/information/20thirdparty/libmtp.fdi
}

libmtp 1.0.1 lists Cowon iAudio D2+ if I run "mtp-hotplug | grep Cowon"

Last edited by MadCat_X (2009-12-23 16:40:21)

Offline

#5 2009-12-23 17:47:51

phunni
Member
From: Bristol, UK
Registered: 2003-08-13
Posts: 794

Re: libmtp, udev and Cowon D2+

That's fantastic - thank you!

I have now made progress.  mtp-detect now gives the following output:

libmtp version: 1.0.1

Listing raw device(s)
   Found 1 device(s):
   Cowon: iAudio D2+ DAB FW 4.x (MTP mode) (0e21:0871) @ bus 0, dev 3
Attempting to connect device(s)

It never gets beyond that - it just sits there with no errors either in the console or the logs...

I've tried it both as root and normal user and have met with no success...

Offline

#6 2009-12-23 18:05:24

MadCat_X
Member
Registered: 2009-10-08
Posts: 189

Re: libmtp, udev and Cowon D2+

Is there any info in "dmesg"? Have you tried rebooting both your PC and the player?

Offline

#7 2009-12-23 18:16:07

phunni
Member
From: Bristol, UK
Registered: 2003-08-13
Posts: 794

Re: libmtp, udev and Cowon D2+

Thanks for your help.

dmesg says:

usb 1-6: usbfs: process 1907 (mtp-detect) did not claim interface 0 before use

I have tried restarting both my computer and the player without success.

Offline

#8 2009-12-23 19:15:17

phunni
Member
From: Bristol, UK
Registered: 2003-08-13
Posts: 794

Re: libmtp, udev and Cowon D2+

OK - it's decided to start working now... Hoping it's not inconsistent...

Offline

#9 2009-12-23 19:18:48

MadCat_X
Member
Registered: 2009-10-08
Posts: 189

Re: libmtp, udev and Cowon D2+

This is most likely a bug in libmtp, but it _might_ be solved by recompiling libmtp against new libusb. Arch uses legacy libusb 0.1.12 by default, but there is a libusb1 in extra repo with the latest libusb 1.0.6. The catch is that these packages are installed separately and forcing libmtp to compile against the new libusb1 is not really a straightaway operation. To do so I had to do following.

Caution, this is a bit of a hack and few things could screw up after finishing it. I tried it myself and my PC seems to work just fine so far, but you never know....

1) Remove libmtp
   pacman -R libmtp

2) Install libusb1 from extra
   pacman -S libusb1

3) Remove libusb (form now on things might go weird)
   pacman -Rd libusb

4) Get libusb-compat package from AUR and modify the PKGBUILD so that it contains "provides=('libusb')" line

5) Install libusb-compat
   makepkg -cif --asroot

6) Install libmtp

7) Reboot and pray:)

When I did this I got pacman complaining about missing dependency for hal (needs libusb>=0.1.12), but this most likely just a matter of creating proper "provides" line in libusb-compat PKGBUILD. If you have an idea, I'd be glad to hear it:)

Last edited by MadCat_X (2009-12-23 20:13:11)

Offline

#10 2009-12-23 19:43:53

phunni
Member
From: Bristol, UK
Registered: 2003-08-13
Posts: 794

Re: libmtp, udev and Cowon D2+

OK - I did find that whatever had caused it to work before was very intermittent.  I tried what you suggested above and everything work and it also now seems to work much more consistently.

However, I don't think I'm quite there yet! smile

Whenever I run a command like mtp-connect I get the following errors before it goes on to look like it's working:

libusb couldn't open USB device /dev/bus/usb/001/004: Permission denied.
libusb requires write access to USB device nodes.
libusb couldn't open USB device /dev/bus/usb/002/002: Permission denied.
libusb requires write access to USB device nodes.

I don't know if that's important or not, nor how I might fix it. 

I now find that, when I have an mtp device plugged in that amarok consistently crashes.  I tried running banshee and it sees the cowon and can tell me details about it - but not list any of the tracks on the device...

Offline

#11 2009-12-23 20:10:16

MadCat_X
Member
Registered: 2009-10-08
Posts: 189

Re: libmtp, udev and Cowon D2+

Unfortunately I don't have any player using MTP around to test with, but can you manipulate with files on the player using console commands? As for the errors reported by libmtp, I get it too, but I don't consider it serious.

Last edited by MadCat_X (2009-12-23 20:11:11)

Offline

#12 2009-12-24 10:11:19

phunni
Member
From: Bristol, UK
Registered: 2003-08-13
Posts: 794

Re: libmtp, udev and Cowon D2+

I created a simple playlist so I figure that it's working OK. Now I just need to get some sort of GUI working that can handle playlists and last.fm scrobbling and I'm golden! smile

Thanks for all the help!

Offline

#13 2009-12-24 15:18:19

MadCat_X
Member
Registered: 2009-10-08
Posts: 189

Re: libmtp, udev and Cowon D2+

Would something like this suffice?

http://aur.archlinux.org/packages.php?ID=29868

Offline

#14 2010-01-19 17:07:52

uthark
Member
Registered: 2010-01-19
Posts: 1

Re: libmtp, udev and Cowon D2+

MadCat_X wrote:

4) Get libusb-compat package from AUR and modify the PKGBUILD so that it contains "provides=('libusb')" line

When I did this I got pacman complaining about missing dependency for hal (needs libusb>=0.1.12), but this most likely just a matter of creating proper "provides" line in libusb-compat PKGBUILD. If you have an idea, I'd be glad to hear it:)

In order to fix this issue with HAL you should modify PKGBUILD so that it contains "provides=('libusb=0.1.12')" line

Pay attention to version specification in provides section.

Offline

Board footer

Powered by FluxBB