-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cannot enumerate devices while in use (RS2_USB_STATUS_BUSY) (worked on v2.41.0) #10246
Comments
Hi @stwirth There was a recent case at #10207 where a RealSense user was having problems such as Ubuntu OS freezes when using firmware 5.13.0-27-generic (very close to the 5.13.0-28-generic that you are using). The librealsense SDK does not have support for kernel 5.13 at the time of writing this. The most recent formally supported kernel at the time of writing this is 5.11, and that support was added in librealsense 2.50.0. Using more recent kernels than those that librealsense supports can work but it can have unpredictable effects in regard to stability. In the case that I linked to, the RealSense user in that case achieved a fully stable librealsense build by using kernel 5.11.0-34-generic as described at #10207 (comment) |
Thanks @MartyG-RealSense, we'll try with kernel 5.11 and report back here. |
Trying with a 5.11 kernel, the same problem exists: While the cameras are streaming, they cannot be enumerated.
After killing the ROS nodes, enumeration works:
|
I added the tested 5.11 kernel version to the initial issue description above. |
It is curious that it worked for you in 2.41.0. I would normally expect the camera to be inaccessible if ROS was already accessing it when another program tried to access it. This is because under the RealSense SDK's Multi-Streaming Model rules, once a particular stream on a particular camera is accessed by a program then that program puts a claim on that specific stream, preventing it from being accessed by another program until the first program releases its claim (by stopping streaming or closing down). For example, if the RealSense Viewer starts using the depth stream and then the 'rs-capture' example program is launched whilst the Viewer is still streaming, rs-capture cannot work because the Viewer already claimed the depth stream. The reverse is also true - if rs-capture is launched first and the Viewer launched secondly then the Viewer cannot access the stream. I recall that SDK 2.41.0 was a significant release in that it was causing problems for some RealSense users, so Intel made changes to how the V4L buffers were handled in 2.42.0 (and presumably kept that change in the SDK from that point onwards). This is described in #8154 (comment) and #8234 |
I understand that streaming is limited to one consumer. But I don't see a reason for putting a read lock on meta information like serial number and firmware version. FWIW 2.18.1 allowed this as well. |
Another difference between your old setup and the new is the camera firmware. Originally you used 5.8.15.00. This was the first 400 Series firmware at the launch of the 400 Series in December 2017. The RealSense firmware releases page lists 30 firmware drivers released since then and a very significant number of changes over time. Furthermore, from firmware 5.12.8.200 onwards there was a significant alteration where SDK 2.39.0 became the minimum SDK version if using firmwares 5.12.8.200 and newer because of internal changes made to the firmware. |
Yes, this could as well be caused by the firmware. Do you want me to test a specific version? I see this as a regression because inspecting a running system without interfering in its function is a very useful feature. |
A good starting point would be 5.12.7.100, the version before the internal firmware changes were introduced. This would help confirm whether or not those internal changes are a factor in your problem. |
Same error with FW 5.12.7.100.
With the camera drivers running:
|
@stwirth This is caused because you need to use a USB Powered Hub to connect the camera. The current of PC port is not enough to power the camera. |
@stwirth I performed a test with SDK 2.50.0 and the latest firmware where I launched a depth stream in the RealSense Viewer and then ran rs-enumerate-devices -s and confirmed your statement that you should be able to access the camera information even when streaming is active. I also performed the test with two cameras attached like with your own setup and confirmed that the information of both cameras could be accessed while they were depth streaming. I can understand the concern about not now being able to access the rs-enumerate-devices camera information whilst the ROS launch is running. Most of the information provided by rs-enumerate-devices - s is also printed in the launch log during roslaunch for each launched camera though. |
Hi @stwirth Do you require further assistance with this case, please? Thanks! |
Case closed due to no further comments received. |
I haven't had time to work on this, will re-open when I get more insight. |
@stwirth This issue is not likely to be addressed by RealSense developers. If a RealSense user is able to create a fix then they are welcome to submit it via a pull request (PR) to the librealsense SDK or the ROS wrapper, depending on whether the fix is made in librealsense or the wrapper. librealsense SDK pull page RealSense ROS wrapper pull page |
OK, thanks for the information. |
Before opening a new issue, we wanted to provide you with some useful suggestions (Click "Preview" above for a better view):
All users are welcomed to report bugs, ask questions, suggest or request enhancements and generally feel free to open new issue, even if they haven't followed any of the suggestions above :)
Issue Description
While the camera is in use (running via realsense2_camera ROS driver), the enumeration of the camera fails with:
This used to work before.
The following is output from an older system, commands are run while the cameras are streaming images:
The text was updated successfully, but these errors were encountered: