Replies: 1 comment 1 reply
-
|
Thanks for going the extra mile on sussing out the details. On GetPrinterInfo/0xA1A1 Were you using an LBP3000? Response size > 55 might be a cheap way of checking if the response is CAPT 2.1 (56B) or CAPT 3.x (64B). I guess you figured out the block size and buffer size before I could but I was so close! I'll update the details in agalakhov#38 soon.. Meanwhile, I suspect On ReserveUnit/0xA2A0, ReleaseUnit/0xE0A9 and SetJobInfo/0xE1A1 These commands look like they're part of some kind of network support, even USB-only CAPT printers have network capability when used with the Canon-official Axis Ethernet dongles and the NetSpot manager software. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
I'm slowly reverse-engineering
captmon2monitor binary which handles LBP-2900, LBP-3000, LBP-3210 and LBP-3600.In this document, all data starts with byte 1, not byte 0!
Commands
0xA0A1 GetInputStatus
Request: empty
Response:
Repeat the parsing loop for each slot (byte 2)
0xE0A0 GetBasicStatus
Request: empty
Response:
GetInputStatus(short5_6 & 0xF) * (GetPrinterInfo_Buf << 15) / 150xA1A1 GetPrinterInfo
Request: empty
Response:
The driver checks if the answer size > 55, but other bytes are not read by the driver.
0xA0A8 GetExtendedStatus
Request: empty
Response:
Bas): Basic status flag mask, should be the same as GetBasicStatusBas1): Secondary basic status flagsBas2): Unk(short5_6 & 0xF) * (GetPrinterInfo_Buf << 15) / 15Pap): bPaperAvailableBitsUsed in paper selection code for unknown printer model (DevID 2230), all other models have media_input_cassette=0
Cnt2): bControllerStatus2Start): Page number being decoded/startedPrinting): Page number currently printingShipped): Page number being pushed outPrinted): Page number completedLED): LED/indicator status, possibly used as just internal status signalling mechanism, absolute numbers probably don't matterCov): Used in paper selection code for unknown printer model (DevID 2230), all other models have media_input_cassette=00xA2A0 ReserveUnit
Request:
All zeros, hardcoded.
Response:
0xE0A9 ReleaseUnit
Request:
Response:
0xE1A1 SetJobInfo2
Request:
Linux driver uses fixed size of 76 (72 for payload) length, even
if it has the code to add hostname, username, and job name to the job,
this seems to be broken, at least for me. And with hardcoded cmd size
I don't know how it is expected to work. WinXP driver sends everything correctly.
Response:
0xE1A2 SetLEDStatus
This one, despite the name, does not control only LEDs, and apparently
does not only control GPIOs as Alexey assumed as well.
Request:
0x16 = PrinterReadyToPrint
Long 37-40 dwHostDetectError_36_39tPaperSizeTbl:
Response:
Beta Was this translation helpful? Give feedback.
All reactions