[~РЕШЕНО]CUPS драйвер для принтера Tysso PRP-085IIIT
oleg_kaa 26 марта, 2010 - 16:44
Я недавно написал cups-драйвер для принтера Tysso PRP-085IIIT. USB, Serial варианты работают замечательно.
Проблемы с сетевым принтером, он подвисает :( В ходе сравнения ip-пакетов выяснилось, что виновата реализация tcp-стека в принтере, при этом ядро linux генерирует вот такие вот сообщения:
TCP: Treason uncloaked! Peer 172.16.12.99:9100/49720 shrinks window 1286392020:1286392743. Repaired. TCP: Treason uncloaked! Peer 172.16.12.99:9100/49720 shrinks window 1286392020:1286392743. Repaired. TCP: Treason uncloaked! Peer 172.16.12.99:9100/50364 shrinks window 3125622750:3125623473. Repaired. TCP: Treason uncloaked! Peer 172.16.12.99:9100/50364 shrinks window 3125622750:3125623473. Repaired. TCP: Treason uncloaked! Peer 172.16.12.99:9100/50364 shrinks window 3125622750:3125623473. Repaired. TCP: Treason uncloaked! Peer 172.16.12.99:9100/50364 shrinks window 3125622750:3125623473. Repaired. TCP: Treason uncloaked! Peer 172.16.12.99:9100/50364 shrinks window 3125622750:3125623473. Repaired. TCP: Treason uncloaked! Peer 172.16.12.99:9100/50364 shrinks window 3125622750:3125623473. Repaired. TCP: Treason uncloaked! Peer 172.16.12.99:9100/50364 shrinks window 3125622750:3125623473. Repaired. TCP: Treason uncloaked! Peer 172.16.12.99:9100/50364 shrinks window 3125622750:3125623473. Repaired.
В общем одни и теже данные посланные напрямую и через redir на винде показывают такие результаты:
linux(ПК) => windows(ПК) => printer = РАБОТАЕТ! linux(ПК) => printer = НЕ РАБОТАЕТ!
А теперь вопрос :) Как бы как то обойти эту проблему?
Проблему решил следующим образом:
Цитата:
1. В одной сети с принтером должен быть компьютер с Windows
2. На Windows компьютере надо запустить программу tcppm.exe
3. tcppm.exe -i192.168.0.1 9100 192.168.0.100 9100
4. В настройках Cups указать в качестве адреса 192.168.0.1
*где 192.168.0.1 - адрес Windows компьютера, 192.168.0.100 - адрес принтера
»
- Для комментирования войдите или зарегистрируйтесь
А можно без провокаций ? Где
А можно без провокаций ?
Где __конкретно__ кривизна ?
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
Где тут провокации?
Где тут провокации? :)
"виновата реализация tcp-стека в принтере"
Working on Gentoo Linux for Asus P535 and Qtopia :-)
Как заставить linux tcp-стек
как именно ? конкретно проблему __словами__ описать можно ? Логи и настройки винды можно увидеть ? Настройки стека на Линуксе тоже ?
П.С. Если хочешь поменять алгоритм изменения окна - так в ядре все для этого есть.
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
Нуу настройка винды и линукса
Нуу настройка винды и линукса по умолчанию.
Хочу сделать так что бы из linux печатало так же быстро как и из windows :)
Working on Gentoo Linux for Asus P535 and Qtopia :-)
это семечки, а вот в 2008-ом...
Интернеты опасносте!!! Как страшно жить...
Реализация TCP/IP стека в Gnu/Linux "кривая", а драйвер и стек Wnt "прямой", я правильно понимаю?
Ну я не знаю :) Надо бы
Ну я не знаю :) Надо бы проверить из под другой ОС что бы грешить на linux.
А так считаю кривым именно реализацию tcp-стека в принтере.
Working on Gentoo Linux for Asus P535 and Qtopia :-)
А так считаю кривым именно
A линукс хде ? :)
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
У меня на рабочей тачке :)
У меня на рабочей тачке :)
Working on Gentoo Linux for Asus P535 and Qtopia :-)
freebsd
Рекомендую начать с FreeBSD, есть старая городская легенда о том, что в Windows сетевой стек от FreeBSD*, и уязвимости типа ping of death в обеих OS как бы на это намекают и ipfw на виндовс хорошо прижился.
Еще можно попробовать "на кривизну" OpenSolaris, восторг и незабываемые ощущения "в гамаке на лыжах" гарантированы =)
* в win3.51, потом написали свой
[оффтоп] уязвимости ping of
[оффтоп]
уязвимости ping of deаth не существует. Курите литературу на эту тему. Хотя бы вот это http://bugtraq.ru/library/books/attack/chapter04/07.html
[/оффтоп]
Понимаете, для того, чтобы создать систему, подобную Linux, недостаточно быть хорошим кодером. Нужно быть еще и коварной сволочью. Линус Торвальдс
еще один "эксперт"?
0. пинг не обязательно связан с протоколом ICMP и утилитой ping
1.
hping -c 1 -p 23 -L 0 -M 0 172.31.31.1 -S -E ./junos-crash.pl -d 10 -O 7
2. таким образом, ping of death - это устоявшийся в определенных кругах жаргонизм, такие дела
P.S. срубало 9-ый Juniper с одного пакета наповал, встроенный МСЭ не спасал от такого "подарка"
Эксперт не эксперт, а понятие
Эксперт не эксперт, а понятие ping of death всегда связывал только с фрагментированным icmp, и не потому что ping, а потому что в литературе упоминается только это. За ликбез благодарю - приму к сведению. И за код тоже благодарю - проверю на днях :-)
Понимаете, для того, чтобы создать систему, подобную Linux, недостаточно быть хорошим кодером. Нужно быть еще и коварной сволочью. Линус Торвальдс
Есть модель попроще TYSSO
Есть модель попроще TYSSO PRP-058II. У Вас случайно нет для него драйвера?
Интересно, то говорят, что
Интересно, то говорят, что это не критично: http://www.opennet.ru/openforum/vsluhforumID1/51150.html
То подозревают хакеров и неверный MTU: http://forum.lissyara.su/viewtopic.php?f=47&t=12105
И что-то говорится здесь про gentoo нехорошее: http://lwn.net/Articles/92727/
возможно стоит на linux
возможно стоит на linux запретить изменение размера окна и установить его фикисрованным равным размеру окна у принтера.
а как это сделать?
а как это сделать?
Working on Gentoo Linux for Asus P535 and Qtopia :-)
net.ipv4.tcp_window_scaling =
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
Хм странно :) у меня только
Хм странно :) у меня только
Working on Gentoo Linux for Asus P535 and Qtopia :-)
Binary Increase Congestion
Я так понимаю надо решить квест, что же спер майкрософт из этих алгоритмов? :))
Working on Gentoo Linux for Asus P535 and Qtopia :-)
(:
У Microsoft нет необходимости поддерживать TCP/IP. Б.Гейтс, 1994.
Microsoft изобрела новый протокол. Мы назвали его TCP/IP. Б.Гейтс, 1995.
P.S. Knowledge Base Microsoft, там много чего есть
:(
Вы конечно, быть может, что то и написали для своего принтера, но не знать таких элементарных вещей как изменение размера окна (RFC793 & RFC1323)...
простая ссылка
see also man 7 tcp
tcp_adv_win_scale
Count buffering overhead as
bytes/2^tcp_adv_win_scale (if tcp_adv_win_scale >
0) or bytes-bytes/2^(-tcp_adv_win_scale), if it is
<= 0. The default is 2.
The socket receive buffer space is shared between
the application and kernel. TCP maintains part of
the buffer as the TCP window, this is the size of
the receive window advertised to the other end.
The rest of the space is used as the "application"
buffer, used to isolate the network from scheduling
and application latencies. The tcp_adv_win_scale
default value of 2 implies that the space used for
the application buffer is one fourth that of the
total.
...и далее.
Я написал по сути фильтр для
Я написал по сути фильтр для cups, это такая программа которая получает данные от cups и форматирует их в данные понятные принтеру.
Всю работу с сетью берет на себя cups, повторяю USB, Serial варианты принтера работают на ура :)
На уровне абстракции фильтра управлять размером окна как по мне глупо :) Просто какая то несовместимость linux с принтером %)
Working on Gentoo Linux for Asus P535 and Qtopia :-)
тем не менее rfc793 (:
RFC793:
The mechanisms provided allow a TCP to advertise a large window and to subsequently advertise a much smaller window without having accepted that
much data. This, so called "shrinking the window," is strongly discouraged. The robustness principle dictates that TCPs will not shrink the window themselves, but will be prepared for such behavior on the part of other TCPs.
The sending TCP must be prepared to accept from the user and send at least one octet of new data even if the send window is zero. The sending TCP must regularly retransmit to the receiving TCP even when the window is zero. Two minutes is recommended for the retransmission interval when the window is zero. This retransmission is essential to guarantee that when either TCP has a zero window the re-opening of the window will be reliably reported to the other.
When the receiving TCP has a zero window and a segment arrives it must still send an acknowledgment showing its next expected sequence number and current window (zero).
Ну и смысл мне цитировать
Ну и смысл цитировать RFC?
Мне бы разобраться почему через Windows печать идет на ура, а через Linux не хочет :)
Working on Gentoo Linux for Asus P535 and Qtopia :-)
Результат :)
http://www.kaa.org.ua/programmi/drayver-dlya-printera-prp-085iiit.html
Working on Gentoo Linux for Asus P535 and Qtopia :-)
(:
We are the champions - my friends! And we'll keep on fighting - till the end!
Но настройки апстолов/ядра в
Но настройки апстолов/ядра в REDMI были бы совсем не лишними.
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)