Grab Bootscreen from PC (on VGA adapter) (black&white in 25*80) ?

Hi,

I have no idea what the resolution is when a PC boots (CGA)?

But i need to grab the boot screens (can be black and white). Is this possible with a arduino, if yes what do i need?

If its not possible, what other MCU i could use to do so Microchip/Atmel ?

Many thanks!
36R

It will typically go through several modes during the boot sequence. Perhaps some of them will be compatible with the video experimenters shield, but where are you going to put a video frame if you manage to acquire it? Have you considered just pointing a video camera at the monitor? That usually works for me when I need to figure out WTF just went wrong.

Hi PeterH,

The frame will upload to a server, for further processing. I understand the Arduino doesn't have enough memory t keep loads of screen. However in 25 (rows) *80 (columns) (=2000 bytes), should be possible, i only need the boot-up screens, not the OS loading logo.

Since i need to plug it into multiple PC's i want to connect it on the back (where the VGA is), powered with USB. The whole point is avoiding to connect a screen, so a camera is not a option.

Thanks!

What you ask is VGA frame grabber.

Yes in essence. But then one i can make myself. Since i don't need full OS screenshots, but only a few of the BOOT screen.

I was hoping to see if i could build one myself (with some help of you guys :blush: ).

If you haven't bought the pcs that will be acting as your servers, I would say the simplest approach is to get pcs that use a serial console if they don't have a graphics device installed, and use the Arduino to monitor the serial line.

If your PC does not have a serial console boot option and booting up with the output going to a VGA, DVI, or HDMI graphics device, then you are talking about much more memory needed, since the device will be outputting raw pixels and not characters. It may be displaying 24x80 black and white characters, but it is something like 640x480x3 to 1092x1080x3 pixels (the x3 is for the 3 colors).

2 GB (16 Gbit) memory, microprocessor (might be 100 time more powerful than AVR/arduino), and FPGA.

You are barking up the wrong tree.

@MichaelMeissner

I dont own the h/w, its unknown and changing all the time.

Anyway to easy detect what is the boot resolution?

I probably have a enough by just capturing the top 1/2 or maybe even top/left corner. B&W is good enough.

Try this if terrible quality of video is accepted, and it is NTSC, at least some kind of start.

threesixright:
Hi PeterH,

The frame will upload to a server, for further processing. I understand the Arduino doesn't have enough memory t keep loads of screen. However in 25 (rows) *80 (columns) (=2000 bytes), should be possible, i only need the boot-up screens, not the OS loading logo.

Since i need to plug it into multiple PC's i want to connect it on the back (where the VGA is), powered with USB. The whole point is avoiding to connect a screen, so a camera is not a option.

Thanks!

I think you need to re-consider your project and approach.
Just look looking at your math above, you are way off on memory needs.
80x25 is a text resolution. You don't have access to that.
You have access to the graphic signals (Not really even the pixels - but kind of close) coming out of the VGA port.
Even 80x25 in the old "CGA" that mode would be a pixel resolution of 640x200 (80x25 with 8x8 characters)

I'd be doubtful that any PC uses that mode anymore since the text quality wasn't very good.

VGA mode is 640 by 480.
So even if you are looking at monochrome characters in VGA mode, that is 307200 pixels.
To hold that many monochrome pixels would take 38,400 bytes to grab and hold the video frame.
Then you could process the frame pixel data to try to convert the pixels back to text.

Also consider that there are many different resolutions and formats that could potentially
be used by the BIOS and the subsequent BootProcess.
Example:

To me the task seems very difficult if not impossible even when using some serious hardware
since there seems to be no confines on the PC hardware and it is allowed to change
and you are wanting to capture not only a single image but multiple "boot screens"
from multiple PCs.

While it might be theoretically possible to monitor the video signals in real time to pick out
pixel data and process that pixel data back to text in real time, it would take way more CPU horsepower
than is available in an Arduino and still take some amount of memory to hold enough pixels for
multiple scan lines to allow the image processing to determine characters from the pixel data.

--- bill