To whom it may concern,
We are already a client of yours for some years now. We have been getting this constant issue and we need urgent help on this.
So we have a system that has 2 astra mini pro connected. They are connected by USB, with highly reliable cables (they ensure 5V are transmitted). The USB hub that is connected is 2.0.
Now, from time to time (it is sporadic), the image suddenly freezes (its freezes in get_frame). We are assuming this is caused by some sudden voltage drop that can happen in 2 min, 5 min, 2 hours or 5 days. We cannot simply reboot the entire system, since this leads to big downtime and we need high uptime.
If we reboot the process, sometimes it recovers all cameras sometimes not. That was our first part of the issue. We then created a USB reset script that resets the usb. That helped in part but, sometimes, it freezes again and it does not allow connection. Originating this error(example from our logs): DeviceOpen: Couldn’t open device ‘2bc5/065b@3/3’
Now, we tried to reset the whole hub and sometimes it still gives problems, originating either in the previous error or this one:
Could not open “2bc5/065b@3/2”: Entity not found!
Now, our usb reset script resets each usb at 1.5 seconds interval. Once we reset all usbs, we restart all processes. There should be a 1/2 seconds loading time before trying to open the cameras.
How can we workaround these voltage drop(which again, we are assuming, although, our system has very stable power output and even a small battery to avoid sudden drops) and recover the cameras without needing to reboot the entire system? (which is the equivalent of disconnecting / connecting usb. This cannot happen).
We are using OpenNI SDK version 2.3.0.85. The cameras are Astra Mini Pro. The OS is ubuntu20. Part of the usb reset script is like this:
for hub in “$hub_directory”/“$device_port”-; do
if [ -d “$hub” ]; then
hub_name="${hub##/}"
if [[ " ${excluded_hubs[@]} " =~ " $hub_name " ]]; then
echo “Skipping reset for $hub_name (Excluded Hub)”
else
device_vendor_id=$(cat “$hub/idVendor” 2>/dev/null)
if [[ " ${excluded_vendor_ids[@]} " =~ " $device_vendor_id " ]]; then
echo “Skipping reset for $hub_name (Vendor ID: $device_vendor_id)”
else
authorized_file=“$hub/authorized”
echo “Resetting $authorized_file”
echo “0” > “$authorized_file”
sleep 1
echo “1” > “$authorized_file”
fi
fi
fi
done
Hopefully I gave enough information to help us workaround this issue.
Best regards,