You installed a color GigE camera, the link negotiates, frames arrive — and every frame is gray. On a first integration this is almost never a hardware fault. The camera boots from its factory user set, that set usually stores a mono pixel format, so the camera streams Mono8 and the color data stays behind the sensor's Bayer filter. This guide walks the diagnosis in order of probability, gives the exact GenICam settings that fix it, and shows the bandwidth arithmetic that decides whether packed color is right for your link. Budget ten minutes: five to set and save the format, five to prove it survives a power cycle.
What the grayscale image is telling you
A color camera that ships gray frames is doing what it was told: the PixelFormat node is set to a mono format, so each pixel leaves the camera as a single brightness byte. PixelFormat is a GenICam enumeration, not a free-text field, and the factory default is usually Mono8 because it loads fast, costs little bandwidth and works with every grabber.
Read the node before changing anything. Mono8 means the camera needs a color format. A Bayer or packed color reading with a gray display means the fault is host-side: the software is drawing raw bytes without converting them. That failure has its own fix, described in camera preview shows a gray image: fix the format mismatch.
Which formats appear in the enumeration at all is fixed by the sensor and firmware; you select from what the camera offers. The background is in camera pixel format not changing: why it is fixed and how to set it.
Rule out the camera first: read the suffix
Confirm the sensor actually carries a color filter array before touching software. On MV-series machine-vision cameras the model suffix answers directly: the final letter is C for color and M for mono, and the preceding letter gives the interface — G for GigE, U for USB3, Y for CoaXPress, T for 10GigE. The MV-CS200-10GC is a 20 MP GigE color camera; the MV-CS200-10UM is the 20 MP USB3 mono version on the same IMX183 sensor. The MV-CH250-90YC-M58S-NN is a 25 MP CoaXPress color camera.
A camera ending in M will never produce color, whatever you set — order the C variant. When specifying a replacement, filter the camera finder for Colour: Color so mono models never reach the shortlist. More camera set-up notes are collected on the cameras topic page.
The fix, step by step
- Stop acquisition in the vision application, then close it and any background camera service it started. GigE Vision grants exclusive control: the configuration tool cannot write registers while your application holds the camera.
- Open the GigE camera control utility — the vendor's tool or any GenICam explorer — and select the camera by IP address or device ID.
- Read
PixelFormat. If it reads Mono8, set it to the color format your software expects — BGR8 packed, written BGR8 or BGR8Packed depending on the SFNC version. If the tool lists a quality-mode toggle beside the format (HqMode in some GigE integrations), set that ON too; packed color display depends on it there. - Confirm the live image in the tool shows color before moving on. This one check separates a camera-side fix from a host-side one.
- Stay in the tool and save the setting, next section.
Save the format so it survives power cycles
GenICam cameras keep their settings in user-set banks. Three nodes do the whole job:
-
UserSetSelector— the bank you are about to write to: UserSet0, UserSet1 and so on, plus a factory Default. -
UserSetSave— a command that writes every current setting into the selected bank. -
UserSetDefault— the bank the camera loads at power-up.
- Set
UserSetSelectorto UserSet1. - Execute
UserSetSave. - Set
UserSetDefaultto UserSet1. - Power-cycle the camera and confirm the image returns in color with no intervention. Switch the injector or supply off rather than pulling the live connector; hot-unplug strains the PoE port.
- Open the vision application and confirm color end to end.
Leave the factory Default bank untouched so you keep a rollback. If settings still vanish, the camera is losing power mid-session and only the saved copy persists — check the cables and the injector before suspecting firmware.
The bandwidth you just tripled
Mono8 carries one byte per pixel; BGR8 packed carries three. The switch triples the payload at the same frame rate.
Take a 6 MP camera at 3072 × 2048 pixels — 6,291,456 pixels — running 12 fps:
- Mono8 or BayerRG8: 6,291,456 × 1 ≈ 6.3 MB per frame, 75 MB/s on the wire.
- YUV422 packed: × 2 = 12.6 MB per frame, 151 MB/s.
- BGR8 packed: × 3 = 18.9 MB per frame, 226 MB/s.
A 1000BASE-T link moves 125 MB/s at the wire; plan on about 100 MB/s of sustained image payload once framing, resends and host overhead are counted. BGR8 therefore tops out near 5 fps (100 ÷ 18.9 = 5.3), YUV422 near 8 fps, Bayer and mono near 16 fps.
| Format | Bytes per pixel | 6 MP frame | Top fps on one GigE link |
|---|---|---|---|
| Mono8 | 1 | 6.3 MB | ~16 |
| BayerRG8 | 1 | 6.3 MB | ~16 |
| YUV422 packed | 2 | 12.6 MB | ~8 |
| BGR8 packed | 3 | 18.9 MB | ~5 |
If frames drop after the switch, read troubleshooting GigE camera buffer overflow errors: the symptom is bandwidth, not the format. Exposure time and pixel format together bound the frame rate; the interaction is laid out in RGB camera frame rate limits: pixel format and exposure.
Picking hardware when one link is not enough
Decide by resolution and speed:
- Up to about 3 MP in packed color: one GigE link still has margin. At 2.5 MP and 3 bytes per pixel a frame is about 7.5 MB — roughly 90 MB/s at 12 fps, with headroom to about 13 fps.
- 5 to 6 MP packed color at speed: use USB3 with about 400 MB/s usable, or keep GigE and send Bayer for the host to debayer.
- 12 MP and above in color: 10GigE or CoaXPress; both interfaces are filterable in the area scan cameras range.
For a compact color GigE camera in that first class:
- Sensor format
- 1/1.7"
- Lens mount
- C-mount
- Interface
- GigE
- Resolution
- Up to 3 MP
For a station with no PC pipeline to mismatch, a smart cameras unit makes the format decision on the device and ships pass/fail and measurements over the network:
- Interface
- GigE
- Resolution
- 5 MP
- Sensor format
- 1/1.45"
- Shutter
- Global
The MV-SC6050C-08M-XBN is a 5 MP color smart camera with an 8 mm M12 lens and a multi-color light source, so lighting, format and decoding are settled in one unit.
Checks before you close the ticket
- Power-cycle once more after saving; color must return by itself.
-
UserSetDefaultreads UserSet1, not Default. - The application — not only the control tool — shows color end to end.
- White balance gains are non-zero; zeroed gains turn a healthy color stream gray. The verification steps are in programmatic camera white balance control: verify settings.
- The link keeps at least 20% payload margin at full speed.
- The cable is shielded with screw locks; drag chains get a high-flex cable such as the 3 m LS-CBL-0199, rated for exactly that duty.
When BGR8 is the wrong answer
- Your software debayers on the host. Many tools want the raw Bayer image: same resolution, one byte per pixel, roughly three times the frame rate, with the demosaic algorithm under your control. Forcing BGR8 then caps speed for nothing. Set the format your software's camera list specifies; packed color only when packed color is requested.
- YUV422 is the forgotten compromise: two bytes per pixel, half the BGR8 penalty, accepted by most tools. When packed entries are missing from the list, YUV 4:4:4 packed pixel format greyed out: why and what to use explains how the camera builds that list.
- The camera is mono. A mono sensor's format list contains no color entry; replace the camera or add a color unit beside it.
Quick checklist
- Read
PixelFormatbefore changing anything. - Confirm the suffix ends in C, not M.
- Stop acquisition; open the control utility.
- Set the color format the software expects, plus its companion mode if one is listed.
-
UserSetSelectorto UserSet1, executeUserSetSave,UserSetDefaultto UserSet1. - Power-cycle and verify color returns untouched.
- Recompute payload at 3 bytes per pixel and keep 20% margin.
The camera configurator walks sensor, interface and mount in order when the whole station is still on paper.
Questions
Why does the pixel format revert to mono after the camera reboots?
Because the change lived in volatile memory. A GenICam camera loads the bank named by UserSetDefault at every power-up, and the factory default is usually Mono8. Execute UserSetSave into a user set and point UserSetDefault at that bank; only the saved copy persists, so a mid-session power cut takes any unsaved change with it.
Do I lose image quality by staying on Bayer instead of BGR8?
No. BayerRG8 is the raw sensor data, one byte per pixel; BGR8 from the camera is that same data debayered on-board and re-encoded at three bytes per pixel. Host-side debayering keeps identical color resolution, leaves the demosaic algorithm under your control, and costs a third of the wire bytes. Keep Bayer unless your software cannot debayer.
How much bandwidth headroom should a color GigE camera leave?
At least 20%. Treat 1000BASE-T as about 100 MB/s of usable image payload and keep frame size times frame rate under roughly 80 MB/s. Packet resends, other traffic on a shared switch and standard-sized packets all eat the margin, and a color stream that just fits will start dropping frames on the first busy production hour.
Can I save the user set from my own application instead of the vendor tool?
Yes — those are ordinary GenICam nodes. Write UserSetSelector, execute the UserSetSave command, then write UserSetDefault, through whatever GigE Vision stack your application already uses. The register-level route is shown in access GigE camera registers at runtime from your control code. Run the sequence once at commissioning; repeating it on every connect only adds a failure point to startup.
The tool still shows gray after I set BGR8 — what next?
Check the display path first: a preview buffer allocated while the camera streamed mono keeps mapping color bytes onto gray levels until you reconnect, so the buffer is rebuilt at the new format. Second, read the white balance gains — values of zero produce a genuinely gray image from a working color stream. Neither points at the sensor.


