I've got the PK2 interface running reasonably reliably with asynch log display from PIC. Still some quirks that I expect to be either PK2 bugs, or improper PK2 init or error handling. So, time to tackle the USB. Let's stick to the previous organization: - Low level communications driver: handles all USB responses and transfers. - High level protocol: construction of per-device descriptors and endpoints.