Laser printer hack - Page 1
Forum section: electronics / projects

author: ali_asadzadeh
author_rank: Super Contributor
timestamp: July 20, 2017, 01:28:53 pm
content: Hi,I'm curious about these laser printers, do we have any standard bus or protocol or datasheet to interface normal MCU's to the printing head to control it? Do you have any idea?

author: Fungus
author_rank: Super Contributor
timestamp: July 20, 2017, 04:32:13 pm
content: Which laser printers?

author: Richard Crowley
author_rank: Super Contributor
timestamp: July 20, 2017, 06:14:30 pm
content: Quote from: ali_asadzadeh on July 20, 2017, 01:28:53 pmHighly unlikely. Those are high-speed, full-custom circuits and furthermore, they are designed to be manufactured to a price-point. Any one of those factors would make any sort of "standard" unlikely.

author: JacobPilsen
author_rank: Regular Contributor
timestamp: July 21, 2017, 07:37:12 pm
content: Isn't it ARM at all???Back in 1984 it was Motorola 68000.What else?

author: Richard Crowley
author_rank: Super Contributor
timestamp: July 21, 2017, 08:49:44 pm
content: Quote from: JacobPilsen on July 21, 2017, 07:37:12 pmWhat does "ARM" mean?There are probably at least 1000 variations on "ARM". Only the "core" is standard. And nobody makes a "raw core" ARM chip.The ARM controllers found in pretty much everything are either semi-custom or full-custom.

author: C
author_rank: Super Contributor
timestamp: July 21, 2017, 09:07:34 pm
content: Think some are thinking the wrong wayThe printers that I know of do not print a page.They print the page in bands of page width.For 11in paper this might be 1in bands, so the page buffer is printed 11 times with only what fits in band stored in dot buffer.With two dot buffers, one can run laser while CPU is filling the second..With cheap memory today, I would guess that three or more buffers are used.In additionThe laser is sweep across the page with a multi-sided mirror with an optical encoder that drives the dot generation.comparing to a PCYour video card generates the data & timing and feeds it to monitor.The timing is in the monitor side and pulls the data as needed.

author: Rerouter
author_rank: Super Contributor
timestamp: July 21, 2017, 09:21:08 pm
content: your fastest method would likely be to focus on network printer, say a second hand mid office one (e.g. hp laserjet), you can then easily log the network packets and figure out what you need to send. I suggested HP because networking on one is similar for many of there models

author: C
author_rank: Super Contributor
timestamp: July 21, 2017, 11:26:55 pm
content: If you just want to talk to a laser printer.For formating print PCL6 or postscriptolder printers use PCL5For network printer you can find the IP port to send to on printer config page.

author: ali_asadzadeh
author_rank: Super Contributor
timestamp: July 22, 2017, 06:15:53 am
content: Thanks for your hints, Please do not worry about the MCU that I just said, I will use something that has enough power, say for example some Cortex A parts, like Raspberry PI , beagle bone or a custom designed PCB, I juts wanted to be able to control the printing mechanism or head, I would also like to trough away all the mechanical parts and I would build some custom mechanics for it! In short terms I just wanted to build a custom printer for a custom jobI thought It would be much easier and affordable to prove the concept even mass market it with ready off the shelve laser printer spare parts.

author: Siwastaja
author_rank: Super Contributor
timestamp: July 22, 2017, 07:43:54 am
content: It's probably easiest to skip all the control logic chips (MCU, ASIC or whatever) and just do it yourself. Basically, a laser printer print head is nothing more than a simple laser diode, a motor (you can utilize the motor driver circuit; it's probably based on an off-the-shelf BLDC control chip and provides speed feedback) rotating a mirror, and a feedback phototransistor that gives a pulse each time the laser hits the side so that you can sync the pixel generation frequency. Then all you basically need is to PID control the motor to run at a constant speed, modulate the laser using an IO pin on any MCU you are familiar with, while locked into the frequency given from the pulses from the phototransistor.

