diff --git a/mesecons_fpga/init.lua b/mesecons_fpga/init.lua
index 0c56d7db29eb2fd8dc4a32c72c2bfd8440c6e9b0..97de775a7a109389b0b5404d7769fb4104f82b1b 100644
--- a/mesecons_fpga/init.lua
+++ b/mesecons_fpga/init.lua
@@ -72,7 +72,7 @@ plg.register_nodes({
 	sunlight_propagates = true,
 	paramtype = "light",
 	walkable = true,
-	groups = {dig_immediate = 2, mesecon = 3},
+	groups = {dig_immediate = 2, mesecon = 3, overheat = 1},
 	drop = "mesecons_fpga:fpga0000",
 	selection_box = {
 		type = "fixed",
@@ -309,6 +309,11 @@ plg.update = function(pos)
 	local meta = minetest.get_meta(pos)
 	if meta:get_int("valid") ~= 1 then
 		return
+	elseif mesecon.do_overheat(pos) then
+		plg.setports(pos, false, false, false, false)
+		meta:set_int("valid", 0)
+		meta:set_string("infotext", "FPGA (overheated)")
+		return
 	end
 
 	local is = lcore.deserialize(meta:get_string("instr"))