@node PPP @section Serial connection It is not trivial to run online @command{nncp-daemon}, @command{nncp-call} and @command{nncp-caller} commands over the serial link, because it is link without built-in error detection. For efficient usage you have to use some kind of window-sliding error correction protocol, like Kermit, ZMODEM, UUCP's g-protocol and similar well known ones. However TCP is already satisfying and existing protocol for the same purposes. So it would be more easier to bring up the IP interconnection and use TCP over it. Most distributions already have @url{https://en.wikipedia.org/wiki/Point-to-point_protocol, PPP} protocol out-of-box. Ordinary man page for @command{ppp} in FreeBSD is enough for being able to setup it: @itemize @item Enable PPP-aware default terminal to run @command{ppplogin} script: @example /etc/gettytab: default:pp=/usr/local/bin/ppplogin:@dots{} @end example @example /usr/local/bin/ppplogin: #!/bin/sh exec /usr/sbin/ppp -direct incoming @end example @item Enable listening on necessary UART: @example /etc/ttys: ttyU0 "/usr/libexec/getty 3wire.115200" vt100 on @end example @item Create @code{incoming} PPP profile, allowing authenticated @code{ppp} user to log in: @example /etc/ppp/ppp.conf: incoming: allow ppp disable deflate pred1 mppe protocomp vjcomp ipcp dns enable lqr # null-modem cables might not have carrier detection /etc/ppp/ppp.secret: ppp PASSWORD @end example @item Configure PPP client to access that server: @example /etc/ppp/ppp.conf: outgoing: set device /dev/cuaU0 set speed 115200 set dial set login set authname ppp set authkey PASSWORD disable deflate pred1 mppe protocomp vjcomp ipcp dns enable lqr @end example @end itemize That configuration does not negotiate any kind of IPv4 addresses, routing or DNS servers. Also all compression is turned off, because NNCP's traffic is encrypted and uncompressible. Only IPV6CP will negotiate IPv6 link-local addresses, on which you can run @ref{MCD, multicast discovered} daemons for simplicity.