Hello,
I have a custom board using the imx536. The board has two USB devices, one wired to the OTG core and one wired to the Host1 core on the ixm53. Using the Linux BSP, kernel 2.6.35, and udev version 167 I'm not able to use "udevadm info" to determine which device is connected to which hub/port. During boot Linux enumerates the devices differently depending on which one it sees first. How can I get udevadm info to trace the USB chain further? I'm comparing this to a TI am3352 where I am able to trace back to which hub/port each USB device is connected to so I can create a custom udev rule.
Running 'udevadm info' on the two devices on my imx53 custom board:
# udevadm info -a -n /dev/sda1
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/block/sda/sda1':
KERNEL=="sda1"
SUBSYSTEM=="block"
DRIVER==""
ATTR{partition}=="1"
ATTR{start}=="2048"
ATTR{size}=="3909632"
ATTR{alignment_offset}=="0"
ATTR{discard_alignment}=="4293918720"
ATTR{stat}==" 6 0 42 7 1 0 8 64 0 71 71"
ATTR{inflight}==" 0 0"
looking at parent device '/block/sda':
KERNELS=="sda"
SUBSYSTEMS=="block"
DRIVERS==""
ATTRS{range}=="16"
ATTRS{ext_range}=="256"
ATTRS{removable}=="1"
ATTRS{ro}=="0"
ATTRS{size}=="3911680"
ATTRS{alignment_offset}=="0"
ATTRS{discard_alignment}=="0"
ATTRS{capability}=="51"
ATTRS{stat}==" 7 0 50 24 1 0 8 64 0 88 88"
ATTRS{inflight}==" 0 0"
# udevadm info -a -n /dev/sdb1
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/block/sdb/sdb1':
KERNEL=="sdb1"
SUBSYSTEM=="block"
DRIVER==""
ATTR{partition}=="1"
ATTR{start}=="20480"
ATTR{size}=="681984"
ATTR{alignment_offset}=="0"
ATTR{discard_alignment}=="4284481536"
ATTR{stat}==" 0 0 0 0 0 0 0 0 0 0 0"
ATTR{inflight}==" 0 0"
looking at parent device '/block/sdb':
KERNELS=="sdb"
SUBSYSTEMS=="block"
DRIVERS==""
ATTRS{range}=="16"
ATTRS{ext_range}=="256"
ATTRS{removable}=="1"
ATTRS{ro}=="0"
ATTRS{size}=="15523840"
ATTRS{alignment_offset}=="0"
ATTRS{discard_alignment}=="0"
ATTRS{capability}=="51"
ATTRS{stat}==" 1 0 8 2 0 0 0 0 0 2 2"
ATTRS{inflight}==" 0 0"
Thanks.
It seems this device (/block/sda) is hardcoded into kernel and udevadm utility do not need to parse it deeper.
Have a great day,
Victor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Where would this be hardcoded into the kernel?
Thanks.