Yet another odd problem with the iPhone has surfaced with virtual systems. When the USB charging/sync cable is connected to an emulated USB the following error will popup:
The phone then drops its connection. This is easily repeatable:
- Plug the phone into a USB port on the host computer and note that it is charging
- Boot the guest computer
- Connect the guest computer USB port to the iPhone
- Wait a few seconds as communication is established over USB and note that the phone throws an error and stops charging
Apple Support tells you that this error message is supposed to be related to hardware:
Charging with a FireWire-based power source is not supported – except on original iPhone and iPod touch (1st generation). If you connect your device to a FireWire-based charger or accessory, you will see the alert screen below:
The solution, however, is with the software.
Here is the configuration that fixed the problem in VirtualBox. In this example the host is Ubuntu 10 and the guest is Windows 7.
Create a static USB filter with Vendor ID 05ac. Then boot the guest OS and note that the iPhone no longer throws the above error message — communication now will be stable.
I have read endless forum speculation about the cause of the charging error — quality of cables, third-party hardware issues, etc. and most seem to end with "go to the Genius Bar and get a new phone". Apple is mum on troubleshooting but some report success getting the Genius Bar to give them a brand new phone under warranty.
The repeatability of this error shown above shows that Apple's iPhone software should be suspect, rather than just hardware. They interpret communication over USB perhaps to protect the phone from earlier generation (firewire) chargers or to force licensing by third-party manufacturers. Whatever their reason, hopefully they will soon fix the software to be more reliable.