Re: usb hubs on embedded devices

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[This time as text - sorry to Alan who will have got it twice]
Thanks for your response;

I provide further info below, and apologize for the original confused request.

Alan Stern wrote:
On Mon, 19 Jan 2009, Sam Liddicott wrote:

I've soldered added a usb connector to my Freecom Musicpal internet radio, and it works fine with USB memory sticks, but gets stuck if there is a USB hub inserted.

I don't know enough to tell if it is a kernel problem or a user space problem

It's not a userspace problem.

Thats helpful, thanks.

My USB hard disk has a built-in hub as lsusb shows:

Bus 005 Device 006: ID 1058:0702 Western Digital Technologies, Inc. Passport External HDD
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

This doesn't show anything one way or another, since it doesn't indicate whether device 006 is a hub or not.

Device 001 is a hub, though, surely? It vanishes when I remove the USB hard disk.

The musicpal doesn't like usb hubs; it recognizes "a" usb device as dmesg on the musicpal shows: Jan 17 10:58:00 MusicPal user.info kernel: usb 1-1: USB disconnect, address 6 Jan 17 10:58:01 MusicPal user.info kernel: usb 1-1: new high speed USB device using ehci-mv88w8xx8 and address 7 Jan 17 10:58:01 MusicPal user.info kernel: usb 1-1: configuration #1 chosen from 1 choice

But it doesn't go on to enumerate the devices on the bus.

What devices? It sure looks like it enumerated the hub. That's what the last line indicates.

Yes, but it didn't seem to enumerate the hard disk sitting of the end of it.

I think I was too brief on my data sources for which I apologise.

The lsusb (shown above) was taken from my desktop PC based on a diff of lsusb before and after inserting the disk. (The musicpal doesn't have lsusb).

The dmesg above is from the musicpal.

It seems like the musicpal notices the hub built-in to the disk but not the disk

What can I do to help it see the devices beyond the hub?

Fix the underlying problem!  :-)


So I did some "control" tests using a cheap 4 port hub, which my desktop PC lsusb shows as:
Bus 003 Device 005: ID 058f:9254 Alcor Micro Corp. Hub

Although it recognizes and mounts a usb memory stick when plugged directly, it fails to do so if it is plugging in via the 4 port hub.

if I plug in a 4 port hub, dmesg -c shows:

$ dmesg -c
usb 1-1: new high speed USB device using ehci-mv88w8xx8 and address 12
usb 1-1: ep0 maxpacket = 8
usb 1-1: new high speed USB device using ehci-mv88w8xx8 and address 13
usb 1-1: ep0 maxpacket = 8
usb 1-1: new high speed USB device using ehci-mv88w8xx8 and address 14
usb 1-1: ep0 maxpacket = 8
usb 1-1: new high speed USB device using ehci-mv88w8xx8 and address 15
usb 1-1: ep0 maxpacket = 8

but the new hubs don't show up
$ ls -l /sys/bus/usb/drivers/hub/
lrwxrwxrwx 1 root root 0 Jan 17 10:56 1-0:1.0 -> ./../../../devices/platform/ehci-mv88w8xx8.1436/usb1/1-0:1.0
--w------- 1 root root 4096 Jan 17 10:56 bind
--w------- 1 root root 4096 Jan 17 10:56 new_id
--w------- 1 root root 4096 Jan 17 10:56 unbind

The dmesg above is from the musicpal when I insert a cheap self-powered 4 port hub


Above you wrote "a 4 port hub", and here you wrote "the new hubs". Which is it, a single hub or multiple hubs?

Well... sometimes it's hard to tell. Based on the (working) PC dmesg output (below) it seems to be a single 4 port hub. I wonder why the music pal gave it 4 addresses.

On my desktop, lsusb shows:
Bus 002 Device 002: ID 058f:9254 Alcor Micro Corp. Hub

and /sys/bus/usb/drivers/hub shows:
lrwxrwxrwx 1 root root 0 2009-01-17 11:18 2-1:1.0 -> ./../../../devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1:1.0
for the new hub

Any tips as to what normally happens at this point?

Normally the hub is enumerated and bound to the hub driver.  However
you don't need us to tell you what normally happens; you can see for yourself by plugging the hub into your desktop machine.

Aye, I could have asked a clearer question if I had known enough to construct one... but I didn't know if it happened in kernel space, and I thought the hub driver was in usbcore anyway (and therefore always present), so I am so far from what little I know...

the only loadable module is the wland river, the rest is static.

The dmesg below was when I do the same thing on my desktop pc:

[47303.184027] usb 3-2: new full speed USB device using uhci_hcd and address 5
[47303.354191] usb 3-2: configuration #1 chosen from 1 choice
[47303.357401] hub 3-2:1.0: USB hub found
[47303.359030] hub 3-2:1.0: 4 ports detected

I note that it doesn't mention assigning addresses - unlike the musicpal which assigned 4
I've got a shell on the musicpal and can run many commands.

What does a normal system do to make the hub-connected devices appear?

You're not thinking about this the right way.  It doesn't matter what a
normal system does; you should be worried about what _your_ system is
doing wrong.

I was hoping to do either a spot-the-difference or check that which thing my bad system isn't doing. As I think usbcore holds the hub drivers I was hoping the problem would be down to a hotplug action or something...

Obviously you need a lot more information to find the problem. You should use a kernel with CONFIG_USB_DEBUG enabled, and you should use usbmon (see Documentation/usb/usbmon.txt) to trace what happens when the hub is plugged in.

I'm using a 2.6.16 kernel and have checked "a" config file for that kernel but don't find any obvious config options that might affect the availability of the hub driver.

If the kernel has kexec, I might manage what you say, otherwise it's going to be fun and games as there's only about 200K spare in the flash anyway...


Sam
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux