Symptoms:
$ mmcli -L
No modems were found
$ lsusb
Bus 003 Device 010: ID 1e0e:9205 Qualcomm / Option SimTech SIM7080Modem appears in lsusb but ModemManager doesn't detect it.
Causes:
- ModemManager doesn't recognize the modem USB ID
- ModemManager service not running or crashed
- Modem needs firmware initialization
- udev rules not loaded
Solutions:
The SIM7080 may require additional initialization. Try these steps:
# 1. Check if modem is on USB
lsusb | grep -i "1e0e:9205"
# 2. Check for serial devices
ls -la /dev/ttyUSB*
# 3. Restart ModemManager
sudo systemctl restart ModemManager
sleep 5
# 4. Check again
mmcli -LIf still not detected:
# 5. Check ModemManager logs
sudo journalctl -u ModemManager -n 50
# 6. Try manual USB reset
sudo systemctl stop ModemManager
sleep 2
echo "1-1" | sudo tee /sys/bus/usb/drivers/usb/unbind
sleep 3
echo "1-1" | sudo tee /sys/bus/usb/drivers/usb/bind
sleep 3
sudo systemctl start ModemManager
sleep 5
mmcli -LUse the provided script:
sudo /opt/cellular/fix-modem-detection.shThis script handles both SIM7600 and SIM7080 modems.
Symptoms:
$ sudo mmcli -m 0
error: couldn't find modemCauses:
- ModemManager crashed or lost connection to modem
- USB connection interrupted
- Modem firmware issue
- Power supply problem
Solutions:
Use the emergency reset script:
sudo /opt/cellular/reset-modem.shThis script will:
- Stop ModemManager
- Rescan USB bus
- Restart ModemManager
- Re-detect the modem
- Verify modem is accessible
Then reconnect:
sudo /opt/cellular/connect-cellular-robust.shNote: Update paths to match your installation directory.
Step 1: Check if modem is on USB
lsusb | grep -i "SimTech"If you see output like Bus 003 Device 003: ID 1e0e:9001 Qualcomm / Option SimTech, the modem is detected by the system.
Step 2: Check if ModemManager is running
sudo systemctl status ModemManagerIf not running, start it:
sudo systemctl start ModemManagerStep 3: Restart ModemManager
sudo systemctl restart ModemManager
sleep 3
mmcli -LStep 4: Check serial devices
ls -la /dev/ttyUSB*You should see /dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2, etc.
Step 5: Manual USB reset (Last Resort)
# Unplug USB cable
# Wait 10 seconds
# Plug USB cable back in
# Wait 5 seconds
sudo systemctl restart ModemManager
sleep 3
mmcli -LSymptoms:
$ mmcli -m 0
# Shows modem but connection failsSolutions:
Check modem status:
sudo mmcli -m 0Look for:
State: registered(good)State: searching(bad - not finding network)State: denied(bad - SIM issue)
Check SIM card:
sudo mmcli -m 0 --command='AT+CPIN?'Should return +CPIN: READY
Check network registration:
sudo mmcli -m 0 --command='AT+COPS?'Should show registered network like +COPS: 0,0,"Dark Star",7
Check signal strength:
sudo mmcli -m 0 | grep -i signalSignal should be > -100 dBm
Symptoms:
$ ping -I wwan0 www.google.com
ping: www.google.com: Temporary failure in name resolutionBut IP-based ping works:
$ ping -I wwan0 8.8.8.8
# Works fineCauses:
- DNS not configured in
/etc/resolv.conf - IPv6 DNS missing (if using IPv6)
- DNS servers unreachable
Solutions:
Check DNS configuration:
cat /etc/resolv.confShould show something like:
nameserver 172.26.38.2
nameserver fc00:a:a::400
Reconfigure DNS:
# Get DNS from modem
sudo mmcli -b 1 | grep dns
# Manually set DNS to the address that was shown, like;
echo "nameserver 172.26.38.2" | sudo tee /etc/resolv.conf
echo "nameserver fc00:a:a::400" | sudo tee -a /etc/resolv.conf
# Test
nslookup google.comCheck if systemd-resolved is interfering:
sudo systemctl status systemd-resolvedIf it's running and causing issues:
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolvedSymptoms:
- Connection works initially
- Drops after 5-30 minutes
- Cannot reconnect without manual intervention
Causes:
- Carrier timeout
- Modem power management
- USB autosuspend
- Modem bearer instability
Solutions:
Start the auto-recovery daemon to automatically detect and fix connection drops:
export CELLULAR_LOG_DIR=/var/log/cellular
sudo -E nohup /opt/cellular/auto-recover.sh 30 &Monitor the daemon:
tail -f /var/log/cellular/auto-recover.logThe daemon will:
- Check connection every 30 seconds
- Detect connection loss automatically
- Reconfigure routes and DNS if needed
- Log all activity for debugging
Disable USB autosuspend:
Edit /boot/firmware/cmdline.txt (or /boot/cmdline.txt on older systems):
sudo nano /boot/firmware/cmdline.txtAdd at the end (on same line):
usbcore.autosuspend=-1
Reboot:
sudo rebootCheck USB power settings:
cat /sys/bus/usb/devices/*/power/autosuspend_delay_msShould show -1 for the modem device.
Monitor connection:
watch -n 5 'sudo mmcli -m 0 | grep -E "(State|Signal)"'Emergency modem reset:
If drops persist, perform a full modem reset:
sudo /opt/cellular/reset-modem.sh
sudo /opt/cellular/connect-cellular-robust.sh
export CELLULAR_LOG_DIR=/var/log/cellular
sudo -E nohup /opt/cellular/auto-recover.sh 30 &Symptoms:
- High latency (>200ms)
- Packet loss
- Intermittent disconnections
Causes:
- Poor signal strength
- Network congestion
- Modem thermal issues
Solutions:
Check signal strength:
sudo /opt/cellular/cellular-debug.sh signalSignal quality should be > -100 dBm. If worse:
- Move antenna
- Check antenna connection
- Try different location
Monitor latency:
ping -I wwan0 -c 100 8.8.8.8 | tail -1Look at min/avg/max/mdev values. Average should be < 150ms.
Check packet loss:
ping -I wwan0 -c 100 8.8.8.8 | grep "packet loss"Should be 0% or very low (<5%).
Check modem temperature (if available):
sudo mmcli -m 0 --command='AT+CTEMP?'If temperature is high (>60°C), modem may throttle.
Symptoms:
$ sudo mmcli -b 1 --disconnect
$ sudo mmcli -b 1 --connect
# Hangs or failsSolutions:
Use the robust connection script which handles reconnection properly:
sudo /opt/cellular/connect-cellular-robust.shThis script will:
- Disconnect existing bearers
- Create a new bearer
- Connect properly
- Configure routes and DNS
- Verify connectivity
If you need to manually reconnect:
# Disconnect bearer
sudo mmcli -b 1 --disconnect 2>/dev/null || true
sleep 2
# Disable modem
sudo mmcli -m 0 --disable
sleep 2
# Enable modem
sudo mmcli -m 0 --enable
sleep 2
# Create new bearer
sudo mmcli -m 0 --create-bearer="apn=ereseller,ip-type=ipv4v6"
sleep 2
# Connect bearer
sudo mmcli -b 1 --connect
sleep 2
# Verify
mmcli -b 1If manual reconnection fails:
sudo /opt/cellular/reset-modem.sh
sudo /opt/cellular/connect-cellular-robust.shsudo /opt/cellular/cellular-debug.sh status# Modem info
sudo mmcli -m 0
# Bearer info
sudo mmcli -b 1
# Interface status
ip addr show wwan0
# Routes
ip route show dev wwan0
# DNS
cat /etc/resolv.conf
# Connectivity
ping -I wwan0 8.8.8.8
nslookup google.com
# Signal strength
sudo /opt/cellular/cellular-debug.sh signal
# Run all tests
sudo /opt/cellular/cellular-debug.sh test# ModemManager logs
sudo journalctl -u ModemManager -f
# System logs
sudo journalctl -xe
# Cellular connection logs
sudo journalctl -u cellular-connect.service -f
# Auto-recovery daemon logs
tail -f /var/log/cellular/auto-recover.log- Start auto-recovery daemon at boot for automatic connection monitoring
- Disable USB autosuspend (see Issue 4)
- Use systemd services for automatic startup
- Monitor daemon logs regularly for issues
- Keep antenna clear of obstructions
- Ensure good power supply to modem
- Use quality USB cable (not too long)
- Keep modem firmware updated
If you've tried all troubleshooting steps and still have issues:
-
Collect diagnostic info:
sudo mmcli -m 0 > modem_info.txt sudo mmcli -b 1 >> modem_info.txt ip addr show wwan0 >> modem_info.txt cat /etc/resolv.conf >> modem_info.txt lsusb | grep -i simcom >> modem_info.txt
-
Check carrier support for:
- APN settings
- DNS server addresses
- Network coverage in your area
-
Verify:
- SIM card is active and has data plan
- No carrier restrictions on device
- Account is in good standing
| Issue | Command |
|---|---|
| Modem not found | sudo /opt/cellular/reset-modem.sh |
| Check status | sudo /opt/cellular/cellular-debug.sh status |
| Test connectivity | sudo /opt/cellular/cellular-debug.sh test |
| Check signal | sudo /opt/cellular/cellular-debug.sh signal |
| View logs | sudo /opt/cellular/cellular-debug.sh logs |
| Reset modem | sudo /opt/cellular/reset-modem.sh |
| Connect (production) | sudo /opt/cellular/connect-cellular-robust.sh |
| Connect (troubleshoot) | sudo /opt/cellular/connect-cellular-dynamic.sh |
| Start auto-recovery | export CELLULAR_LOG_DIR=/var/log/cellular && sudo -E nohup /opt/cellular/auto-recover.sh 30 & |
| Monitor daemon | tail -f /var/log/cellular/auto-recover.log |
| Stop daemon | sudo pkill -f auto-recover.sh |
Cause: Script is not in expected location or installation paths are incorrect
Solution: Ensure all scripts are in the same directory, or install to /opt/cellular/:
# Check if script exists
ls -la /opt/cellular/setup-dns-routes.sh
# Or verify in current directory
ls -la ./setup-dns-routes.sh
# If missing, copy it to the correct location
sudo cp setup-dns-routes.sh /opt/cellular/Cause: Log directory doesn't exist or is not writable
Solution: Check CELLULAR_LOG_DIR and ensure the directory is writable:
# Check directory exists and permissions
ls -ld /var/log/cellular
# Create if missing
sudo mkdir -p /var/log/cellular
sudo chown $USER:$USER /var/log/cellular
# Verify it's writable
touch /var/log/cellular/test.log && rm /var/log/cellular/test.logCause: User doesn't have write permissions to installation directory
Solution: Use sudo or ensure your user has write permissions:
# Option 1: Use sudo (recommended for system-wide installation)
sudo /opt/cellular/connect-cellular-robust.sh
# Option 2: Change ownership to your user
sudo chown $USER:$USER /opt/cellular
# Option 3: Install to home directory instead
mkdir -p ~/cellular
cp *.sh ~/cellular/
chmod +x ~/cellular/*.shCause: Log directory permissions or environment variable not passed to sudo
Solution: Ensure environment variable is passed with -E flag:
# Correct way (with -E flag)
export CELLULAR_LOG_DIR=/var/log/cellular
sudo -E nohup ./auto-recover.sh 30 &
# Or in one command
CELLULAR_LOG_DIR=/var/log/cellular sudo -E nohup ./auto-recover.sh 30 &
# Check if daemon is running
ps aux | grep auto-recover.sh
# View logs
tail -f /var/log/cellular/auto-recover.log