pppd fails when running early in boot process

Hello,

I’ve been running into a problem lately that’s been a bit elusive. I’m using a Nova with a Raspberry Pi, and trying to configure the system to establish cellular connection on boot using systemd. Unfortunately, it looks like when attempting connection during the boot process, the connection fails with “timeout sending Config-Requests” error messages. If I disable the appropriate systemd service unit, however, and then manually start the service after SSHing into the Pi, the connection works as planned. It seems like there’s some dependency that’s not properly prepared on boot, but I can’t figure out what it is. Does anyone have any pointers?

systemd service description:

[Unit]
Description=Cellular Network through PPP
ConditionPathExists=/dev/ttyUSB1
After=dev-ttyUSB1.device network.target

[Service]
ExecStart=/usr/bin/pon nova-m
WorkingDirectory=/home/pi
StandardOutput=inherit
StandardError=inherit
User=root
Type=forking

[Install]
WantedBy=multi-user.target

Error messages at end of logs during failure:

Feb 18 19:13:56 raspberrypi pppd[550]: Serial connection established.
Feb 18 19:13:56 raspberrypi pppd[550]: Using interface ppp0
Feb 18 19:13:56 raspberrypi pppd[550]: **Connect: ppp0 <--> /dev/ttyUSB1**
Feb 18 19:13:58 raspberrypi pppd[550]: **PAP authentication succeeded**
Feb 18 19:14:42 raspberrypi pppd[550]: **CCP: timeout sending Config-Requests**
Feb 18 19:14:42 raspberrypi pppd[550]: **IPCP: timeout sending Config-Requests**
Feb 18 19:14:48 raspberrypi pppd[550]: **Connection terminated.**
Feb 18 19:14:49 raspberrypi pppd[550]: **Modem hangup**

Chatscript and peers files pulled from here: https://github.com/hologram-io/hologram-tools

I have ran into this and what I end up doing is adding a delay before my code executes. I believe it has to do with the order the system starts these services in and really the most consistent way we’ve found is just waiting a few seconds.