Столкнулся с необходимостью получить данные Xerox Phaser 3020 с уже заблокированным по счетчику стартовым картриджем. Печатать Configuration/Supplies Report аппарат уже не давал, а использовать платные Printer Reports для простой операции чтения не хотелось.
В итоге удалось получить данные напрямую через USB под Linux (Ubuntu) с помощью Python + PyUSB.
Аппарат определяется как:
Код
VID: 0924
PID: 42d5
USB Printer Class 7
Interface 0
Bulk OUT: 0x02
Bulk IN: 0x81
Обычная отправка SPI_GET_SYSTEM_DATA() напрямую в bulk endpoint результата не дает. Перед сервисными запросами аппарат необходимо перевести в MAA mode.
Вход в режим:
В hex:
Код
1B 77 4D 41 41 53 54 41 52 54
В ответ аппарат возвращает 8 байт:
Код
1B 77 4D 41 41 2D 4F 4B
то есть ESC w MAA-OK.
После этого через тот же USB bulk interface доступны, в частности, запросы:
Код
SPI_GET_SYSTEM_DATA()
SPI_GET_SUPPLIES_DATA()
Таким способом на моем Phaser 3020 удалось получить без печати отчетов:
Код
Firmware / MCB: V3.50.21.03
Machine Serial: 5315811173
CRUM: 23071700112
Cartridge Model ID: 650N05407
Supplies Data также корректно показал состояние стартового картриджа: ресурс 0.7K, 701 equivalent pages и 0% remaining.
После чтения скрипт выходит из MAA mode командой MAA-STOP и получает такой же MAA-OK.
Прикладываю Python-скрипт, которым снимал данные. Нужен python3-usb/PyUSB, запускать с правами доступа к USB (для простоты я запускал через sudo). Скрипт только читает сервисную информацию, прошивку не записывает.
Возможно, пригодится тем, кому нужно узнать точную версию MCB/Serial/CRUM на аппарате, который уже отказывается печатать отчет из-за закончившегося CRUM, или просто не хочется искать Windows-утилиты.
Проверено на Xerox Phaser 3020, VID:PID 0924:42d5, firmware V3.50.21.03.
Если кто-то проверит на других версиях прошивки 3020/родственных аппаратах — интересно было бы узнать результат.