If you can cat /dev/urandom > /dev/fb0
and get random pixels on the screen, you have all you need.
In my case I needed to dump some text info.
I tested this in busybox and raspi, so it might work for you.
The answer might be a little bit long, since if you don't use some console you will need to print the pixels of chars yourself.
Luckily someone have done the hard job, so we just need to combine it.
In busybox or in your raspi you should have a fbset
binary.
This might help you to find out your settings as screen dimensions.
In my embedded looks like this:
# fbset
mode "480x272-1"
# D: 0.104 MHz, H: 0.207 kHz, V: 0.657 Hz
geometry 480 272 480 272 16
timings 9600000 3 3 0 32 17 11
accel false
rgba 5/0,6/5,5/11,0/0
endmode
The important part here is the width 480 and height 272 pixels.
As you mentioned, you can fulfill the screen with
cat /dev/urandom > /dev/fb0
and you can clear it with cat /dev/zeros > /dev/fb0
Than clear your screen, we must assure you get the dimensions properly.
By chance my busybox had a fbsplash binary that get as input a .ppm file.
Correct if I am wrong, but it seems that fb0
accepts this format.
Taking a look on Portable Anymap on Wikipedia, there are several "subformats"... fbsplash uses a fancy one with color, and so on... but we want to be able to just print something readable. Let's use the P1 coded in ASCII for the sake of simplicity. If we could print a vertical line, we would know our dimensions are correct. Let's try it:
A vertical line in a ppm type P1 should look like this:
P1
480 272
f 0 0 0 0 ... 0
f 0 0 0 0 ... 0
...
f 0 0 0 0 ... 0
So, there will be 272 lines, 959 chars wide.
The documentation says it should be 1 instead of f... on busybox and raspi f was brighter.
It is important that you have no space after the 0's...
This task can be a bit tedious... you better use a text editor that helps you.
In vim, you can copy the first two lines, go to command mode (esc), than type the following chars:
of(esc)479a 0(esc)yy271p
Of course, I am using my dimensions, you should use yours.
Cat this file to /dev/fb0
, it should looks like:

Ok, I am cheating... it is not just one line there... it's about 8... but when it does not work (we have wrong dimensions or we have space at the end, to have just one line is much easier).
If you got that far, we have just to print the right pixels to see as chars.
Thanks to Marcel Sondaar and his repo on GitHub we won't need to draw each char.
With a small tweak one expand his simple program to print f
instead of X
and 0
instead of spaces, insert spaces between each char, add the header and we have a .ppm file with the letter corresponding its charcode.
One small step further and you don't get a char as input, but a line.
Cat a file, pipe to your program and output to /dev/fb0
and you get a text output:

I test this solution also on a raspberry pi and it worked.
The system tells me I don't have reputation to post more than 2 links. Until I get this, you must rely on my word :D