usb/110197: Sony PSP umass device does not detach from EHCI port

Calle Englund calle at discord.bofh.se
Sun Mar 11 18:20:04 UTC 2007


>Number:         110197
>Category:       usb
>Synopsis:       Sony PSP umass device does not detach from EHCI port
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-usb
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Mar 11 18:20:03 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator:     Calle Englund
>Release:        FreeBSD 6.2-STABLE i386
>Organization:
>Environment:
System: FreeBSD aftermath.home.discord.bofh.se 6.2-STABLE FreeBSD 6.2-STABLE #3: Fri Mar 9 19:02:51 CET 2007 root at aftermath.home.discord.bofh.se:/usr/obj/usr/src/sys/AFTERMATH i386

The problem was also seen in at least FreeBSD 6.1

% cat /sys/i386/conf/AFTERMATH.diff 
--- GENERIC     Fri Dec 29 18:34:50 2006
+++ AFTERMATH   Fri Mar  9 17:01:15 2007
@@ -69,6 +69,7 @@
 
 # ATA and ATAPI devices
 device         ata
+device          atapicam
 device         atadisk         # ATA disk drives
 device         ataraid         # ATA RAID drives
 device         atapicd         # ATAPI CDROM drives


uhci0: <Intel 82801DB (ICH4) USB controller USB-A> port 0x48c0-0x48df irq 10 at 
device 29.0 on pci0
uhci0: [GIANT-LOCKED]
usb0: <Intel 82801DB (ICH4) USB controller USB-A> on uhci0
usb0: USB revision 1.0
uhub0: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
uhci1: <Intel 82801DB (ICH4) USB controller USB-B> port 0x48e0-0x48ff irq 5 at d
evice 29.1 on pci0
uhci1: [GIANT-LOCKED]
usb1: <Intel 82801DB (ICH4) USB controller USB-B> on uhci1
usb1: USB revision 1.0
uhub1: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub1: 2 ports with 2 removable, self powered
uhci2: <Intel 82801DB (ICH4) USB controller USB-C> port 0x4c00-0x4c1f irq 5 at d
evice 29.2 on pci0
uhci2: [GIANT-LOCKED]
usb2: <Intel 82801DB (ICH4) USB controller USB-C> on uhci2
usb2: USB revision 1.0
uhub2: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub2: 2 ports with 2 removable, self powered
ehci0: <Intel 82801DB/L/M (ICH4) USB 2.0 controller> mem 0xa0000000-0xa00003ff i
rq 5 at device 29.7 on pci0
ehci0: [GIANT-LOCKED]
usb3: EHCI version 1.0
usb3: companion controllers, 2 ports each: usb0 usb1 usb2
usb3: <Intel 82801DB/L/M (ICH4) USB 2.0 controller> on ehci0
usb3: USB revision 2.0
uhub3: Intel EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
uhub3: 6 ports with 6 removable, self powered


>Description:
When a Sony Playstation Portable is detached from an EHCI USB port, the
associated device tree lingers and that USB port is unresponsive until
a device has been plugged into another USB port. Then the detach of
the original PSP umass device tree occurs and the port again responds
to devices being plugged into it.

>How-To-Repeat:
*** Enter USB Connection in PSP.
PSP: Connect a USB cable.
*** Plug PSP into USB port.
PSP: USB Mode

New lines in dmesg:
umass0: Sony PSP Type A, rev 2.00/1.00, addr 2
da0 at umass-sim0 bus 0 target 0 lun 0
da0: <Sony PSP 1.00> Removable Direct Access SCSI-0 device 
da0: 40.000MB/s transfers
da0: 958MB (1963008 512 byte sectors: 64H 32S/T 958C)

% usbdevs -v
Controller /dev/usb0:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x0000), rev 1.00
 port 1 powered
 port 2 powered
Controller /dev/usb1:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x0000), rev 1.00
 port 1 powered
 port 2 powered
Controller /dev/usb2:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x0000), rev 1.00
 port 1 powered
 port 2 addr 2: full speed, self powered, config 1, Bluetooth by hp(0x0086), ACTIONTEC(0x049f), rev 8.02
Controller /dev/usb3:
addr 1: high speed, self powered, config 1, EHCI root hub(0x0000), Intel(0x0000), rev 1.00
 port 1 powered
 port 2 powered
 port 3 powered
 port 4 powered
 port 5 addr 2: high speed, self powered, config 1, PSP Type A(0x01c8), Sony(0x054c), rev 1.00
 port 6 powered


*** Unplug PSP from USB port.
PSP: Connect a USB cable.

Nothing new in dmesg.

% usbdevs -v
...
Controller /dev/usb3:
addr 1: high speed, self powered, config 1, EHCI root hub(0x0000), Intel(0x0000), rev 1.00
 port 1 powered
 port 2 powered
 port 3 powered
 port 4 powered
 port 5 addr 2: high speed, self powered, config 1, product 0x01c8(0x01c8), vendor 0x054c(0x054c), rev 1.00
 port 6 powered

The port still reports a device present, but the Product/Vendor codes 
are not translated to text anymore.


*** Plug PSP back into the same USB port.
PSP: USB Mode

Nothing new in dmesg.

% usbdevs -v
...
Controller /dev/usb3:
addr 1: high speed, self powered, config 1, EHCI root hub(0x0000), Intel(0x0000), rev 1.00
 port 1 powered
 port 2 powered
 port 3 powered
 port 4 powered
 port 5 addr 2: high speed, self powered, config 1, product 0x01c8(0x01c8), vendor 0x054c(0x054c), rev 1.00
 port 6 powered


*** Unplug PSP and plug back into another USB port.
PSP: Connect a USB cable.
PSP: USB Mode.

New lines in dmesg:
umass1: Sony PSP Type A, rev 2.00/1.00, addr 3
umass0: at uhub3 port 5 (addr 2) disconnected             <<<
(da0:umass-sim0:0:0:0): lost device                       <<<
(da0:umass-sim0:0:0:0): removing device entry             <<<
umass0: detached                                          <<<
da0 at umass-sim1 bus 1 target 0 lun 0
da0: <Sony PSP 1.00> Removable Direct Access SCSI-0 device 
da0: 40.000MB/s transfers
da0: 958MB (1963008 512 byte sectors: 64H 32S/T 958C)

The disconnect of the previous device tree occurs! (<<< above)

% usbdevs -v
...
Controller /dev/usb3:
addr 1: high speed, self powered, config 1, EHCI root hub(0x0000), Intel(0x0000), rev 1.00
 port 1 powered
 port 2 addr 3: high speed, self powered, config 1, PSP Type A(0x01c8), Sony(0x054c), rev 1.00
 port 3 powered
 port 4 powered
 port 5 powered
 port 6 powered

Port 5 is no longer reported as occupied.


Doing the same operaions with other umass devices works as expected.

Disabling EHCI so the PSP attaches to the UHCI ports instead also
works as expected

>Fix:



>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-usb mailing list