Board.KolibriOS.org

Official KolibriOS board
It is currently Sun May 26, 2019 12:18 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 170 posts ]  Go to page Previous 1 2 3 4 5 612 Next
Author Message
PostPosted: Sat Apr 13, 2013 1:50 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Посмотрел, не шлет он никаких команд. А вот PCL-драйвер шлет дополнительно
Code:
   AppendString("\033%-12345X@PJL JOB\n@PJL SET RESOLUTION=");
   string << dpi;
   AppendString(string.String());
   AppendString("\n@PJL ENTER LANGUAGE=PCLXL\n) HP-PCL XL;");

Но это никак не затмевает того факта, что PS не печатаются - а так быть не должно.


Top
   
PostPosted: Sat Apr 13, 2013 1:58 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Quote:
Ядро при загрузке драйвера, насколько я понял, само выбирает и устанавливает конфигурацию
Не знаю, исходников ядра нет. Попробуй установить конфигурацию.


Top
   
PostPosted: Sat Apr 13, 2013 8:39 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
В Linux через libusb не получается установить конфигурацию даже после detachKernelDriver - говорит, что device busy. В Колибри еще не пробовал.


Top
   
PostPosted: Mon Apr 15, 2013 1:51 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1619
В протоколе USB есть две команды, устанавливающие настройку, SET_CONFIGURATION и SET_INTERFACE. Первая ответственна за выбор из того, что на доске отладки пишется как "found USB device with ID ..., n configuration(s)", практически всегда конфигурация всего устройства ровно одна, команда SET_CONFIGURATION обязательна, ядро её посылает, драйвер может использовать только в очень редких случаях, причём драйвер класса устройств - вообще никогда. Вторая ответственна за выбор из того, что на доске отладки пишется как "USB interface class/subclass/protocol ..." и "note: alternate setting with ...", её ядро не посылает никогда, потому что здесь драйвер должен решать, как именно он хочет работать. По стандарту, если SET_INTERFACE не посылать, то интерфейс устройства должен работать как основная настройка, и я не думаю, что явная посылка что-то изменит.

_________________
Сделаем мир лучше!


Top
   
PostPosted: Wed Apr 17, 2013 10:19 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Угадайте, какие у меня новости? Потестировать Brother и Canon с Haiku не удалось - в упор не хочет загружаться на двух компах. Однако, тест с Brother дал интересные результаты. В Linux через cat filename > /dev/usb/lp0 не напечатался НИ ОДИН из моих тестовых файлов. Ни ascii, ни PostScript, ни PCL4. Файл PostScript дал те же результаты, что и в Колибри - принтер прогнал несколько пустых листов. Тогда я попробовал PCL5 - и, о чудо, он напечатался!
Я скомпоновал версию с PCL5-документом для Колибри - и она отлично напечаталась на Brother HL-2030R - как после Linux, так и после включения-выключения принтера.
Вывод: не все версии PCL одинаково полезны. Не все принтеры одинаково умны.
Canon, однако, PCL5-документ печатать отказывается - буду еще копать. В скором времени выложу драйвер с PCL5-документом.


Top
   
PostPosted: Wed Apr 17, 2013 10:28 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Тестовые драйверы PCL5 и PostScript level1. В теории должны пониматься большинством принтеров.
Жду результатов тестов.
Пробовать лучше оба. Как уже говорилось, на результат не влияет печать из Windows - хотя может повлиять печать из Haiku или cat file > /dev/usb/lp0 (хотя и не ясно, почему).


Attachments:
usbother_ps1.obj [2.94 KiB]
Downloaded 83 times
usbother_pcl5.obj [15.83 KiB]
Downloaded 86 times
Top
   
PostPosted: Wed Apr 17, 2013 11:11 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Почитал про Canon. Люди пытались общаться с ним через PCL и PS, но безуспешно - как и я.
Quote:
Like most inexpensive inkjet printers, the Pixma MP250 doesn't use either PCL or Postscript. The printer does not have an on-board processor, so is designed to receive data from the sending computer in an already rendered (pixel-based) format.


Top
   
PostPosted: Wed Apr 17, 2013 12:21 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
hp LaserJet 1010 (DOT4) (VID_03F0; PID_0C17)
Проверил — печати не было. В обоих случаях пишет "USB device initialization failed".

