Today, I plugged in my new 500GB OVATiON USB HDD into my PS2 to try it out.
Unfortunately, not only did most (If not all) of the homebrew software (uLE, FMCB etc) out there seem to occasionally have problems detecting it without me re-plugging my disk into my PS2.... I can't play PS2 games without using discs as PS2ESDL v0.802 (BSOD after selecting a game) and OPL v0.8 (Freezes at a yellow screen, and v0.7 gives a BSOD) both fail to load any games.
I debugged USBD, and found that by doing either of these two I could get my device working (Comments in code will describe what I changed):
1.
2.Code:In hubSetFuncAddressCB() of hub.c } else { ep->hcEd.hcArea |= dev->functionAddress & 0x7F; dev->deviceStatus = DEVICE_READY; addTimerCallback(&dev->timer, (TimerCallback)hubPeekDeviceDescriptor, req, 80); /* SP193: Increase the delay from 10 to 80. */ }
OK - although I have solved my problem by the use of workarounds, I'll like to know what my fixes really solve (Or rather, what kind of problem USBD has here), and whether anyone here has a better solution.Code:In requestDeviceDescriptor() of hub.c Endpoint *ep = req->correspEndpoint; Device *dev = ep->correspDevice; dev->staticDeviceDescEndPtr = dev->staticDeviceDescPtr; killDevice(dev, ep); /* SP193: Reset the device first. */ doControlTransfer(ep, &dev->ioRequest, USB_DIR_IN | USB_RECIP_DEVICE, USB_REQ_GET_DESCRIPTOR, USB_DT_DEVICE << 8, 0, length, dev->staticDeviceDescEndPtr, requestDevDescrptCb);
Given that I don't know much about the USB OHCI specification, I can't answer this. But I'm guessing that my USB enclosure somehow isn't responding fast enough to USBD's requests.


LinkBack URL
About LinkBacks












