OK, first you need to find out if you have OpenSprinkler 2.0 or 2.1, because they have different USB programmers:
On 2.0, the 24V AC terminal block is green colored, and the built-in programmer is USBtinyISP.
On 2.1, the 24V AC terminal block is orange colored. and the built-in programmer is a USBasp bootloader.
If you have 2.0, make sure in VirtualBox under menu item Devices -> USB Devices, the USBtiny device is selected (so the host OS will pass it to the virtual OS). Then try to upload again.
If you have 2.1, follow the procedure below:
1) enter bootloading mode. to do so, unplug power, then press and hold the second pushbutton (B2) and plug in USB cable; release the button within 2 seconds after the USB cable is plugged in. the LCD screen should remain off, indicating the controller is now in bootloadering mode (and should show up as USBasp in the USB device list).
2) make sure in VirtualBox’s under menu item Devices -> USB Devices, the USBasp device is selected.
3) also in Arduino (inside virtual Linux), go to Tools – Programmer and select USBasp.
Now try to upload again.
I apologize that the virtualbox image hasn’t been updated since the release of 2.0, that’s why you need to do the above additional steps for 2.1. Let me know if this works.