ondrej-zary / carps-cups

CUPS driver for Canon CARPS printers
GNU General Public License v3.0
69 stars 22 forks source link

Canon I-SENSYS MF3228 ? #15

Open bazhenstvo opened 3 years ago

bazhenstvo commented 3 years ago

is there any possibility to make MF3228 print on macOS BigSur somehow?

ondrej-zary commented 3 years ago

MF3200 series is currently not supported. The data format is different and someone has to reverse engineer it first.

bazhenstvo commented 3 years ago

@ondrej-zary Are there plans to perform reverse engineering and add support for MF3200 series?

ondrej-zary commented 3 years ago

I don't have time and hardware (printer) to do it. Most of the work could be done without the HW (print various patterns in Windows to a file and analyze). But once the data format is reversed, data generation requires testing on real printer. While comparing generated data with output of the Windows driver is possible, I couldn't match it exactly. The method of choosing compression type by the Windows driver is unknown - but it's not a problem as soon as the printer can print the generated data correctly.

The FAX-L120 is first in the queue because I have the printer. But no free time.

bazhenstvo commented 3 years ago

I have this printer, so I can facilitate. However, I don't know what and how to do, so if you could instruct me or give a link to some documentation, I could give it a try and share with the results. Or in case you have time for this, you may perform work that can be done without the printer, and I could test and do the rest.

redjoe commented 1 year ago

Data compression by CCITT Group 4. Extract data from file. Converted to tiff fax2tiff -4 -X 2360 <filename> -o result.tiff where width=2360.

Header 0x6b structure:

0x6b: 
document name: 
    \x00\x04\ + magic bytes (\x00\xf0\x00\x01\x01\x00\x04\x00) + ( character count + 3) + \x00\x11 + character count + name

username: \x00\x06 + magic bytes (\x00\x07) + \x00\x11 + character count + user

time: \x00\x09 + magic bytes (\x00\x08) + \x7D\xE1\x43\x00\x0C\x12\x46\xEC  (UTC)
                                            ^^  ^ 2014
                                                ^ JANUARY
                                                    ^^ DAY (5bit) + DAY OF WEEK (3bit)
                                                        ^^ SEPARATOR
                                                            ^^ HOUR
                                                                ^^ MINUTES
                                                                    ^^  ^^ SECONDS (6bit) + MILLISECONDS (2+8bit) (?)

Bytes difference marked red color in data block.

Снимок экрана от 2022-12-05 23-01-21_

mounaiban commented 1 year ago

Thanks @redjoe for doing the detective work. If the MF3228 actually uses G4 compression when printing from a PC, this could make support a lot easier to implement. GhostScript already has a G4 output device (-sDEVICE=faxg4). I am expecting the '3228 to support G4 images from any encoder, without any special requirements or restrictions.

ondrej-zary commented 1 year ago

Thanks for analysis. I'll try to do some testing. I have a FAX-L120, maybe it uses this format too. It makes sense as it's a fax with printing capability.