FR Sync Signal for Everyone

You’re not going to believe this. It is so easy to extract a frame sync (FR) signal from an SSD1306 that I am almost embarrassed to show you how.
Anyone can do this with a little bit of electronics know-how.

Basically, the frame sync signal transitions low to high at the end of the SSD1306’s buffer write to screen.
So without hacking at the SSD3106 hardware, all we have to do to pinpoint this particular point in time, is to use a phototransistor to monitor the last few bunch of pixels written to screen. For those unfamiliar with the SSD1306 scanning format, each row of pixels is switched on briefly and then switched of again as the next row of pixels in turn gets switched on. This pixel switch on business happens at the frame rate frequency. So as long as we have at least one pixel active at the lower left of our image/images, we can extract our FR signal. One pixel only needed ! I shit you not. The phototransistor only needs to be close to the screen. It doesn’t even need to cover any pixels up either.
I’ve attached a pic of the SMD phototransistor and test pcb plus schematic and oscilloscope dual trace pic of FR pin and phototransistor signals.
So the parrot image on screen is using the same 3 multiplexed images as posted previously, but this time it’s getting its frame sync signal from the phototransistor circuit.
The preset pot in the schematic is there to set the trip level of the comparator. Needs to set fairly close to ground I found. A fixed resistor would be used in place of, once its resistance value was determined.


Don’t everyone rush to do this mod all at once


The other usefull purpose for this circuit is to give you the ability to find out the maximum frame rate possible from your SSD1306 display. No other way to do it, apart from using an actual hardware FR pin.

Edit: The circuit board is not actually needed at all by the way. This was only used for demonstration purposes.
You can use the MCU’s built in analogue comparator. So the only additional parts needed are the phototransistor, 2.7K ohm resistor and 2 bias resistors.

1 Like

Actually, there is another way

Makes me wonder is something along the lines of a powerline attack could work. Basically monitor voltage or current going to the display and extrapolate FR from that. Of course still has the problem of sensitivity and some extra circuitry to get enough resolution to be meaningful.

Pickup with an antenna will give you row data write signal but not the all important frame sync timing.
Of course depending on your budget, nothing’s impossible in the hacking world. I just figure a 20c phototransistor is an easier option.

Powerline attack is way more expensive than soldering a piece of magnet wire to the display.
Why are you guys trying to think up painfull ways of doing stuff ?

Your first sentence in the paragraph said (which is what I was responding to):

Us engineers are gluttons for punishment?

1 Like

Very interesting way to sync the screen. :smiley:

1 Like

I’d love to see how well Sensitive performs with this setup rather than the crazy timing attempt :slight_smile:

It’s kind of bummer the Arduboy is sooo close to being able to do greyscale, but just can’t haha.

Anyone know what exact resistors would be needed for this mod? And could it be performed on a stock Arduboy?