Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 3 Jan 2005 21:13:08 GMT
From:      Raimund Huemmer <raimund@baumann-online.net>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   kern/75764: [patch?] "umass0: Phase Error" - no device for USB HP DVD Writer 300c
Message-ID:  <200501032113.j03LD8Tl044022@www.freebsd.org>
Resent-Message-ID: <200501032120.j03LK3GL082034@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         75764
>Category:       kern
>Synopsis:       [patch?] "umass0: Phase Error" - no device for USB HP DVD Writer 300c
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Jan 03 21:20:03 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Raimund Huemmer
>Release:        5.3-STABLE
>Organization:
privat
>Environment:
FreeBSD brian.huemmer.net 5.3-STABLE FreeBSD 5.3-STABLE #9: Sun Jan  2 23:32:25 CET 2005     raimund@brian.huemmer.net:/usr/src/sys/i386/compile/MYKERN  i386

>Description:
      Hardware: HP DVD Writer dc300
Interface: USB
relevant output from dmesg: 
usb0: <Intel 82371AB/EB (PIIX4) USB controller> 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
uhub1: Hewlett Packard product 0x0a07, class 9/0, rev 2.00/0.00, addr 2
uhub1: 3 ports with 1 removable, self powered
ugen0: Hewlett Packard product 0x0907, rev 2.00/0.00, addr 3
umass0: Hewlett-Packard dc3000, rev 3.00/0.00, addr 4
umass0: Get Max Lun not supported (STALLED)
[...]
At the time, when the Hardware should get the "cd0" device, dmesg 
shows only the following output:
umass0: Phase Error, residue = 0
umass0: Phase Error, residue = 0
umass0: Phase Error, residue = 0
umass0: Phase Error, residue = 0

Summary:
There is no "cd0" device and the USB DVD-RW is unusable.
>How-To-Repeat:
      By reboot or plug out/in there is always no success and the same error message. Also by "camcontrol -rescan" the problem is repeatable.
>Fix:
      Edit or patch the File /usr/src/sys/dev/usb/umass.c at line 1627 with the new line:
#if 0 /* XXX */  
and  at line 1630 with the new line 
#endif 

Here is the diff:
------------------------------

--- umass.c     Thu Oct 28 09:01:15 2004
+++ umass.c_new Sun Jan  2 23:27:32 2005
@@ -1624,10 +1624,10 @@
                } else if (sc->csw.bCSWStatus == CSWSTATUS_PHASE) {
                        printf("%s: Phase Error, residue = %d\n",
                                USBDEVNAME(sc->sc_dev), Residue);

+#if 0 /* XXX */
                        umass_bbb_reset(sc, STATUS_WIRE_FAILED);
                        return;

+#endif
                } else if (sc->transfer_actlen > sc->transfer_datalen) {
                        /* Buffer overrun! Don't let this go by unnoticed */
                        panic("%s: transferred %db instead of %db",

-----------------------------------------

After patching, recompiling the kernel and reboot, I've got this dmesg output:
cd0 at umass-sim0 bus 0 target 0 lun 0
cd0: <HP DVD Writer 300c 9k04> Removable CD-ROM SCSI-0 device 
cd0: 1.000MB/s transfers

and all works perfectly for me. 

Maybe only a workaround for my hardware and not a regular patch.
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200501032113.j03LD8Tl044022>