USB-VGA-165 on ARM9 400 MHz, USB Full-speed


I am looking for a solution, which would allow me to connect our ARM9 module
(with Atmel AT91SAM9G20 MCU) with a VGA monitor. Do you think it would be
possible to use the adapter, udlfb driver with resolution 800x600 or 1024x768 @ 16bits color on an ARM9 with 400 MHz, 64 MB RAM (around 60 MB is available)? I would like to use it as a framebuffer device with some simple QT application.

Thanks, regards


Hi Tran,

Thanks for asking ahead. Unfortunately, USB graphics is not a good solution for that particular embedded board. The more significant problem is the board is only capable of USB 1.1 Full Speed (12 Mbps), not USB 2.0 High Speed (480Mbps).

That makes a huge difference – even at 800x600 16bpp, we wouldn’t recommend a USB graphics solution at USB 1.1 speeds.

Also a note for an ARM9@400 class processor: if USB 2.0 / 480Mbps was supported, the processor would also be a bottleneck. You’d still want to limit to the 800x600 type mode for that reason, and make sure to configure udlfb to use a damage-aware X server (e.g. xf86-video-displaylink) rather than the generic fbdev driver (which uses page faults to detect writes, and wouldn’t perform well on this CPU). In your case, with QT writing directly to the framebuffer, you might have no option though (must use page fault method).

In short, we don’t think our hardware is a good match to your need. Sorry for the bad news!



Hi Bernie,

I have bought in the end a Plugable UGA-2K-A USB 2.0 and have done some tests, so I would like to share my experience with the module on the ARM9 module.

By using udlfb driver and framebuffer I could run a QT Embedded application on the AT91SAM9G20 module. The tested resolution was 1024x768. Here are the results:

QT examples
drapdroprobot, collidingmice - were a bit slow (I guess around 20-23 fps with approx. 80% CPU load)
elasticnodes, diagramscene, anchorlayout, other layouts/dialogs - were pretty usable (I guess around 23-27 fps when smaller amount of graphics were changed - 1/4 of the 1024x768 orso). The CPU load was high when big part of the buffer was changed (enlarge of window etc.).

320x200 MPEG video using mplayer - around 23-27 fps

The diagramscene and other layouts/dialogs have very good response. It is fast enough to not annoy the user. I think the speed was comparable to a AT91SAM9263 module with TFT running at 200 MHz and 640x480 resolution, but with the USB-VGA adapter on AT91SAM9G20 I could run the same applications at 1024x768. It could be well used for simple dialogs applications in my opinion. I am not sure how much of the load was rendering and how much were USB communication. But I would expect that with USB High Speed it should be visibly better.

Kind regards, TDK


Thanks so much for reporting back with this! It’s good guidelines to set expectations for others who might look at doing something similar. Best wishes! Bernie