Late January 2007 I found a promising product from Canada, called Epiphan KVM2USB. In our company we have various types of rackable servers and control computers which are all “headless”, i.e. without keyboard, video or mouse (KVM).
Our actual portable KVM solutions are either rackable 1U height server terminals (heavy iron that the strongest of us carry around) or some collection of small flat screens and industrial keyboards with trackballs. Epiphan’s KVM2USB has a completely different approach. In this post I will evaluate the product and estimate its usefulness to our work.
Product description
Epiphan KVM2USB product is based on a VGA frame grabber hardware box with a capacity to vehicle keyboard and PS/2 mouse signals through it. You would connect the hardware box on a laptop computer and this way use its keyboard, screen and mouse to pilot the headless computer.
The product package contains following items:
- a small 80 mm x 54 mm x 23 mm (3.15″ x 2.125″ x 0.91″) hardware interface box (see the picture on the right)
- a typical KVM cable that contains both the VGA video, keyboard and PS/2 mouse signals. This cable is rather short, about 1.2 meters (47″)
- USB (2.0) cable, again a short one with its 90 cm (35″)
- Note that there is no power cable but the hardware interface box gets its power from the USB
There is also an instruction booklet for all three major frame grabber products and an installation CD. The latter contains but commercial material and what comes to the software you are kindly invited to “download the latest driver from Epiphan’s web site”, which is an obvious thing to do, anyway.
Installation
The hardware installation is self explanatory, you just connect the cables.
The software installation consists of downloading the software (today’s version was 3.0.16.0020), unzip it and run the setup. You would get a “VGA2USB” camera icon on your desktop. As soon as you connect the hardware interface box with the USB cable, Windows PX will auto detect it and install the driver through the usual “found new hardware” procedure.
Now you can click on the camera icon and the application starts.
Usage
I installed the software on a Dell Latitude D610 laptop computer.
The application is one-for-all type for all frame grabbers in the Epiphan’s product line. You can clearly see that the functionalities that are related to image capture have been there well before the KVM mode, which is evidently an after-thought. The good point with this is that you can use the device for VGA screen captures. But that is not our main interest and I will talk about the KVM-mode only.
You enter the KVM mode either through the application menu or by clicking the middle mouse button when the VGA2USB application is running. While you are in the KVM mode, you are a prisoner of the VGA2USB application window. If you like to use your PC again, you would press the mouse middle button again.
We are in the PC (and Microsoft) world here, right? You may wonder what happens if you press Ctrl-Alt-Del. You cannot give the infamous three finger salute when you are in the KVM mode but you have to leave the KVM mode by pressing the mouse middle button, then select “Send Ctrl-Alt-Del” from the KVM menu and the get back into the KVM mode to follow up what ever action the Ctrl-Alt-Del sequence takes on the target system.
I tested the functionality on several systems: Dell desktop computers, Dell rackable servers and on various industrial computers (see picture). When connected on a running system with graphical desktop or a command line prompt the functionality is correct. The hardware interface box gets synchronized rapidly and you are in control quickly enough. The mouse movements are a bit sloppy but at acceptable level. Same thing with the keyboard strokes; you cannot expect the application to be for any other use but for maintenance purposes.
And here is the problem: When your system is running and doing well, you can access it with NX or Windows Remote Desktop connection even from your home and with much better usability than through this KVM solution. Where the KVM2USB could be really useful is the installation and the maintenance work. Anyway, that was the main reason why we got interested in this product in the first place. But we were disappointed as soon as we rebooted any of our test systems with the KVM2USB hooked on it.
The slow synchronization of the KVM2USB to the constantly altering video signals spoils it all. When you turn the machine on, for example the fast BIOS boot has already passed before the video signal synchronization is ready. Meanwhile, you have missed all the important points in the BIOS startup and on most systems that I tested you can but dream to be able to hit Del or F2 buttons to get into the BIOS settings. The next thing is the hard disk boot. Unfortunately, for example Red Hat Enterprise 4 boot gets you four different video transitions: GRUB, kernel terminal output, Red Hat Anaconda splash-scree and finally X11. In all these transition points you have to wait until the hardware interface box gets synchronized. And while waiting, you are missing most of the important information that could help you to debug why the system is not getting up correctly.
SDK
(jump to Conclusion)
I went back to Epiphan’s site to get the promised SDK. I got the version 2.2.16. Frankly, there is not much in the SDK. I looked at the Windows version because I was testing on a Windows XP based laptop. Essentially the “SDK” is an example Visual-C application to capture an image using the access to the device driver. Let’s see what ioctl-functions we have available:
/*
* IOCTL_VGA2USB_VIDEOMODE
*
* Detects video mode. If cable is disconnected, width and height are zero.
* Note that the vertical refresh rate is measured in milliHertz.
* That is, the number 59900 represents 59.9 Hz.
*
* Support: Linux, Windows, MacOS X
*/
typedef struct ioctl_videomode {
V2U_INT32 width; /* screen width, pixels */
V2U_INT32 height; /* screen height, pixels */
V2U_INT32 vfreq; /* vertical refresh rate, mHz */
} V2U_VideoMode;
/*
* IOCTL_VGA2USB_DEFAULTPARAMS
* IOCTL_VGA2USB_GETPARAMS
* IOCTL_VGA2USB_SETPARAMS
*
* IOCTL_VGA2USB_DEFAULTPARAMS fills V2U_GrabParameters structure with
* default capture parameters automatically selected by the driver. flags
* field is returned as zero. The defaults may change over time, especially
* after parameters of the input VGA sugnal have changed.
*
* Support: MacOS X
* Windows, Linux (IOCTL_VGA2USB_SETPARAMS only)
*/
typedef struct ioctl_setparams {
V2U_UINT32 flags; /* Validity flags for fields below */
/* When any of the fields below is used, */
/* corresponding V2U_FLAG_VALID_* flag is set */
/* otherwise the field is ignored */
V2U_INT32 hshift; /* Shifts image left (<0) or right(>0). */
/* Valid range depends on the video mode. */
/* Invalid values are rounded to the nearest */
/* valid value */
V2U_UINT8 phase; /* Pixel sampling phase, [0,31] */
V2U_UINT8 gain_r; /* Gain for the red channel, [0,255] */
V2U_UINT8 gain_g; /* Gain for the green channel, [0,255] */
V2U_UINT8 gain_b; /* Gain for the blue channel, [0,255] */
V2U_UINT8 offset_r; /* Offset for the red channel, [0,63] */
V2U_UINT8 offset_g; /* Offset for the green channel, [0,63] */
V2U_UINT8 offset_b; /* Offset for the blue channel, [0,63] */
V2U_INT32 vshift; /* Shifts image up or down */
/* Valid range depends on the video mode. */
/* Invalid values are rounded to the nearest */
/* valid value */
V2U_INT32 pllshift; /* Adjusts the PLL value */
V2U_INT32 grab_flags; /* Sets grab_flags */
V2U_INT32 grab_flags_mask; /* Marks which bits from grab_flags are used */
} V2U_GrabParameters;
/*
* IOCTL_VGA2USB_GRABFRAME
*
* Support: Linux, Windows, MacOS X
*/
typedef struct ioctl_grabframe {
void * pixbuf; /* IN should be filled by user process */
V2U_INT32 pixbuflen; /* IN should be filled by user process */
V2U_INT32 width; /* OUT width in pixels */
V2U_INT32 height; /* OUT height in pixels */
V2U_INT32 bpp; /* IN/OUT bits per pixel (16 or 24) and flags */
} V2U_GrabFrame;
/*
* IOCTL_VGA2USB_GETSN
*
* Support: Windows, Linux, MacOS X
*/
typedef struct ioctl_getsn {
char sn[32]; /* OUT serial number string */
} V2U_GetSN;
#define IOCTL_VGA2USB_GETSN IOCTL_VGA2USB_R(7,V2U_GetSN)
/*
* IOCTL_VGA2USB_SENDPS2
*
* Support: Windows, Linux
*/
typedef struct ioctl_sendps2 {
short addr;
short len;
unsigned char buf[64];
} V2U_SendPS2;The above interface definitions do not provide us with anything usable to limit the video synchronization times. Apart the sendps2() the entire driver is clearly frame grabber oriented.
Conclusion
Epiphan’s KVM2USB is clearly a co-product to their frame grabber series. It is not a dedicated KVM product. KVM2USB could have done maybe better with the same hardware but with a firmware that is optimized for KVM usage only. As it is today, it is almost unusable for maintenance work of server level system if the system has to be rebooted. It may be useful on other type of systems, for example on embedded Windows systems without a screen. On embedded Linux systems I would rather use a serial console on a Bluetooth channel to have a command prompt.
Wednesday, June 20, 2007 at 22:32
Nice review, glad i read it. I also read some other reviews, but there conclusions was that it was quit a good frame grabber since they used it to capture some Console screens.
I also am a sysadmin and I only need if for emergency’s or fresh installations, hence I rather would not be in a datacenter when I don’t absolutely have to. DRAC (Dell remote Access Cards) are nice, but the also need to be configured first.
But like I said, when it’s impossibly to enter the BIOS it’s a no-go for me.
Thanks, you just saved me a fair amount of money,
Martin
Thursday, June 21, 2007 at 07:30
I bought also a VGA2USB which is much more cost effective way to take screen captures from BIOS: Branch your laptop in parallel with the system console. This way you can often slow down the operations until the VGA2USB gets synchronized. Apart the keyboard/mouse cables KVM2USB is the same product than VGA2USB but more expensive.
KVM2USB does not support USB keyboard/mouse either, required by our new Dell 1950 servers…
Petri
Monday, January 26, 2009 at 08:41
Epiphan has revised their KVM2USB design. Apparently it synchronizes now faster, making it presumably more usable with BIOS operations. I will order an example for evaluation and report back with a new post. Meanwhile, you may want to read these two articles:
http://videoframe.wordpress.com/2008/06/16/epiphan-kvm2usb-review/ (from their sales dept?)
http://www.emediawire.com/releases/2008/5/emw979584.htm (certainly from Epiphan’s sales dept.)
Monday, March 2, 2009 at 14:19
[...] In my earlier Epiphan KVM2USB evaluation I found the first generation KVM2USB’s processor a bit sluggish. It could not follow up the different boot phases fast enough (BIOS, splash-screen, boot-loader, login-screen, GUI). It was spending too much time in synchronizing so that you missed important milestones in the boot process and you could not (easily) enter into the BIOS settings. [...]
Monday, March 2, 2009 at 14:20
I have evaluated the next generation Epiphan KVM2USB product here:
http://canne.wordpress.com/2009/03/02/laptop-as-vga-console-second-generation-got-it-right/