Every year, new models of laptops arrive on the shelves. This means that old laptops usually end up in landfills, which isn’t exactly ideal. If you don’t want to waste an old or obsolete laptop, though, there’s a way to reuse at least the screen out of one. Simply grab an FPGA off the shelf and get to work.
[Martin] shows us all how to perform this feat on our own, and goes into great detail about how all of the electronics involved work. Once everything was disassembled and the FPGA was wired up, it took him a substantial amount of time just to turn the display on. From there it was all downhill: [Martin] can now get any pattern to show up on the screen, within reason. The only limit to his display now seems to be the lack of external RAM. He currently uses the setup to drive an impressive-looking clock.
This is a big step from days passed where it was next to impossible to repurpose a laptop screen. Eventually someone discovered a way to drive these displays, and now there are cheap electronics from China that can usually get a screen like this running. It’s impressive to see it done from scratch, though, and the amount of detail in the videos are a great way to understand how everything is working.
Only after being able to pull off a hack like this would I consider myself a competent hacker, Great article and video. Thanks!!
It’s a great exercise in fpga lvds design
I have yet to pull it off
on a 1080 60 display I should say
I love hacks that reuse old hardware, there is way too much e-waste. Also when/if global economy collapses or [insert apocalyptic scenario], this sort of repurposing of electronic parts will become the norm.
I have a whole box of previous laptops here. Some of them still work, they just grew old and slow. Most of the screens still work. I should use them for *something* but I don’t know what? My latest in-use laptop has a much larger screen than the older ones and my desktop screen is 37 inch so the old ones are no good for that.
Very big electronic picture frames? :D
maybe I can use a web cam and some rf modules to make a door monitor or something – I probably can’t get much resolution over rf so perhaps hi res web cam LVDS and LCD. I haven’t played with any web cams yet but they have a similar encoding pattern to LCD’s but lower res and one pair instead of three.
Combine multiple laptop screens into one huge display.
Also … LVDS stands for Low Voltage Differential Signalling and most low voltage FPGA’s use this standard for *anything* (not just LCD displays). So LVDS does *not* specifically refer to LCD displays in any way.
Just in case [Martin Hubáček] drops by …
I know VHDL can be considered self documenting but …
Port ( clkExtOsc : in STD_LOGIC;
entity pll is
port (
CLKI: in std_logic;
CLKOP: out std_logic);
What is the source frequency ??? and what id the scale.
Hello RÖB, I’m the creator of the project,
I don’t have the hardware with me right now but in the PLL I was able to find frequencies:
attribute FREQUENCY_PIN_CLKOP of PLLInst_0 : label is “192.000000”;
attribute FREQUENCY_PIN_CLKI of PLLInst_0 : label is “16.000000”;
So 16MHz in and 192MHz out
Great job on this hack! I like the “Death Clock” theme ala Futurama.
Correct me if I’m wrong (he says to the HaD comment section), but he’s interfacing with the monitor’s on-board controller LCD controller, correct? So the FPGA is functioning as a data converter, correct? What was the laptop using for this? Couldn’t you have gone ‘higher up’ this chain?
We wants to re-use the screen *without* the laptop. In the video he is using the laptop as a power supply for the screens back-light just out of convenience. Once he was everything working I would expect he would do away with the laptop altogether so there is no point in going ‘higher up’ in the laptop even if that pert of the circuitry was still working (graphics chip GPU).
Data converter or protocol converter or even data protocol converter would all be correct. He is doing a little more than just protocol conversion with the FPGA as the FPGA is generating the data in the first place so it’s more or less replacing some of the functions of the GPU as well.
So is there an off-the-shelf $0.20 IC on the laptop’s GPU board that handles this protocol conversion?
No.
A modern laptop GPU is often ‘made from’ or ‘includes some’ FPGA and hence the huge power and thermal requirements.
So the laptop panel connections (except back-light power) connect directly to the FPGA/GPU.
Some desktop GPUs are a System on a Chip (Soc) combined with ASIC (non-re-programmable FPGA) along with the obvious RAM memory.
A ‘normal’ (NOT-laptop) LCD screen has standardized input specifications like DVI, (x)VGA or HDMI so they are easy to interface to.
Laptop screens lack these standards. They have signalling that is ‘a bit like’ HDMI in that it’s Low Voltage Differential Signalling (LVDS) but quite often there are 3 digital channels instead of four so the sync signals are mixed in with one color channel or all three channels instead of having a dedicate forth channel that normally also has the the main clock signal. Well that is what I have seen so far – expect odd variations.
So for this reason a GPU that is made from FPGA or includes FPGA is more or less essential for a laptop as the FPGA can be hardware coded to generate the correct data protocol for a specific LCD panel.
So there is no 20c off the shelf solution with laptop panels as they lack the standards of LCD screens so the need a specific custom solution.
There are however a number of Chinese businesses that will sell you a cheep converter that may (for example) go from HDMI to a specific laptop LCD panel but you have to give them the part number for the LCD panel first so they can code it for that specific panel.
If you want to do it yourself then start with some FPGA and write the Hardware Definition code (HDL/VHDL/Verilog). It is not as daunting as it may sound. A full GPU is massive in complexity but most of that is for 3D rendering for games. If you want just to put some text and simple graphics on a screen then the hardware and code requirements are very small. The hard part is finding the specs for the LCD panel or discovering them by reverse engineering just as demonstrated by this article.
I know it is an old post but i am still experimenting on this myself). If you don’t want to generate the lvds signals yourself you can use a serialiser (it is often described in the panel datasheet what serializer/deserializer to use but it requires more pins since you send all bits in parallell to the serializing chip.
“days passed” -> “days past”
This is ambiguous.
“Days passed” is actually correct as it has a reference to passage and a context of time.
“Days past” is less proper as “past” is itself a reference to time so using “days” as a context is redundant.
“Past days” would however be correct.