# 1. Clone repo
git clone https://github.com/itspoppadom/clipper-lte-ppp-setup.git
cd clipper-lte-ppp-setup
# 2. Install deps
sudo apt update
sudo apt install -y python3 python3-pip ppp
pip3 install pyserial RPi.GPIO
# 3. Enable UART (if not already)
sudo raspi-config
# Interface Options → Serial Port → Disable login shell, Enable hardware
sudo reboot
# 4. Make script executable
chmod +x /home/pi/clipper-lte-ppp-setup/clipper_init.py
# 5. Edit APN (optional)
nano /home/pi/clipper-lte-ppp-setup/clipper_init.py
# 6. Create chat script
sudo nano /etc/chatscripts/clipper
# (paste from README and set your APN)
# 7. Run
sudo python3 /home/pi/clipper-lte-ppp-setup/clipper_init.py
# 8. Test
ip addr show ppp0
ping -I ppp0 8.8.8.8Start by cloning the project from GitHub:
git clone https://github.com/itspoppadom/clipper-lte-ppp-setup.git
cd clipper-lte-ppp-setupAll file paths in this guide assume the repository is located at:
/home/pi/clipper-lte-ppp-setup
This project provides a simple Python script to:
- Power on a Clipper LTE modem via GPIO
- Initialize it with AT commands
- Configure the APN
- Start a PPP connection (
ppp0) over UART
It is designed for use with a Raspberry Pi (tested on Pi Zero 2 W) using /dev/serial0.
- Raspberry Pi (Zero 2 W recommended)
- Clipper LTE Breakout Board
- SIM card with active data plan
- Power supply (stable 5V recommended)
| Clipper LTE | Raspberry Pi (BCM) |
|---|---|
| TX | RX (GPIO 15) |
| RX | TX (GPIO 14) |
| GND | GND |
| VCC | 5V |
| 3V3 | 3.3V |
| PWRKEY | GPIO 17 |
| RESET | GPIO 27 |
-
The Clipper LTE breakout can be powered directly from the Raspberry Pi Zero 2 W:
- Connect 5V for main power
- Connect 3.3V if required by the board logic
-
Ensure your Pi power supply can provide sufficient current (LTE modules can draw bursts of current during transmission).
-------------|--------------------| | TX | RX (GPIO 15) | | RX | TX (GPIO 14) | | GND | GND | | VCC | 5V | | PWRKEY | GPIO 17 | | RESET | GPIO 27 |
The NETLIGHT pin indicates modem status (blinking patterns = network state).
| Clipper LTE | Raspberry Pi |
|---|---|
| NETLIGHT | GPIO 22 (example) |
# NETLIGHT = 22 # Optional status LED pin
# GPIO.setup(NETLIGHT, GPIO.IN)
# Optional: monitor NETLIGHT
# def read_netlight():
# state = GPIO.input(NETLIGHT)
# print("NETLIGHT:", "ON" if state else "OFF")Run:
sudo raspi-config-
Interface Options → Serial Port
- Disable login shell over serial
- Enable serial hardware
Reboot:
sudo rebootsudo apt update
sudo apt install -y python3 python3-pip ppp
pip3 install pyserial RPi.GPIOsudo nano /etc/chatscripts/clipperPaste:
ABORT "NO CARRIER"
ABORT "ERROR"
ABORT "NO DIALTONE"
ABORT "BUSY"
ABORT "NO ANSWER"
TIMEOUT 10
"" AT
OK ATE0
OK AT+CGDCONT=1,"IP","your.apn.here"
OK ATD*99#
CONNECT ""
Replace your.apn.here with your carrier APN.
The script is already included in the repository.
Ensure it is executable:
chmod +x /home/pi/clipper-lte-ppp-setup/clipper_init.py
---
## Test Manually
```bash
sudo python3 /home/pi/clipper-lte-ppp-setup/clipper_init.py
If successful:
ip addr show ppp0
ping -I ppp0 8.8.8.8Create service file:
sudo nano /etc/systemd/system/clipper.servicePaste:
[Unit]
Description=Clipper LTE Modem Init + PPP
After=network.target
[Service]
ExecStart=/usr/bin/python3 /home/pi/clipper-lte-ppp-setup/clipper_init.py
Restart=on-failure
User=root
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable clipper.service
sudo systemctl start clipper.servicesudo journalctl -u clipper.service -f- Check chat script APN
- Ensure modem returns
CONNECT - Verify UART wiring (TX/RX swapped correctly)
- Check power supply
- Verify PWRKEY pulse timing
- Ensure correct serial port (
/dev/serial0)
- Run manually with debug:
sudo pppd /dev/serial0 115200 connect '/usr/sbin/chat -v -f /etc/chatscripts/clipper' debug- UART limits speed (~115200–460800 baud), so LTE throughput is capped
- SMS and AT commands can run alongside PPP when properly managed
- For higher speeds, consider USB-based LTE (QMI mode)
MIT License
Start by cloning the project from GitHub:
sudo apt install git # If not already installed
git clone https://github.com/itspoppadom/clipper-lte-ppp-setup.git
cd clipper-lte-ppp-setupAll file paths in this guide assume the repository is located at:
/home/pi/clipper-lte-ppp-setup
This project provides a simple Python script to:
- Power on a Clipper LTE modem via GPIO
- Initialize it with AT commands
- Configure the APN
- Start a PPP connection (
ppp0) over UART
It is designed for use with a Raspberry Pi (tested on Pi Zero 2 W) using /dev/serial0.
- Raspberry Pi (Zero 2 W recommended)
- Clipper LTE Breakout Board
- SIM card with active data plan
- Power supply (stable 5V recommended)
| Clipper LTE | Raspberry Pi (BCM) |
|---|---|
| TX | RX (GPIO 15) |
| RX | TX (GPIO 14) |
| GND | GND |
| VCC | 5V |
| 3V3 | 3.3V |
| PWRKEY | GPIO 17 |
| RESET | GPIO 27 |
-
The Clipper LTE breakout can be powered directly from the Raspberry Pi Zero 2 W:
- Connect 5V for main power
- Connect 3.3V if required by the board logic
-
Ensure your Pi power supply can provide sufficient current (LTE modules can draw bursts of current during transmission).
-------------|--------------------| | TX | RX (GPIO 15) | | RX | TX (GPIO 14) | | GND | GND | | VCC | 5V | | PWRKEY | GPIO 17 | | RESET | GPIO 27 |
The NETLIGHT pin indicates modem status (blinking patterns = network state).
| Clipper LTE | Raspberry Pi |
|---|---|
| NETLIGHT | GPIO 22 (example) |
# NETLIGHT = 22 # Optional status LED pin
# GPIO.setup(NETLIGHT, GPIO.IN)
# Optional: monitor NETLIGHT
# def read_netlight():
# state = GPIO.input(NETLIGHT)
# print("NETLIGHT:", "ON" if state else "OFF")Run:
sudo raspi-config-
Interface Options → Serial Port
- Disable login shell over serial
- Enable serial hardware
Reboot:
sudo rebootsudo apt update
sudo apt install -y python3 python3-pip ppp
pip3 install pyserial RPi.GPIOsudo nano /etc/chatscripts/clipperPaste:
ABORT "NO CARRIER"
ABORT "ERROR"
ABORT "NO DIALTONE"
ABORT "BUSY"
ABORT "NO ANSWER"
TIMEOUT 10
"" AT
OK ATE0
OK AT+CGDCONT=1,"IP","your.apn.here"
OK ATD*99#
CONNECT ""
Replace your.apn.here with your carrier APN.
The script is already included in the repository.
Ensure it is executable:
chmod +x /home/pi/clipper-lte-ppp-setup/clipper_init.py
---
## Test Manually
```bash
sudo python3 /home/pi/clipper-lte-ppp-setup/clipper_init.py
If successful:
ip addr show ppp0
ping -I ppp0 8.8.8.8Create service file:
sudo nano /etc/systemd/system/clipper.servicePaste:
[Unit]
Description=Clipper LTE Modem Init + PPP
After=network.target
[Service]
ExecStart=/usr/bin/python3 /home/pi/clipper-lte-ppp-setup/clipper_init.py
Restart=on-failure
User=root
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable clipper.service
sudo systemctl start clipper.servicesudo journalctl -u clipper.service -f- Check chat script APN
- Ensure modem returns
CONNECT - Verify UART wiring (TX/RX swapped correctly)
- Check power supply
- Verify PWRKEY pulse timing
- Ensure correct serial port (
/dev/serial0)
- Run manually with debug:
sudo pppd /dev/serial0 115200 connect '/usr/sbin/chat -v -f /etc/chatscripts/clipper' debug- UART limits speed (~115200–460800 baud), so LTE throughput is capped
- SMS and AT commands can run alongside PPP when properly managed
- For higher speeds, consider USB-based LTE (QMI mode)
MIT License