Re: Raspberry Pi 3B Over-current USB
- In reply to: Archimedes Gaviola : "Re: Raspberry Pi 3B Over-current USB"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 07 May 2022 14:35:57 UTC
On Sat, May 7, 2022 at 8:46 PM Archimedes Gaviola < archimedes.gaviola@gmail.com> wrote: > > > On Sat, May 7, 2022 at 5:20 PM Hans Petter Selasky <hps@selasky.org> > wrote: > >> On 5/6/22 16:03, Archimedes Gaviola wrote: >> > On Tue, Apr 12, 2022 at 5:16 PM Archimedes Gaviola < >> > archimedes.gaviola@gmail.com> wrote: >> > >> >> >> >> >> >> On Mon, Apr 11, 2022 at 9:59 PM Hans Petter Selasky <hps@selasky.org> >> >> wrote: >> >> >> >>> On 4/11/22 15:59, Archimedes Gaviola wrote: >> >>>> Hi Hans, >> >>>> >> >>>> Noted on the self-powered hub, thanks for the suggestion, I will try. >> >>>> >> >>>> Just wanted to share the observation from the testing I've conducted >> >>> with >> >>>> my Raspberry Pi 4B with the same 14.0-CURRENT to check if >> overcurrent is >> >>>> also experienced and it did, there was overcurrent and each ports' >> power >> >>>> shut-off during the situation but it was able to recover back. I >> >>> initiated >> >>>> the command 'usbconfig reset' and each port gloriously came back >> alive >> >>> one >> >>>> by one and loaded my USB keyboard and Prolific uplcom(4) drivers into >> >>>> functional and operational states. My measuring device is showing the >> >>> same >> >>>> amount of current 460mA while the voltage stayed at 5.05 from a >> >>> baseline of >> >>>> 5.15 voltshttps://filebin.net/10vy575q6h2yl8og. Unlike my RPi 3B, >> >>> voltage >> >>>> dropped to 4.93 from a baseline of 5.19 volts. So, the difference I >> >>>> observed is when the voltage dropped below 5, the system will not >> give a >> >>>> chance to make the ports come back alive as a sort of protection >> >>> mechanism. >> >>>> Sharing to you the logs below (with hw.usb.uhub.debug=1). >> >>> >> >>> FreeBSD does not actively check and use "bMaxPower" . >> >>> >> >> >> >> Hi Hans, >> >> >> >> It's okay, just tried your recommendation on a self-powered USB hub, my >> >> Prolific device is now working. Thanks a lot! >> >> >> >> Archimedes >> >> >> > >> > Hi Hans, >> > >> > I got my Prolific PL2303 USB-serial device working in RPi 3B without the >> > self-powered USB hub. I've extended the code >> /usr/src/sys/dev/usb/usb_hub.c >> > in the uhub_explore() routine specific to handling overcurrent >> condition. >> > Below are the added lines of code. >> > >> > freebsd@generic:~ % diff -Nur /usr/src/sys/dev/usb/usb_hub.c.orig >> > /usr/src/sys/dev/usb/usb_hub.c >> > --- /usr/src/sys/dev/usb/usb_hub.c.orig 2022-04-29 10:52:44.787344000 >> +0000 >> > +++ /usr/src/sys/dev/usb/usb_hub.c 2022-05-03 07:29:45.159470000 >> +0000 >> > @@ -1045,6 +1045,25 @@ >> > udev, NULL, portno, >> UHF_C_PORT_OVER_CURRENT); >> > if (err != USB_ERR_NORMAL_COMPLETION) >> > retval = err; >> > + >> > + /* Turn on hub port power if current get >> > normalized. */ >> > + DPRINTF("Turn on power on port %d.\n", portno); >> > + err = usbd_req_set_port_feature( >> > + udev, NULL, portno, UHF_PORT_POWER); >> > + if (err != USB_ERR_NORMAL_COMPLETION) >> > + retval = err; >> >> You need a sleep here, to wait for power to come back on. >> >> > + >> > + /* Re-validate if overcurrent still exists. */ >> > + err = uhub_read_port_status(sc, portno); >> > + if (err != USB_ERR_NORMAL_COMPLETION) >> > + retval = err; >> > + if (sc->sc_st.port_change & >> > UPS_C_OVERCURRENT_INDICATOR) { >> > + DPRINTF("Overcurrent condition on port >> > %u.\n", portno); >> > + err = usbd_req_clear_port_feature( >> > + udev, NULL, portno, >> > UHF_C_PORT_OVER_CURRENT); >> > + if (err != USB_ERR_NORMAL_COMPLETION) >> > + retval = err; >> > + } >> > } >> > >> >> Can you upload the patch to https://reviews.freebsd.org and add >> "hselasky" as reviewer? >> > > Thank you Hans for the feedback! Just created an account and once approved > and activated then I'll upload it. Meanwhile, for the sleep you've > mentioned what particular function should be used? I tried these two, > sleep(3) and usleep(3) but seems to encounter errors during compilation. > Hi Hans, Submitted, please see https://reviews.freebsd.org/D35146. Thanks, Archimedes