usbother_ps1:
Spoiler: Show
Code:
K : edx=00006871
K : has_ownership
K : enter ehci_init
K : HCSPARAMS=00104208, HCCPARAMS=00006871
K : stopped
K : reset ok
K : attaching to IRQ 0B
K : EHCI controller at 00:EF with 8 ports initialized
K : UHCI controller at 00:E8 with 2 ports initialized
K : [43] connect status changed, 0082/0080
K : UHCI controller at 00:E9 with 2 ports initialized
K : [43] connect status changed, 0092/0080
K : [43] connect status changed, 0082/0080
K : UHCI controller at 00:EA with 2 ports initialized
K : UHCI controller at 00:EB with 2 ports initialized
K : [44] EHCI 80B58094: status of port 1 changed to 00001803
K : [44] EHCI 80B58094: status of port 2 changed to 00001803
K : [44] EHCI 80B58094: status of port 3 changed to 00001803
K : kernel SVN r3460
K : 1 CPU detected
Zero-config service:
No Card found!
K : [55] EHCI 80B58094 port 1 state is 00001801
K : [55] EHCI 80B58094: port 1 has HS or FS device, resetting
K : [55] EHCI 80B58094 port 2 state is 00001801
K : [55] EHCI 80B58094 port 3 state is 00001801
=========  tmpdisk 0.45  =========
tmpdisk.obj driver loaded successfully
trying to add disk
disk size is not specified
10% from free RAM will be used, new DiskSize: 203 MB
K : [58] EHCI 80B58094: reset port 1 done
operation completed successfully
K : [60] EHCI 80B58094 status of port 1 is 00001005
K : address set in device
K : [60] EHCI 80B58094: port 2 has HS or FS device, resetting
K : async advance doorbell
K : async advance int
K : address set for controller
K : async advance doorbell
K : async advance int
K : device descriptor: 12 01 00 02 00 00 00 40 E8 04 0E 12 01 90 01 02 00 01
K : found USB device with ID 04E8:120E, 1 configuration(s)
K : config descriptor: 09 02 20 00 01 01 00 C0 00 09 04 00 00 02 08 06 50 01 07 05 81 02 00 02 00 07 05 04 02 00 02 00
K : USB interface class/subclass/protocol = 08/06/50
K : USB mass storage device detected
K : 1 logical unit(s)
K : media is ready
K : 0 attempts, 0 ticks
K : peripheral device type is 00
K : direct-access mass storage device detected
K : sector size is 512, last sector is 3854335
K : [62] EHCI 80B58094: reset port 2 done
K : [64] EHCI 80B58094 status of port 2 is 00001801
K : releasing to companion
K : [64] EHCI 80B58094: port 3 has HS or FS device, resetting
K : [64] EHCI 80B58094: status of port 2 changed to 00003002
K : [66] EHCI 80B58094: reset port 3 done
K : [68] EHCI 80B58094 status of port 3 is 00001801
K : releasing to companion
K : [68] EHCI 80B58094: status of port 3 changed to 00003002
K : [143] connect status changed, 0093/0091
K : [143] connect status changed, 0093/0091
K : [155] status 0280/0093
K : reset done at 155
K : [157] status 0095
K : address set in device
K : address set for controller
K : device descriptor: 12 01 10 01 FF FF FF 40 15 09 04 81 00 01 01 02 03 01
K : found USB device with ID 0915:8104, 1 configuration(s)
K : config descriptor: 09 02 DB 00 01 01 00 80 FA 09 04 00 00 03 FF FF FF 00 07 05 83 02 40 00 00 07 05 04 02 40 00 00 07 05 81 03 20 00 03 09 04 00 01 03 FF FF FF 00 07 05 82 01 F0 03 01 07 05 04 02 40 00 00 07 05 81 03 20 00 03 09 04 00 02 03 FF FF FF 00 07 05 82 01 90 03 01 07 05 04 02 40 00 00 07 05 81 03 20 00 03 09 04 00 03 03 FF FF FF 00 07 05 82 01 E0 02 01 07 05 04 02 40 00 00 07 05 81 03 20 00 03 09 04 00 04 03 FF FF FF 00 07 05 82 01 C0 01 01 07 05 04 02 40 00 00 07 05 81 03 20 00 03 09 04 00 05 03 FF FF FF 00 07 05 82 01 F0 00 01 07 05 04 02 40 00 00 07 05 81 03 20 00 03 09 04 00 06 03 FF FF FF 00 07 05 82 01 50 00 01 07 05 04 02 40 00 00 07 05 81 03 20 00 03
K : USB interface class/subclass/protocol = FF/FF/FF
K : unknown device
K : USB device initialization failed
K : note: alternate setting with FF/FF/FF
K : note: alternate setting with FF/FF/FF
K : note: alternate setting with FF/FF/FF
K : note: alternate setting with FF/FF/FF
K : note: alternate setting with FF/FF/FF
K : note: alternate setting with FF/FF/FF
K : [159] status 0280/0093
K : reset done at 159
K : [161] status 0095
K : address set in device
K : address set for controller
K : device descriptor: 12 01 10 01 00 00 00 08 F0 03 17 0C 00 01 01 02 03 01
K : found USB device with ID 03F0:0C17, 1 configuration(s)
K : config descriptor: 09 02 4E 00 01 01 00 C0 01 09 04 00 00 03 07 01 03 00 07 05 01 02 40 00 00 07 05 81 02 40 00 00 07 05 82 03 08 00 FF 09 04 00 01 02 07 01 02 00 07 05 01 02 40 00 00 07 05 81 02 40 00 00 09 04 00 02 01 07 01 01 00 07 05 01 02 40 00 00
K : USB interface class/subclass/protocol = 07/01/03
K : USB printer attached
K : alloc memory
K : look for IN endpoint
K : next descriptor
K : all data in descriptor?
K : check if OUT
K : load params from descriptor
K : open pipe!
K : pipe is opened
K : start printing
K : return something after USB Normal Transfer...
K : USB device initialization failed
K : note: alternate setting with 07/01/02
K : note: alternate setting with 07/01/01
K : print finishedK : destroy app object

