From: <rj...@wo...> - 2001-05-06 18:08:54
|
I Parallel interface performance A major factor in the poor performance of the new usermode parallel interface is the use of usermode itself. I've been through this before. You cannot get really good performance of ECP in usermode on Linux. Speeds up to 30 KB/sec are easy. With great difficulty you can push it to 60 KB/sec. The 2.4 kernel (and 2.2 backports) provide the "ppdev" module for implementing customized protocols like 1284.4 in usermode applications. It provides basic building blocks like "negotiate" via ioctl()s. It provides efficient I/O transfer through the ioctl() modes and the read()/write() transfers. I've built customized protocols using ppdev and gotten over 350KB/sec transfer rates without any special effort. There may be some internal reason or Windows port reason for wanting the whole thing in usermode, but switching to the use of ppdev lets the development of the 1284.4 protocol remain usermode without losing the performance of kernel drivers. It also simplifies extending support beyond the generic x86 parallel device world. II Architecture Documentation When you get around to documenting the structure it would help to have a high level view of which parts perform what functions. What is mandatory for anything to work. What are the dependencies. I know that reading the source eventually reveals this, but having a short paragraph on each major part would help. I am planning to attach a G55 to a headless Linux box that hides under a desk. I have no need or desire for cute display stuff. It will get in the way. What I want is three things: 1) a printing daemon with reasonable network status reports. Something like CUPS for instance. 2) Good security. I do not want anything to run as root. (With ppdev the entire protocol can run as a spooler ID. I just need to give that ID permission to read and write the parallel device.) Anything that runs as root requires extensive code review and I do not have unlimited time. 3) A scan -> email. This is actually where some of the front panel features could be nice. If it lists the usernames that are members of a group (e.g. scan users) then the controls on the scanner could be used to select the username. Then the scan can be turned into a mail attachment and mailed to that user. (Again avoiding the need for anything to be root.) This gives me a nice shared light duty printer/scanner/copier. Which is what the G55 is for. I'm rummaging around through code and emails to figure out how to put this together. III USB How stable is the USB these days? Since I have no desire for cute graphics, can I improve stability by leaving out some portions? I understand that part of the stability problem is inherent in some buffering bugs internal to the G55. These seem to be related to query traffic, so things like eliminating the front panel emulation might help a lot. USB is more attractive from a performance and cabling point of view. In my case, the headless machine parallel port is already in use for something else, but it has spare USB ports. So I'm gradually working along the USB path. At the moment the G55 is just a copier, attached to nothing, since its previous Windows support host got moved. R Horn |