Skip to content

Build the Hardware

Robert Neumann edited this page Dec 10, 2018 · 56 revisions

GBS-control hardware guide


Gbs-control is a replacement controller / firmware for GBS8200 video scaler boards.
It runs on an ESP8266 microcontroller (MCU) and is programmed using the Arduino plattform.

GBS8200 upscalers can be found on Ebay, at prices around $20.
Ebay also has ESP8266 development boards for about $5. "Wemos D1" and NodeMCU work well.

Please note that ATmega328 support (Arduino Uno, etc) will be phased out soon, as their program memory got too small for this project.
The ESP8266 solves all the limitation issues, is in the same price range and even offers WiFi for configuring the scaler.

Basic Install

The installation requires the ESP8266 (MCU) board, GBS board, a bit of cabling and a jumper for disabling the onboard processor. Power for the MCU can be provided by:

  • a development PC USB port
  • using the same power supply that powers the GBS > into the MCU boards "Vin" (recommended)
  • using the GBS regulated Vcc (3.3V) > into the MCU boards "3.3V" input

Connect the MCU boards ground to a convenient ground point on the GBS.
Connect the two I2C bus wires (SDA, SCL).

  • Wemos D1: SDA to D14, SCL to D15
  • NodeMCU: SDA to D2, SCL to D1
  • Use a jumper to bridge the 2 pins below the first programming port (see pictures)

Connect DebugPin

To enable automatic image position and timing adjustment, the MCU needs to know some timings. Carefully solder a wire from the pictured DebugPin to:

  • Wemos D1: pin D6
  • NodeMCU: pin D6


SCART RGB to VGA adapter

If you want to build an adapter, here is some good inspiration:

The ArcadeForge Sync Strike is a solution that will work, if you don't want to build an adapter yourself.

Sync (no extra sync stripper)

Every GBS board comes with ~500 Ohm termination on the sync input.
This termination is meant for VGA and most arcade boards. It is unfit for most other sources however.
If you want to use the RGBS input for regular TV level sources, the GBS requires one additional 100 Ohm resistor to ground on the sync input.
Together with the factory resistor of ~500 Ohm, this will bring the total termination close to TV levels of 75 Ohm.
Info: The total resistance is closer to 82 Ohm with this extra resistor. This is intentional, as it leaves more headroom.

Sync (with sync stripper)

Better results can be obtained by using a sync stripper, such as the LM1881, that extract the various forms of RGBS sync.
Please build your circuit so that it has a 75 Ohm to ground (termination) resistor on the LM1881 video input, as well as a 470 Ohm series (attenuation) resistor on the sync output.
The 75 Ohm input resistor is the required termination for the source.
The 470 Ohm series resistor on the CSync output of the LM1881 lowers the voltage to safe levels for the GBS.

Your extracted CSync can now be connected to the "S" (sync input) pin of the GBS.

User viletim shows a good LM1881 circuit here:

Note that his circuit omits the Rset resistor and capacitor. This does work for CSync generation, but the VSync output will not work.
This is fine however, as we are only interested in the CSync.

Also note that the LM1881 requires 5V to operate, but that the GBS only makes 3.3V easily available.
5V for the LM1881 needs to be sourced elsewhere, from the GBS power input, for example.
I successfully tested the sync stripper at just 3.3V, with the output 470 Ohm resistor removed.
This is not recommended though, and the LM1881 will have a hard time with some signals.

Sync (best solution)

Please see Sync on Green Capacitor Replacements


No Picture

  • Are SDA / SCL reversed? It's safe to reverse them and try again.
  • Forgot to install the jumper on the GBS?
  • ~100 Ohm resistor to ground on Sync-in is installed?
  • using a sync stripper: Is the source voltage 5V (as required by the LM1881)?

Debugging Issues

The Arduino IDE serial monitor shows debug information at 115200 baud.
If your MCU is connected to a computer via USB, you can access this to find out more about the issue.

You can’t perform that action at this time.