Page 3 of 12

Re: USB-принтеры для USB-ядра

Posted: Fri Apr 12, 2013 11:37 am
by SoUrcerer
Блин, это просто печально.

Re: USB-принтеры для USB-ядра

Posted: Fri Apr 12, 2013 11:54 am
by Albom
SoUrcerer wrote:Блин, это просто печально.
Да ладно, не все же принтеры можно завести. Но, думаю, многие со временем заработают.

Проверил ML-2015 с PostScript. Пока не работает.

Дома есть струйник Canon, на днях попробую и его.

Re: USB-принтеры для USB-ядра

Posted: Fri Apr 12, 2013 12:20 pm
by 0CodErr
Проверил usbother_ps.obj.
BOARDLOG.TXT (11.1 KiB)
Downloaded 259 times
Печати не было.

Re: USB-принтеры для USB-ядра

Posted: Fri Apr 12, 2013 6:08 pm
by Albom
Canon ip1700. Postscript. Не напечатало.

Re: USB-принтеры для USB-ядра

Posted: Fri Apr 12, 2013 6:58 pm
by SoUrcerer
Хм, логи выглядят хорошими. We need to go deeper.

Re: USB-принтеры для USB-ядра

Posted: Sat Apr 13, 2013 9:22 am
by SoUrcerer
Хренова оборжака. После печати из Windows на моём HP1200 точно так же, как и у всех, не получается ничего напечатать. А вот после Linux - пожалуйста!
Не уверен, что это относится ко всем принтерам, но суть вы поняли, да? Сейчас попробую запуститься в Windows, выключить компьютер "внештатным способом", и потестировать - хотя в теории сброс может отправляться на принтер сразу после печати.

Re: USB-принтеры для USB-ядра

Posted: Sat Apr 13, 2013 10:09 am
by SoUrcerer
Чудесатые чудеса. Мало того, что печать из Windows никак не влияет на печать из Колибри - так открываются еще более любопытные детали.
Обычная печать из Linux (Файл-Печать) тоже никак не помогает. Последовательность действий, которая у меня приводит к рабочему в Колибри принтеру, это:

Code: Select all

python
p=open("/dev/usb/lp0","w")
p.write("Hello")
p.close()
exit()
Утверждать не буду, но я думаю, что это примерно то же самое, что и сделать "cat file.txt /dev/usb/lp0" - я просто этого еще не пробовал.
После этого у меня отлично работают самые последние версии usbother на HP1200. Теперь у меня жгучее желание проверить и другие принтеры таким образом.

Кстати, отладочный вывод принтера "до" и "после" загрузки прошивки ничем не отличается. Принтер гордо рапортует:
{'product': 'HP LaserJet 1200', 'des': 'Hewlett-Packard LaserJet 1200', 'vid': 1008, 'mdl': 'HP LaserJet 1200', 'mfg': 'Hewlett-Packard', 'mem': '8MB', 'cmd': 'PJL,MLC,PCL,PCLXL,POSTSCRIPT', 'pid': 791, 'serial': '00CNCF264732', 'cls': 'PRINTER'}
Такие вот новости.
Вывод: печать в Windows с большой вероятностью не поможет совершить тестовую печать.
Вывод 2: нужно искать способ загружать прошивку в принтер из Колибри.

Re: USB-принтеры для USB-ядра

Posted: Sat Apr 13, 2013 10:44 am
by SoUrcerer
Раскуриваю код hplip, впечатляет. Драйвер HP делает дополнительные настройки при подключении - сейчас разбираюсь, какие именно.

Re: USB-принтеры для USB-ядра

Posted: Sat Apr 13, 2013 11:15 am
by SoUrcerer

Re: USB-принтеры для USB-ядра

Posted: Sat Apr 13, 2013 11:54 am
by SoUrcerer
Проверил, после печати из Haiku мой HP1200 тоже отлично печатает. В Haiku судя по исходникам поддержка usb printer в теории ничем не отличается от того, что делает usbother.obj, но
1) оно работает
2) оно работает с кучей принтеров

Re: USB-принтеры для USB-ядра

Posted: Sat Apr 13, 2013 12:16 pm
by Serge
Там может не один драйвер, а несколько.

Re: USB-принтеры для USB-ядра

Posted: Sat Apr 13, 2013 12:19 pm
by SoUrcerer
Нет, я внимательно посмотрел. Для всех usb-принтеров один "транспорт" (bulk write), и несколько драйверов, превращающих данные в pcl или что-то ещё. Возможно, данные pcl/ps из тех, что у меня есть, какие-то неправильные. Надо проверить.

Re: USB-принтеры для USB-ядра

Posted: Sat Apr 13, 2013 12:45 pm
by Serge
Драйвер Haiku перебирает доступные интерфейсы, проверяет endpoints и явно устанавливает текущую конфигурацию

Code: Select all

						((BUSBInterface*)interface)->SetAlternate(alt);

Re: USB-принтеры для USB-ядра

Posted: Sat Apr 13, 2013 1:18 pm
by SoUrcerer
Да, я обратил на это внимание. Однако, интерфейс должен подойти любой - 07/01/01, 07/01/02 и 07/01/03 (что явственно указано в конфигурации); endpoints у принтеров 07/01/02 ровно два, один in и один out, при этом мне интересен только out. Ядро при загрузке драйвера, насколько я понял, само выбирает и устанавливает конфигурацию. Поправьте, если я не прав.

Я не понимаю, почему после определенной последовательности действий принтер печатает из Колибри, но без неё - нет. Если понять, почему именно так - печать должна заработать везде.

Re: USB-принтеры для USB-ядра

Posted: Sat Apr 13, 2013 1:41 pm
by SoUrcerer
Сейчас сгенерировал PS-документ из Haiku и попробовал распечатать - no success. Возможно, "драйвер" PS шлет какие-то команды инициализации перед печатью - нужно это проверить.