usbother_pcl5:
Spoiler: Show
Code:
K : edx=00006871
K : has_ownership
K : enter ehci_init
K : HCSPARAMS=00104208, HCCPARAMS=00006871
K : stopped
K : reset ok
K : attaching to IRQ 0B
K : EHCI controller at 00:EF with 8 ports initialized
K : UHCI controller at 00:E8 with 2 ports initialized
K : [42] connect status changed, 0082/0080
K : UHCI controller at 00:E9 with 2 ports initialized
K : [42] connect status changed, 0092/0080
K : [42] connect status changed, 0082/0080
K : UHCI controller at 00:EA with 2 ports initialized
K : UHCI controller at 00:EB with 2 ports initialized
K : [43] EHCI 80B58094: status of port 1 changed to 00001803
K : [43] EHCI 80B58094: status of port 2 changed to 00001803
K : [43] EHCI 80B58094: status of port 3 changed to 00001803
K : kernel SVN r3460
K : 1 CPU detected
Zero-config service:
No Card found!
K : [53] EHCI 80B58094 port 1 state is 00001801
K : [53] EHCI 80B58094: port 1 has HS or FS device, resetting
K : [53] EHCI 80B58094 port 2 state is 00001801
K : [53] EHCI 80B58094 port 3 state is 00001801
K : [55] EHCI 80B58094: reset port 1 done
=========  tmpdisk 0.45  =========
tmpdisk.obj driver loaded successfully
trying to add disk
disk size is not specified
10% from free RAM will be used, new DiskSize: 203 MB
K : [58] EHCI 80B58094 status of port 1 is 00001005
operation completed successfully
K : address set in device
K : [58] EHCI 80B58094: port 2 has HS or FS device, resetting
K : async advance doorbell
K : async advance int
K : address set for controller
K : async advance doorbell
K : async advance int
K : device descriptor: 12 01 00 02 00 00 00 40 E8 04 0E 12 01 90 01 02 00 01
K : found USB device with ID 04E8:120E, 1 configuration(s)
K : config descriptor: 09 02 20 00 01 01 00 C0 00 09 04 00 00 02 08 06 50 01 07 05 81 02 00 02 00 07 05 04 02 00 02 00
K : USB interface class/subclass/protocol = 08/06/50
K : USB mass storage device detected
K : 1 logical unit(s)
K : media is ready
K : 0 attempts, 0 ticks
K : peripheral device type is 00
K : direct-access mass storage device detected
K : sector size is 512, last sector is 3854335
K : [60] EHCI 80B58094: reset port 2 done
K : [62] EHCI 80B58094 status of port 2 is 00001801
K : releasing to companion
K : [62] EHCI 80B58094: port 3 has HS or FS device, resetting
K : [62] EHCI 80B58094: status of port 2 changed to 00003002
K : [64] EHCI 80B58094: reset port 3 done
K : [66] EHCI 80B58094 status of port 3 is 00001801
K : releasing to companion
K : [66] EHCI 80B58094: status of port 3 changed to 00003002
K : [142] connect status changed, 0093/0091
K : [142] connect status changed, 0093/0091
K : [154] status 0280/0093
K : reset done at 154
K : [156] status 0095
K : address set in device
K : address set for controller
K : device descriptor: 12 01 10 01 FF FF FF 40 15 09 04 81 00 01 01 02 03 01
K : found USB device with ID 0915:8104, 1 configuration(s)
K : config descriptor: 09 02 DB 00 01 01 00 80 FA 09 04 00 00 03 FF FF FF 00 07 05 83 02 40 00 00 07 05 04 02 40 00 00 07 05 81 03 20 00 03 09 04 00 01 03 FF FF FF 00 07 05 82 01 F0 03 01 07 05 04 02 40 00 00 07 05 81 03 20 00 03 09 04 00 02 03 FF FF FF 00 07 05 82 01 90 03 01 07 05 04 02 40 00 00 07 05 81 03 20 00 03 09 04 00 03 03 FF FF FF 00 07 05 82 01 E0 02 01 07 05 04 02 40 00 00 07 05 81 03 20 00 03 09 04 00 04 03 FF FF FF 00 07 05 82 01 C0 01 01 07 05 04 02 40 00 00 07 05 81 03 20 00 03 09 04 00 05 03 FF FF FF 00 07 05 82 01 F0 00 01 07 05 04 02 40 00 00 07 05 81 03 20 00 03 09 04 00 06 03 FF FF FF 00 07 05 82 01 50 00 01 07 05 04 02 40 00 00 07 05 81 03 20 00 03
K : USB interface class/subclass/protocol = FF/FF/FF
K : unknown device
K : USB device initialization failed
K : note: alternate setting with FF/FF/FF
K : note: alternate setting with FF/FF/FF
K : note: alternate setting with FF/FF/FF
K : note: alternate setting with FF/FF/FF
K : note: alternate setting with FF/FF/FF
K : note: alternate setting with FF/FF/FF
K : [158] status 0280/0093
K : reset done at 158
K : [160] status 0095
K : address set in device
K : address set for controller
K : device descriptor: 12 01 10 01 00 00 00 08 F0 03 17 0C 00 01 01 02 03 01
K : found USB device with ID 03F0:0C17, 1 configuration(s)
K : config descriptor: 09 02 4E 00 01 01 00 C0 01 09 04 00 00 03 07 01 03 00 07 05 01 02 40 00 00 07 05 81 02 40 00 00 07 05 82 03 08 00 FF 09 04 00 01 02 07 01 02 00 07 05 01 02 40 00 00 07 05 81 02 40 00 00 09 04 00 02 01 07 01 01 00 07 05 01 02 40 00 00
K : USB interface class/subclass/protocol = 07/01/03
K : USB printer attached
K : alloc memory
K : look for IN endpoint
K : next descriptor
K : all data in descriptor?
K : check if OUT
K : load params from descriptor
K : open pipe!
K : pipe is opened
K : start printing
K : return something after USB Normal Transfer...
K : USB device initialization failed
K : note: alternate setting with 07/01/02
K : note: alternate setting with 07/01/01
K : print finished


