[Linux-parport] Connecting 2 PCs directly over an "8-wire Fast Laplink" cable

Robert Heller heller at deepsoft.com
Mon Jun 28 15:06:49 EDT 2004

In message <20040628203552.A11569 at pc199.ben.tuwien.ac.at>, Daniel Tahin writes:
>Thank you for the rash answer:-))
>No, of course not. Sorry I forgat to mention, that I don't need a really bi-di
>rectional communication. What I need is to set PC A in output-mode and PC B to
> input-mode, and do a transfer from A to B (like sending data to an external h
>arddisk or printer, that you said). Or is it basically impossible to "simulate
>" PC B as an paralell external device?

The parallel ports on PC are *physically* wired as 'masters'.  All PC
parallel ports are wired that way.  Just like the parallel ports on
printers are wired as 'slaves'.  Esentually, what you really do want *is*
bi-directional communication in a sense, just that it is output from one
PC and input from the other.

When I said that "The parallel port is a master-slave type of interface
-- it is NOT a symetrical bi-directional device.", I was refering to how
the control pins on the port are *wired*.  The *handshaking* pins on a PC
are wired in the opposite sense from the *handshaking* pins on a typical
'slave' device (such as a printer).  The handshaking is not symetrical. 
You cannot wire one-to-one the handshaking pins of one PC to another --
there is not a symetrical cross-wiring, like there is with RS232 ports
-- that is there is no 'null-modem' type of wiring for a parallel port
cable -- this is not what a Laplink cable is.  It is actually trivial to
use a RS232 serial port as a PC-to-PC data transfer.  All you need is a
null modem and the lz package installed.  You are just limited to the max BPS
setting (about 128Kbps with modern COM ports).  RS232 serial ports *are*
symetrical bi-directional devices.

You can "simulate" a PC as an external parallel device, but you have to
'fake' it.  You cannot use the normal hardware handshaking (which is
what allows a 'normal' external parallel device to have higher throughput),
since it just does not exist in a bi-directional sense.  Note that
although the parallel port on modern PC's does allow for bi-directional
I/O, the hardware handshaking is not meant to work that way.  The
*original* intent of the parallel port was for a printer.  Printers
traditionally only sink data (data flows from computer to printer,
never the other way around).  The handshaking is meant to allow the
printer to say 'I'm ready to get another byte' and for the computer to
say 'Here is a byte for you'.  There are soma additional pins for the
printer to say 'Help! I have no more paper' or 'Help! I have a
malfunction (eg a paper jam, out of ink, etc.)'. And that is it.  It is
possible to use one (or more) of these aux error pins as a 'data
available' pin, but this is a sort of hack and the I/O port hardware
won't be optimized for this use (eg if there is anything like a FIFO,
you won't be able to use it and the interupts are handled differently
and the data latching works differently, etc.).

The input function available with modern PCs does not really give the
PC any good way to suck in a continious stream of data in any trivial
way.  It can be used to read 8 random bits or something like that (such
as a bank of toggle switches or code in a dongle or read back a vendor
code from a printer).  Doing much more requires playing all sorts of
games, which means you get lots of overhead, which means your
'bandwidth' is limited.

>Am 2004.06.28 20:15 schrieb(en) Robert Heller:
>>In message <20040628200224.A11439 at pc199.ben.tuwien.ac.at>, Daniel Tahin write
>>>Hello Developers!
>>>Hopefully I'm here right. I would like to ask you about connecing two PCs ov
>>> a Laplink cable (on the paralell port). But this cable isn't a common Lapli
>>> cable that uses only 4 data lines; it uses each (8) data lines. Information
> a
>>>bout cross connecting the cable I put at "http://members.a1.net/e0226781/".
>>>It works well under Windows98, with 160-190Kbytes/sec (better than 50Kbytes/
>>>c with the cable that uses only 4 data lines:-))). I would like to ask you, 
>>>at is really the highest transfer rate, that could be reached with it? (I as
>>>you, because I think other paralell devices can do a higher transfer-speed w
>>>h 8 data lines? Or not?)
>>>I set the port to ECP, and EPP mode before doing any transfers, but I couldn
>>> go over 190Kbytes/sec.
>>The parallel port is a master-slave type of interface -- it is NOT a
>>symetrical bi-directional device.  What happens with ALL of the
>>'Laplink' parallel port hacks is some sort of hack to 'fake' a full
>>duplex interface -- this by its very nature will reduce you effective
>>throughput.  With a 'normal' paralell device (eg printer), there is a
>>clear master (computer) and slave (printer) relationship and no need to
>>fake anything.
>>If you really need high-speed bi-directional data transfer, get yourself
>>a pair of EtherNet NICs (either PCI cards and/or PCMCIA cards,
>>depending).  These cards are cheap enough and easy to get (Radio Shack
>>sells them).  With a Cat-5 crossover cable you can skip the switch.
>>It might also be possible to get better thn 190Kbytes/sec. thoughput
>>with either FireWire or USB 2.0, but I don't know of any PC-to-PC data
>>transfer software using either FireWire or USB 2.0.
>>>Best regards, and thanx for your answer.
>>>Linux-parport mailing list
>>>Linux-parport at lists.infradead.org
>>                                     \/
>>Robert Heller                        ||InterNet:   heller at cs.umass.edu
>>http://vis-www.cs.umass.edu/~heller  ||            heller at deepsoft.com
>>http://www.deepsoft.com              /\FidoNet:    1:321/153
>>Linux-parport mailing list
>>Linux-parport at lists.infradead.org
>Linux-parport mailing list
>Linux-parport at lists.infradead.org
Robert Heller                        ||InterNet:   heller at cs.umass.edu
http://vis-www.cs.umass.edu/~heller  ||            heller at deepsoft.com
http://www.deepsoft.com              /\FidoNet:    1:321/153

More information about the Linux-parport mailing list