Yeap, I just read some solution on usbreset. But for that there are 2 disadvantages:

1) using the usbreset can make it to be able to run the second command for sure, but the lag time to re-trigger the shutter is rather to long in some case. I use a for loop to reset usb after a shutter trigger, it takes a bit time.

2) about the limitation on using usbreset is, we have to specify the bus and port number (e.g. /dev/bus/usb/001/00X), and the variable "X" will add 1 for each time we plug and unplug, hard to hard-code it in my shell script. That would be nice if usbreset would run based on the device name (human readable), rather then an incremental number.