>Would this explain why the backend works the first time it is called >from within a shell, and then stops working until a new shell is >opened (as I described earlier)?
No... unless the first (successful) operation leaves some data behind (environment variable?) that causes the second (failed) operation to act differently. Perhaps the device type or other data is remembered, and the original device identification or initialization process is not repeated. This difference could explain why the second operation fails, but a new shell works. This is only speculation based on the behavior you report, not knowledge based on familiarity with the device. If you perform one scan successfully, then unplug and reconnect the scanner, will another scan in the same shell work? If it does work, maybe there is something left behind in the USB system that explains the failure. If the second scan fails after the device is reconnected, something different in user space is more likely.
