I have my 1989 Mac SE/30 connecting into my Debian 10 router using PPP over a null modem USB RS232 adapter.

When I want to connect I first have to SSH into debian from another machine and run

# pppd nodetach /dev/ttyUSB0 57600 -crtscts

Furthermore, if the Mac disconnects then pppd quits and in order to reconnect I have to do the same all over again.

Is is possile to get pppd to listen on ttyUSB0 automatically? And to stay up?

(All of the documentation I've found is intended for using PPP as a client for dial-up internet connections, not as a server.)


mini31 # pwd
mini31 # ls -l
total 4
-rw-r--r-- 1 root root 187 Jun 14 12:12 pppd-ttyUSB0.service
mini31 # cat pppd-ttyUSB0.service
ExecStart=/usr/sbin/pppd nodetach /dev/ttyUSB0 57600 -crtscts

Description=pppd on ttyUSB0 for SE/30
mini31 # systemctl status pppd-ttyUSB0
Unit pppd-ttyUSB0.service could not be found.
mini31 #

Update 2

Looks like /etc/systemd/system is the only folder that works.

Furthermore, you have to:

# systemctl daemon-reload
mini31 # systemctl status pppd-ttyUSB0
● pppd-ttyUSB0.service - pppd on ttyUSB0 for Macs
   Loaded: loaded (/etc/systemd/system/pppd-ttyUSB0.service; static; vendor preset: enabled)
   Active: inactive (dead)
mini31 # systemctl enable pppd-ttyUSB0
The unit files have no installation config (WantedBy=, RequiredBy=, Also=,
Alias= settings in the [Install] section, and DefaultInstance= for template
units). This means they are not meant to be enabled using systemctl.

Possible reasons for having this kind of units are:
• A unit may be statically enabled by being symlinked from another unit's
  .wants/ or .requires/ directory.
• A unit's purpose may be to act as a helper for some other unit which has
  a requirement dependency on it.
• A unit may be started when needed via activation (socket, path, timer,
  D-Bus, udev, scripted systemctl call, ...).
• In case of template units, the unit is meant to be enabled with some
  instance name specified.
mini31 # systemctl start pppd-ttyUSB0

(Don't know what all that nonsense from enable is about.)

  • You need an Install section. Check this for a basic service. You would then change the Restart policy. By the way, I love your setup. Commented Jun 14, 2021 at 14:38

1 Answer 1


Create a service that runs this daemon. In systemd services, you can use the Restart= option to automatically start the service again when it exits.

ExecStart=-/usr/bin/pppd nodetach /dev/ttyUSB0 57600 -crtscts

Your situation is actually very similar to [email protected], only with pppd instead of getty, which normally waits for a login prompt at the specified tty. So it might be useful to look at that unit for inspiration – for example, you might want to make this a template unit (named pppd@ and using /dev/%i as the device path); you might want to include Conflicts=getty@%i.service in the [Unit] section; and so on.

(Indeed in a 'sysvinit' environment I would've suggested creating an /etc/inittab entry for pppd, so that it would be automatically restarted by init just like getty is.)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .