CAPS Universe documentation  1.0.4
All you need to know to be successful
Brother HL Laser Printer Trouble shooting

If your device is in the list of 'known' but not yet supported printers, expect some trouble when printing. 'Not tested yet' most of the time means 'not working yet'. The following hints should help you to make it work, or at least how to gather information about the device to support us to make it a supported printer.

USB Device ID and 1284 Device ID

Many printer device related INI files still missing the USB device ID. Thus, the CAPS printer driver launcher cannot match the attached printing device to its corresponding driver.

In this case you can find an error message like this in your journal:

No printer driver available for the new printing device
Found printer device is a 'HL-2030 series' made by 'Brother'
Its USB vendor ID is 04f9, its USB product ID is 0027
Its serial number (less important) is: '<some string>'
Its IEEE ID is: 'MFG:Brother;CMD:PJL,HBP;MDL:HL-2030 series;CLS:PRINTER;'
Install a printer driver for this printer device first
Note
In this example I used the information from my HL-2030 printer. It is already supported by this driver. So, you should never read exactly this messageā€¦

If your printer isn't detected at run-time, examine the corresponding INI file and add the missing USB device ID and 1284 Device ID to it. Then detach and attach the printer device again. Now the printer should be recognized.

The Printer Driver still Fails

Various reasons can fail the printer driver.

Printing Artefacts

At the begining of the project, my printer starts to print my own encoded data with artefacts. Here are two examples:

This is the printed one:

Printed artefact

This is the simulated one:

Simulated artefacts

This is the printed one:

Printed artefact

This is the simulated one:

Simulated artefacts

Since only the delta from line to line is encoded you can see, at some line only changed pixels are considered by the printer.

The simulation was done by clearing the reconstruction buffer when a new block starts. Refer test/c1030_decode.c, function hl_c1030_block_decode().

TODO New block or new band? It seems really a "block".

Reason

The reason might be a broken (or intended?) reference line handling inside the printer's firmware: The printer's decoder cannot reference the last line from the previous band (or it references a cleared line) from the first line of the next band.

Simulated artefacts

But this is only an assumption, because as you can see above, the simulated artefacts don't match the printed artefacts exactly. Maybe it is just a firmware bug we hit at some printers.

Another Solution to avoid Artefacts

This printer prints the dots in bands of 128 lines. This is independend of the blocks of data we send. The size of a data block is limited: it must not exceed the C1030_MAX_BYTES_IN_ONE_BLOCK size in bytes. If the raster image is complex and cannot compressed well, it is easy to hit this limit. In this case a band with 128 lines must be sent with more than one data block. For example four 32 lines blocks or two 64 lines blocks, or a 100 lines block plus a 28 lines block.

If the lines accumulates to more than 128 lines, the printer skips the lines above 128.

TODO This is a different problem and leads to missing lines at all. -> here it is a "band" (not "block"!)

In the following image the horizontal red lines mark 128 lines and the black lines 32 lines.

Red lines: 128 line band, black line 32 line blocks

In the following image the horizontal red lines still mark the regular band with 128 lines. The horizontal green lines mark an additional block with less than 128 lines, because in the previous regular block the C1030_MAX_BYTES_IN_ONE_BLOCK size was hit. In this case the driver was broken and just starts a new block as large as possible and crosses a band.

Red lines: 128 line band, green line block's lines

And this block exceeds the 128 lines per band limit and the printer started to skip lines. Here a real world example:

Real world artefacts

And here the simulation:

Simulated artefacts
Note
The document's content shown here is from an old application note from Intersil (now Renesas) from 2005 page 2. It is a nice note why and how LCDs may flicker and how to resolve it. This shown excerpt is right from a picture which has a lousy compression and thus, the data blocks in this area of the page all exceeds the C1030_MAX_BYTES_IN_ONE_BLOCK size limit and more than one block is required to define a band.

The HL-2130 Printer stops pulling its Paper

There is a plastic part at the left side of the printer (in its internal mechanics) which fits two gears into each other, when you close the paper tray. This starts to rotate one of the pressure rolls and feeds the paper into the print unit.

When this plastic part is displaced, the paper feed starts, but is stuck at some later point. The printer cannot print anymore from its paper tray. But the manual feed still works!

There is a (very) small hook as a part of the plastic part, which helps to keep it in place. At my printer it was broken and thus, this plastic part starts to move on its axis. And instead of fitting the two gears into each other it just presses against one of the gears. After pushing it back into its correct position, the printer can feed its paper again. For some time. Until this platic part displaces again.

When it displaces? Whenever you open/close the paper tray. This is the critical action. It releases the gears when you open the paper tray which stops the upper paper pressure roll (I think for safty reasons). At this time it is free to move on its axis. And the next time you close the paper tray it seems a little bit harder to do so. This plastic part just deforms at this moment, but cannot fit the gears into each other anymore. The pressure roll still doesn't rotate and the paper feed is stuck. Don't try harder in this moment! Remove the paper tray and also remove the left side of the printer (it is only clicked-in). Push this plastic part back in its position, insert the left side of the printer again, insert the paper tray again and it should work again.

Others did deform the top of the axis to keep the plastic part below in place. Seems to work as well.