lp0 on fire (also known as Printer on Fire) is an outdated error message generated on some Unix and Unix-like computer operating systems in response to certain types of printer errors. lp0 is the Unix device handle for the first line printer, but the error can be displayed for any printer attached to a Unix or Linux system. It indicates a printer error that requires further investigation to diagnose, but not necessarily that it is on fire.
In the late 1950s, high speed computerized printing was still a somewhat experimental field. The first documented fire-starting printer was a Stromberg-Carlson 5000 xerographic printer (similar to a modern laser printer, but with a CRT as the light source instead of a laser), installed around 1959 at the Lawrence Livermore National Laboratory and modified with an extended fusing oven to achieve a print speed of one page per second. In the event of a printing stall, and occasionally during normal operation, the fusing oven would heat paper to combustion. This fire risk was aggravated by the fact that if the printer continued to operate, it would feed a fire with fresh paper at high speed. However there is no evidence of the "lp0 on fire" message appearing in any software of the time.
As the technology matured, most large printer installations were drum printers, a type of impact printer which could print an entire line of text at once through the use of a high speed rotary printing drum. It was thought[by whom?] that in the event of a severe jam, the friction of paper against the drum could ignite either the paper itself, or, in a dirty machine, the accumulated paper and ink dust in the mechanism. Whether this ever happened is not known; there are no reports of friction-related printer fires.
The line printer employed a series of status codes, specifically ready, online, and check. If the online status was set to "off" and the check status was set to "on," the operating system would interpret this as the printer running out of paper. However, if the online code was set to "on" and the check code was also set to "on", it meant that the printer still had paper, but was suffering an error (and may still be attempting to run). Due to the potentially hazardous conditions which could arise in early line printers, Unix displayed the message "on fire" to motivate any system operator viewing the message to go and check on the line printer immediately.
In the early 1980s, Xerox created a prototype laser printer engine and provided units to various computer companies. To fuse the toner, the paper path passed a glowing wire. If paper jammed anywhere in the path, the sheet in the fuser caught fire. The prototype UNIX driver reported paper jams as "on fire." Later print engine models used a hot drum in place of the wire.
Michael K. Johnson ("mkj" of Red Hat and Fedora fame) wrote the first Linux version of this error message in 1992. However, he, Herbert Rosmanith and Alan Cox (all Linux developers) have acknowledged that the phrase existed in Unix in different forms prior to his Linux printer implementation.
Since then, the lp printer code has spread across all sorts of POSIX-compliant operating systems, which often still retain this legacy message.
Modern printer drivers and support have improved and hidden low-level error messages from users, so most Unix/Linux users today have never seen the "on fire" message. However, a few people still run into it today with varying levels of amusement or confusion. The "on fire" message remains in the Linux source code as of version 6.0.
The message is also present in other software modules, often to humorous effect. For example, in some kernels' CPU code, a CPU thermal failure could result in the message "CPU#0: Possible thermal failure (CPU on fire ?)" and similar humor can be found in the phrase "halt and catch fire".