xiMU USB Transfer Application Note¶
Transfer mode¶
xiMU subminiature cameras are connected to PC with USB 2.0.
BULK data transfer is used.
This transfer guaranties data delivery, but it doesn't guarantee constant bandwidth.
Packet Size Setting¶
The xiMU cameras have two transfer packet sizes:- Compatible-Size - where packets with 512 bytes are used (default)
- Enhanced-Size - where packets with 1024 bytes are used
With Compatible-Size the camera will work correctly on more USB controllers.
With Enhanced-Size setting - the camera can deliver approx. 25% higher frame-rate and lower CPU usage.
Note - not all controllers and operating systems support Enhanced-Size packets. Please test your configuration first for stability issues.
Since API V3_17_05 we changed communication settings on xiMU cameras to Compatible-Size as default.
For setting of Enhanced-Size use next registry patch: MU_Set_PacketSize__Enhanced.reg
For setting of Compatible-Size use next registry patch: MU_Set_PacketSize__Compatible.reg
More details about configuration and results - TD-MU-0001-USB-Packet-Size-Setting-REV1.pdf
Bus speed control¶
The user application should calculate the available bus speed using function mmGetBusSpeed.
It returns current bus speed in megabits per second and it should be called once on the application startup.
Then the application should call mmSetBusSpeed to set maximum available speed for camera data transfer.
Available bandwidth depends on USB devices connected to host and manufacture of USB host.
It also depends on OS/PC power managment.
On our systems we use
mmSetBusSpeed(handle, 350);
It works on most tested PCs.
Bus speed can have range from 320 to 392 megabits per second.
USB HUB¶
The bus speed is limited when xiMU camera is connected to USB hub. If possible - connect the camera directly to USB port of PC.
Using multiple xiMU cameras¶
In case multiple xiMU cameras are used, each camera has to be connected to a separate USB2 controller, otherwise streaming will not work properly and the user will observe the "Fifo overflow" message in debug output of the application.