Top
   
PostPosted: Wed Apr 17, 2013 12:35 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
This is DOT4 printer, it should use some MFP protocol. Try to print test page from Haiku or "cat some > /dev/usb/lp0" in Linux, and then try these drivers again.


Top
   
PostPosted: Wed Apr 17, 2013 2:43 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Файл wireshark с логами USB принтера DOT4. Вплоть до начала печати всё круто и понятно:
запрос конфигурации, установка конфигурации, выбор интерфейса, запрос информации об устройстве - модель, номер и так далее. Устройство видится как 8.0
В момент 613.29 происходит начало отправки данных на принтер - открытие интерфейса (как file descriptor), а затем отправка данных BULK OUT на устройство 8.1 (я так понимаю, имеется в виду устройство 8 endpoint 1 на чтение и запись). BULK IN перед началом печати не понятен. Это, возможно, проверка на BUSY - в стандарте 1284.4 написано, что перед отправкой данных нужно узнать, BUSY принтер или нет.
То есть перед отправкой данных через BULK OUT, нужно сделать BULK IN, и ожидать окончания отправки - так что ли? Надо попробовать.


Attachments:
dot4 [31.94 KiB]
Downloaded 82 times
Top
   
PostPosted: Wed Apr 17, 2013 3:18 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1619
Quote:
выбор интерфейса

Выбирается не умолчальный интерфейс 07/01/03, а интерфейс с 07/01/02.

_________________
Сделаем мир лучше!


Top
   
PostPosted: Wed Apr 17, 2013 3:23 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Так, это очень интересно, спасибо. А как установить нужный интерфейс?
p.s. В теории 07/01/03 тоже должен работать - ну да ладно, пока что не будем на него обращать внимание.


Top
   
 Post subject:
PostPosted: Wed Apr 17, 2013 3:29 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1619
Функцией Usbcontroltransferasync отправить запрос SET_INTERFACE. Параметры запроса описаны в главе 9 спецификации USB.

_________________
Сделаем мир лучше!


Top
   
PostPosted: Wed Apr 17, 2013 4:00 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Установка альтернативного интерфейса не помогает. Видимо, особая уличная магия.


Top
   
PostPosted: Wed Apr 17, 2013 4:18 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
А вот и нет. В Linux - очень даже дает. Отсюда делаем вывод, что я делаю это неправильно. Перепроверю.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 170 posts ]  Go to page Previous 1 2 3 4 5 612 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited