old-www/LDP/LG/issue32/tag_serial.html

200 lines
7.8 KiB
HTML

<!--startcut ======================================================= -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html><head>
<META NAME="generator" CONTENT="lgazmail v1.1preB">
<TITLE>The Answer Guy 32:
Multiplexing the Computer -- ISDN Modem Connection
</TITLE>
<!-- ORIGINAL SUBJECT:
Mulitiple processes sharing one serial port
JTD SUBTITLE:
-->
</head>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#A000A0"
ALINK="#FF0000">
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <hr> <P>
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<H1 align="center"><A NAME="answer">
<img src="../gx/dennis/qbubble.gif" alt="" border="0" align="middle">
<a href="./index.html">The Answer Guy</a>
<img src="../gx/dennis/bbubble.gif" alt="" border="0" align="middle">
</A></H1>
<BR>
<H4 align="center">By James T. Dennis,
<a href="mailto:linux-questions-only@ssc.com">linux-questions-only@ssc.com</a>
<BR>Starshine Technical Services, <A HREF="http://www.starshine.org/">http://www.starshine.org/</A>
</H4>
<p><hr><p>
<!--endcut ========================================================= -->
<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Multiplexing the Computer -- ISDN Modem Connection</H3>
<p><strong>From Todd on 29 Jul 1998 </strong></p>
<!-- begin body -->
<p><strong>Is it possible to have more than one process accessing a single
serial port simultaneously? I have a USR Courier I ISDN, and would
like to use the analog B-channel for serving faxes using
Mgetty+Sendfax while the data channel is engaged. The problem is
that <tt>pppd</tt> locks the port and <tt>Mgetty</tt> times out while waiting on it.
Is there a way around this?
</strong></p>
<p><strong>Cheers,
<br>Todd
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50"
alt="(!)" border="0"
>The short answer is: you can <EM>NOT</EM> do what you want
from standard Unix/Linux. It would have to be via some
special (and probably proprietary) protocols and drivers
that would have to be supported by the Courier.
</blockquote>
<blockquote>It's certainly possible for multiple Unix/Linux processes
to concurrently access a file or device. It's just a
bad idea for serial devices. That, indeed, is the reason why
we mess with lock files. Without file locking our processes
will blithely step all over one another, disrupting
communications.
</blockquote>
<blockquote>Let's think about this a bit. You have your ISDN device
(If I recall correctly the Courier I is a combined NT1
and TA with analog modem/FAX support) connected to your
PC via a single serial line.
</blockquote>
<blockquote>When that line is carrying data, it's busy. In order
for it to carry two distinct streams of data there
would have to be some form of multiplexing going on.
This multiplexing would have to involve some protocol.
The device would have to have a method for encoding
and interlacing data from these two sources --- and
the system would have to have some way (some DRIVER)
for de-multiplexing it (splitting the original two
streams back out the single serial string).
</blockquote>
<blockquote>I've never heard of a device that does this. Any that
did would have to have drivers on the PC side ---
a Unix/Linux driver of this sort would undoubtedly
make the one serial port appear to be two (or more)
tty devices. (That would allow it to work with any
standard Unix/Linux utilities).
</blockquote>
<blockquote>PPP and SLIP have the effect of multiplexing multiple
connections over a serial line. Theoretically a smart
enough ISDN device could have its own IP address
assigned to it and insert its own TCP/IP packets over
your PPP/SLIP link when that was active. I've never
heard of such a device.
</blockquote>
<blockquote>Bonding the two B channels using the MP (multi-link
protocol) simply allows your two channels to act as
on highspeed interface. However this requires that
both B channels connect from your end to the same
point at the other end of the connenction (usually
the other B channel on the same physical device --
NT1 or NT2 at your ISP's end).
</blockquote>
<blockquote>In addition the top speed of a standard PC serial line
is 115200bps. The total bandwidth of your two B channels
is 128Kbps. Any multiplexing would involve some overhead
on this bandwidth. So the PC serial line becomes a
bottleneck even when you're just bonding the two B channels.
</blockquote>
<blockquote>Another approach would be to simply have two serial ports
on the ISDN TA/NT1. That would allow you to access the
analog services via one tty and the digital services
</blockquote>
<blockquote>The best resource I know of for info on ISDN would be
from Dan Kegel's pages:
</blockquote>
<blockquote><blockquote><code
><A HREF="http://alumni.caltech.edu/~dank/isdn"
>http://alumni.caltech.edu/~dank/isdn</A>
</code></blockquote></blockquote>
<blockquote>That should provide more than you wanted to know.
</blockquote>
<!-- end body -->
<!--startcut ======================================================= -->
<P> <hr> <P>
<H5 align="center"><a href="http://www.linuxgazette.com/copying.html"
>Copyright &copy;</a> 1998, James T. Dennis <BR>
Published in <I>Linux Gazette</I> Issue 32 September 1998</H5>
<P> <hr> <P>
<!--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-->
<table width="98%"><tr valign="center" align="center">
<td rowspan="3"><A HREF="./lg_answer32.html"><IMG
SRC="../gx/dennis/answernew.gif"
ALT="[ Answer Guy Index ]"></A></td>
<td><A HREF="tag_phreak.html">phreak</A>
<td><A HREF="tag_abandon.html">abandon</A>
<td><A HREF="tag_javaterm.html">javaterm</A>
<td><A HREF="tag_BBS.html">BBS</A>
<td><A HREF="tag_flaws.html">flaws</A>
<td><A HREF="tag_doslinux.html">doslinux</A>
<td><A HREF="tag_resume.html">resume</A>
</tr><tr valign="center" align="center">
<td><A HREF="tag_softwindows.html">softwindows</A>
<td><A HREF="tag_convert.html">convert</A>
<td><A HREF="tag_apache.html">apache</A>
<td><A HREF="tag_emulate.html">emulate</A>
<td><A HREF="tag_database.html">database</A>
<td><A HREF="tag_distrib.html">distrib</A>
<td><A HREF="tag_proxy.html">proxy</A>
</tr><tr valign="center" align="center">
<td><A HREF="tag_disable.html">disable</A>
<td><A HREF="tag_DVI.html">DVI</A>
<td><A HREF="tag_superblock.html">superblock</A>
<td><A HREF="tag_serial.html">serial</A>
<td><A HREF="tag_permission.html">permission</A>
<td><A HREF="tag_detach.html">detach</A>
<td><A HREF="tag_cdr.html">cdr</A>
</tr><tr valign="center" align="center">
<td><A HREF="tag_rs422.html">rs422</A>
<td><A HREF="tag_modem.html">modem</A>
<td><A HREF="tag_notfound.html">notfound</A>
<td><A HREF="tag_tuning.html">tuning</A>
<td><A HREF="tag_libc5.html">libc5</A>
<td><A HREF="tag_startup.html">startup</A>
<td><A HREF="tag_clock.html">clock</A>
<td><A HREF="tag_ping.html">ping</A>
</tr><tr valign="center" align="center">
<td><A HREF="tag_accounts.html">accounts</A>
<td><A HREF="tag_lilo.html">lilo</A>
<td><A HREF="tag_NDS.html">NDS</A>
<td><A HREF="tag_95slow.html">95slow</A>
<td><A HREF="tag_nonlinux.html">nonlinux</A>
<td><A HREF="tag_progenv.html">progenv</A>
<td><A HREF="tag_cluster.html">cluster</A>
<td><A HREF="tag_ftpd.html">ftpd</A>
</tr></table>
<P> <hr> <P>
<!--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-->
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif"
ALT="[ Table Of Contents ]"></A>
<A HREF="../index.html"><IMG SRC="../gx/homenew.gif"
ALT="[ Front Page ]"></A>
<A HREF="lg_bytes32.html"><IMG SRC="../gx/back2.gif"
ALT="[ Previous Section ]"></A>
<A HREF="./stemen.html"><IMG SRC="../gx/fwd.gif"
ALT="[ Next Section ]"></A>
<!--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-->
</body>
</html>
<!--endcut ========================================================= -->