File: tag_serial.html

package info (click to toggle)
lg-issue32 2-2
  • links: PTS
  • area: main
  • in suites: potato
  • size: 2,320 kB
  • ctags: 142
  • sloc: makefile: 36; ansic: 25; sh: 4
file content (199 lines) | stat: -rw-r--r-- 8,001 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
<!--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="./lg_toc32.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:answerguy@ssc.com">answerguy@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/ssc.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="./lg_toc32.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 ========================================================= -->