USB stack - who's done their own, and who ported one?
Posted: Thu Aug 12, 2021 4:38 pm
USB is like the creationists argument about eyes. It seems just like you can't have half an eye, creating a USB stack seems to be all or nothing, you can't have half a USB stack.
Of course, just as the half an eye argument made by creationists is a logical fallacy, so too must be the corresponding half a USB stack argument. I seem to remember Windows 95 OSR2.1 having basic USB, though I don't know how complete it was. Presumably BIOS/UEFI implementations don't implement an entire USB stack either.
I was hoping my half USB stack would provide UHCI and EHCI controllers at least (that combination matches most of the hardware I have access to), and provide directly connected keyboards, mice and thumb drives, with no general hub capabilities. I wasn't going to bother with isochronous transfers at this point.
But even taking things like hubs and isochronous support out, I still have to implement sooo much just to get anything functional, that I'm just considering porting an existing USB stack (or at the least, importing USB defines from NetBSD.)
So the question for me becomes:
Of course, just as the half an eye argument made by creationists is a logical fallacy, so too must be the corresponding half a USB stack argument. I seem to remember Windows 95 OSR2.1 having basic USB, though I don't know how complete it was. Presumably BIOS/UEFI implementations don't implement an entire USB stack either.
I was hoping my half USB stack would provide UHCI and EHCI controllers at least (that combination matches most of the hardware I have access to), and provide directly connected keyboards, mice and thumb drives, with no general hub capabilities. I wasn't going to bother with isochronous transfers at this point.
But even taking things like hubs and isochronous support out, I still have to implement sooo much just to get anything functional, that I'm just considering porting an existing USB stack (or at the least, importing USB defines from NetBSD.)
So the question for me becomes:
- What have people who have done their own USB stack done as a half way complete implementation? Where do you draw the line in functionality?
- Has anyone here ported an existing USB stack to their OS? What did you port?