Opened 7 years ago
Last modified 7 years ago
#17602 new defect
USB passthrough problem, when flashing embedded system using PSOC Creator.
Reported by: | morali | Owned by: | |
---|---|---|---|
Component: | USB | Version: | VirtualBox 5.2.6 |
Keywords: | PSOC usb embedded | Cc: | |
Guest type: | Windows | Host type: | Linux |
Description
I have a problem with PSOC Creator. I'm using usb passthrough to pass cypress development board to Windows 10 on virtual machine.
My host machine is Arch Linux. I've set up usb filter, and device is correctly recognized on guest machine, but when i try to program the board or connect debugger, PSOC Creator application hangs until i disconnect and reconnect usb cable. Then this error shows up: "There was an error while programming the device: failed to reacquire the device."
Trying several times, sometimes it works, sometimes it gets stuck and I need to reconnect device. But most of the time it doesn't work.
I have disabled auto suspend for this device.
If you need some extra information about the system please tell me, I will try to provide them.
Attachments (4)
Change History (8)
by , 7 years ago
by , 7 years ago
Attachment: | VBox.log.1 added |
---|
by , 7 years ago
Attachment: | VBox.log.3 added |
---|
comment:2 by , 7 years ago
Do you know if the device changed VID/PID during its "reset"? It's not that uncommon. You may have to broaden your USB filter in that case. Talk to Cypress and ask them to describe in detail what's going on during that part. In full detail, someone from engineering preferably.
comment:3 by , 7 years ago
No, VID / PID are the same after reset. There is only one VID / PID in the "Installation INF for the Cypress Generic USB Driver". But i make a debug log from the device. I will do it in the next time. I check the device properties when flashing. For a better understanding, I provide the device INF as an attachment.
by , 7 years ago
Attachment: | breusb.inf added |
---|
comment:4 by , 7 years ago
I'm afraid that this (the .INF) doesn't help and here's why. Let's start with a physical computer:
- Your device is identified as "
vid:
1DAF
/pid:
5060
". You plug it in your (physical) computer. If the computer has the .INF installed, great, we have a match. - You reset the device. It temporarily flips and it gets a "
vid:
0000
/pid:
0000
" (or something weird). After the reset, it gets back to "vid:
1DAF
/pid:
5060
". Your host OS temporarily sees an illegal named device, ignores it for the moment, but then it sees the known "vid:
1DAF
/pid:
5060
". Everything works!
Now, if we move to the virtual world, here's what might happen (that's the way I understand it at least):
- Your device is identified as "
vid:
1DAF
/pid:
5060
". You plug it in your (physical) computer. The VirtualBox filter for "vid:
1DAF
/pid:
5060
" grabs the device and passes it to the guest. If the guest has the .INF installed, great, we have a match. - You reset the device. It temporarily flips and it gets a "
vid:
0000
/pid:
0000
" (or something weird). After the reset, the VirtualBox filter loses the device, because there's no filter for "vid:
0000
/pid:
0000
", it's illegal. Your host grabs it, and when it sees the known "vid:
1DAF
/pid:
5060
" it's too late for the VirtualBox filter to capture it, because the filter is activated at device insertion, not at a random time. You just lost your device.
There is one thing you might want to try temporarily; create a "blank" filter. It *will* capture everything under the sun, including your mouse and keyboard (if they're USB based), so be careful, and temporary.
And again, talk to Cypress engineering...
We have the Same issuses.
But the different is only our Host-Typ is Windows 7 64-bit.
Our Device is for Medical and use the cypress driver. I've set up usb filter, and device is correctly recognized on guest machine. But some serial functions work. Only when we flash the Device, disconect this.