-Please send us the USB traces between the hub and PC for us to check the descriptor errors.
-Could you try connecting any other USB device such as another FTDI chip on the same port instead of the camera?
-Does the same configuration without the second hub work under Windows?
Thanks for your reply. Sorry, I should've mentioned that I can connect any other device I can think of - such as USB Drive, and it works. The camera also works fine with the hub under Windows. Also worth noting is that the Debian 9 Linux system is a Beaglebone Black SBC.
I have captures from linux usbmon. Let me know if you need some other kind of capture.
Not sure if this clears anything up, but it appears that Linux always manages to mount the camera if I reconnect the upstream connector after the camera is powered on (possible since the hub is self-powered). It almost always fails if I reconnect the downstream port to the camera and allow the camera to go through its normal boot process. Unfortunately, I can't just connect in that order since this goes in a piece of equipment.
As before, any combination of reconnecting works in Windows, and adding any cheap junk hub in between my hub and the camera makes it work fine regardless of the connection order.
Since it occurs only with the particular camera and both hub and device are self powered, I think the issue may be in the power system. It could be possibly due to excess inrush current from connecting both device and hub together, which may be causing a dip in the power supplies.Kindly mention if you have done the compliance test for the same?
The same configuration may be working fine on Windows due to recovery mechanisms in the latest OS version.
Please try separating the power supplies for hub and the device, that might help isolate the issue.
After further work, it appears to happen to many different Full-Speed devices on Linux - the camera, as well as a Logitech Wireless Keyboard receiver, and a USB-Serial Converter etc. As a workaround, I used libusb to write a program that sends a reset command to the Cypress hub. Once reset, everything seems to work fine... After unplugging and re-plugging the device, another reset is usually required (but not always).
Another thing I've noticed is that the hub chip gets fairly hot - not enough to burn, but about 58C. I'm using the internal regulator. Is this normal? According to the datasheet, the chip could draw 100mA with 4 devices connected. So that 0.5W dissipation would get pretty hot. Schematic is pretty straightforward datasheet design.
Assuming everything is working fine after the Reset, please check the exact power consumed by the hub chip. Please refer to the DC Electrical Characteristics in the datasheet to check the supply current for your configuration. You could then check the expected temperature using thermal resistance values in the datasheet and see if there is an anomaly. Could you also tell us how you checked the current value to be 58C?