Re: Trouble loading firmware to USB device
- In reply to: Hans Petter Selasky : "Re: Trouble loading firmware to USB device"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 29 Apr 2022 21:27:41 UTC
On Thursday, April 28, 2022 2:06:57 AM EDT Hans Petter Selasky wrote:
> On 4/28/22 07:53, Farhan Khan wrote:
> >> printf("FRAME LENGTH = %d\n", usbd_xfer_max_len(xfer));
> >
> > 64 bytes, sounds correct.
>
> And do you get a completion on that USB transfer?
>
> If no, then look at the firmware loading sequence.
>
> --HPS
Works!
I used Wireshark on the hypervisor to compare the actual USB packets on
OpenBSD and FreeBSD. Turns out, I had a constant in a macro wrong.
I was using AR9271_FIRMWARE rather than AR9271_FIRMWARE_TEXT. I did not see
that because visually the names were close. The moment I made that adjustment,
loading the firmware worked!
One thing I noticed between the OpenBSD and FreeBSD side: You recommended that
I do an initial "wakeup" usbd_transfer_start(). The OpenBSD side seems to have
an equivalent for the RX Interrupt pipe, but not the Rx Data pipe - at least
not where I am in the code so far. I'm still not clear on why this is
necessary or what this does.
Thank you for working through this with me. It was necessary for me to
eliminate those problems and also get a better idea of what was happening. I
also learned a lot of concepts along the way that will be necessary going
forward.
- Farhan