Desenvolvi um driver para CUPS (com um arquivo .drv, devidamente compilado num .ppd e um filtro em C, devidamente compilado num binário), porém o Linux não reconhece a impressora como uma impressora. Ela não aparece na lista de impressoras a serem adicionadas nem nada disso.
O Linux reconhece a impressora como um dispositivo USB conectado, então desconfio que meu PPD esteja pegando o nome do modelo errado (a impressora é um protótipo, não existe em nível industrial, ainda).
Existe alguma forma de descobrir o modelo da impressora através da linha de comando? O manual da mesma não é muito claro sobre isso.
Existe a possibilidade de ser outra coisa atrapalhando o reconhecimento do driver?
[2] Enviado em 09/02/2012 - 18:58h Re: Desenvolvendo um driver para CUPS
Esse foi o resultado. Substituí o nome da companhia e do modelo da impressora porque são modelos novos e não posso divulgar.
Reparei que o meu resultado foi diferente do seu. Meu idProduct foi preenchido, mas iProduct está vazio. Quais das informações devo colocar no PPD do CUPS?
Bus 001 Device 009: ID 0404:0312 **** Corp. ***** Printer Receipt
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 255 Vendor Specific Subclass
bDeviceProtocol 255 Vendor Specific Protocol
bMaxPacketSize0 8
idVendor 0x0404 **** Corp.
idProduct 0x0312 ***** Printer Receipt
bcdDevice 35.29
iManufacturer 1
iProduct 2
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 39
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 255 Vendor Specific Protocol
iInterface 7
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 1
[5] Enviado em 09/02/2012 - 20:05h Re: Desenvolvendo um driver para CUPS
Bus 001 Device 009: ID 0404:0312 NCR Corp. 7197 Printer Receipt
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 255 Vendor Specific Subclass
bDeviceProtocol 255 Vendor Specific Protocol
bMaxPacketSize0 8
idVendor 0x0404 NCR Corp.
idProduct 0x0312 7197 Printer Receipt
bcdDevice 35.29
iManufacturer 1 NCR
iProduct 2 7198 EPiC
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 39
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 255 Vendor Specific Protocol
iInterface 7 EPic
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 1
Começo a duvidar que o problema seja esse. Talvez seja o ModelNumber que esteja errado. Um tanto complicado saber como o CUPS associa um determinado driver com a impressora.
[7] Enviado em 09/02/2012 - 21:41h Re: Desenvolvendo um driver para CUPS
O udev deve ter um banco de dados de dispositivos. Talvez pelo fato da novidade do dispositivo, o nome não conste no banco de dados.
Observei no path do dispositivo, vários nodos com informações do produto, vendedor etc...
Observe o diretório no path do dispositivo informado pelo comando que informei:
/sys/devices/pci0000:00/0000:00:12.2
[9] Enviado em 10/02/2012 - 11:00h Re: Desenvolvendo um driver para CUPS
Desculpe pela perda de tempo, mas o problema era diverso ao que eu imaginava. A documentação do CUPS é bem dispersa e confusa, então eu imaginava que o CUPS detectava a impressora usando um arquivo PPD, quando na verdade ele usa backends.
De qualquer forma, aprender todos esses comandos foi útil para desenvolver o backend. Obrigado.