author: Alex Eisenhut
author_rank: Super Contributor
timestamp: July 22, 2017, 03:33:32 pm
content: Siwastaja got it right, as usual. My ancient HP 5L has 1 MB memory by default and somehow manages to run the entire firmware and image in there.The more complicated part is all the mechanical monstrosity after and before the laser. Getting the fuser to the right temperature, getting the corona wire to work, moving the paper constantly, etc.There's also a nice piece of glass in there that turns the beam always normal to the paper. Do all laser printers have that? I would guess so to keep the spot size small.

author: georges80
author_rank: Frequent Contributor
timestamp: July 22, 2017, 04:43:23 pm
content: In the time before dinosaurs I subcontracted to design a laser printer control board for Xerox. I also designed various other laser printer control boards and did some prototypes for Canon to wean the off the 68000 they were using (they were the OEM for HP at the time, i.e. the laserjet 1 and 2 were Canon printers, including the PCL firmware development).Anyhow, the old laser printers did not have enough dram for a full page buffer (dram was expensive). So, they actually rendered a band (double buffered) at a time and that was then serialized to drive the laser one raster row at a time). The printer had to perform bitblt operations to render the fonts etc. Firmware had to keep up with the overall frame rate or the page would be a disaster. Basically you received 'sync' signals to know that the laser mechanism (spinning mirror assy) had reached the start of the new line and then you clocked out the bit stream at the necessary rate (to achieve 300dpi etc). There were of course all the other GPIO signals to activate the fuser, verify temperature, activate page feed, sense various paper jam switches, output information to the monochrome LCD, turn on various indicator LEDs etc etc. On a paper jam recovery (user unjammed the paper feed path) the printer would have enough storage (since it still had the original text information stored) to be able to recover and reprint successfully.Newer printers had more and more dram as cost dropped, full frame buffers came into existence and thus full page graphic downloads (bitmaps) can to being. DPI went up, various enhancements came about for sub-pixel printing to improve font quality. More downloaded fonts came to being, font scaling came about (adobe postscript appeared), new versions of PCL came about. Page print rates went up. More processor and dram was required. Custom asics/fpga's became the norm as their costs dropped.Bottom line is that there is NO standard in how a laser printer's internal interface has evolved. It is not a particularly complicated affair to interface to the various optomechanical or electromechanical subassemblies, but it certainly isn't a standard and would require reverse engineering to understand the various signals, voltages and timing that is needed to successfully replicate the OEM functions. The firmware is relatively complicated to deal with all the aspects of printing (including keeping track of toner usage), paper jam recovery, needing to be 100% compatible with existing formats, etc. A lot more complicated now than an old laserjet 1 or 2...I can't see the point...cheers,george.

author: nali
author_rank: Frequent Contributor
timestamp: July 22, 2017, 05:40:08 pm
content: Quote from: georges80 on July 22, 2017, 04:43:23 pmDidn't the Canon SX era LaserJets have an OEM "video interface"? I can't remember if it was provided by Canon or HP, but there was definitely an interface or card slot for companies to drive the engine directly.

author: georges80
author_rank: Frequent Contributor
timestamp: July 22, 2017, 06:15:17 pm
content: Quote from: nali on July 22, 2017, 05:40:08 pmYes, used to interface to an external controller like a postscript engine. But that's ancient history and hardly a 'standard' that you can just 'hook up a general microcontroller to...'The real questions are 1) what happened to the OP and 2) what was the OP's reason to want to do it?cheers,george.

author: ali_asadzadeh
author_rank: Super Contributor
timestamp: July 23, 2017, 10:01:15 am
content: Thanks george, you Brighten us a lot, also Siwastaja your way of seeing it helped me a lot. I wanted to do it, So any help like identifying any printer model laser module or connectors and signals, would highly appreciated!I think if I could reach a point to be able to stream a serial bit stream for a single line of printing I can manage to do the rest!

author: dnwheeler
author_rank: Regular Contributor
timestamp: July 24, 2017, 03:41:03 pm
content: Quote from: georges80 on July 22, 2017, 06:15:17 pmAtari actually sold Canon-built laser printers (branded as the Atari SLM804) without a processor or RAM. It relied on the host computer (Atari ST, 8 MHz 68000) to generate the "video" data and stream it in real time (using DMA) to the printer engine. Many Atari ST models didn't have enough memory for an entire page buffer, so it was tricky doing much more than simple text-only printing, or bitmaps streamed from hard disk.