Subject: Re: ppp from alpha to i386
To: Chris Rupnik <chrisr@geeknet.montreal.qc.ca>
From: Eric Fox <eric@fox.phoenix.az.us>
List: port-i386
Date: 06/29/1999 20:13:33
On Tue, 29 Jun 1999, Chris Rupnik wrote:
> Jun 29 11:53:37 mallow pppd[350]: Serial link is not 8-bit clean:
> Jun 29 11:53:37 mallow pppd[350]: All received characters had bit 7 set to
> 0
From the ppp-HOWTO:
18.3. The syslog says "serial line is not 8 bit clean..."
There are variations on this too - such as serial line looped back
etc., and the cause can be one (or a sequence) of a number of things.
To understand what is going on here, it is necessary to grasp a bit of
what is going on behind the scenes in pppd itself.
When pppd starts up, it sends LCP (link control protocol) packets to
the remote machine. If it receives a valid response it then goes on to
the next stage (using IPCP - IP control protocol packets) and only
when this negotiation completes is the actual IP layer started so that
you can use the PPP link.
If there is no ppp server operating at the remote end when your PC
sends lcp packets, these get reflected by the login process at the far
end. As these packets use 8 bits, reflecting them strips the 8th bit
(remember, ASCII is a 7 bit code). PPP sees this and complains
accordingly.
There are several reasons this reflection can occur.
18.3.1. You are not correctly logging into the server
When your chat script completes, pppd starts on your PC. However, if
you have not completed the log in process to the server (including
sending any command required to start PPP on the server), PPP will
not start.
So, the lcp packets are reflected and you receive this error.
You need to carefully check and correct (if necessary) your chat
script (see above).
18.3.2. You are not starting PPP on the server
Some PPP servers require you to enter a command and/or a RETURN after
completing the log in process before the remote end starts ppp.
Check your chat script (see above).
If you log in manually and find you need to send a RETURN after this
to start PPP, simply add a blank expect/send pair to the end of your
chat script (an empty send string actually sends a RETURN).
18.3.3. The remote PPP process is slow to start
This one is a bit tricksy!
By default, your Linux pppd is compiled to send a maximum of 10 lcp
configuration requests. If the server is a bit slow to start up, all
10 such requests can be sent before the remote PPP is ready to receive
them.
On your machine, pppd sees all 10 requests reflected back (with the
8th bit stripped) and exits.
There are two ways round this:-
Add lcp-max-configure 30 to your ppp options. This increases the
maximum number of lcp configure packets pppd sends before giving up.
For really slow server, you may need even more than this.
Alternatively, you can get a bit tricksy in return. You may have
noticed that when you logged in by hand to the PPP server and PPP
started there, the first character of the ppp garbage that appears was
always the tilde character (~).
Using this knowledge we can add a new expect/send pair to the end of
the chat script which expects a tilde and sends nothing. This would
look like:-
______________________________________________________________________
\~ ''
______________________________________________________________________
Note: as the tilde character has a special meaning in the shell, it
must be escaped (and hence the leading backslash).
Let me know if this helps or just muddys the water more.
/\---/\ Eric J Fox
/ o o \ http://fox.phoenix.az.us
\.\ /./ ---------------------------
\@/ "Of course it runs NetBSD."