Search code examples
modem3gpyserialppp

How can I communicate with a 3G modem via pySerial while it is connected?


I'm running Ubuntu 11.04 and a ZTE 3G modem.

The modem is dialed with WvDial

When the modem is not in use by WvDial I can send AT commands to the modem, and get information like signal strength:

AT+ZCSQ
+ZCSQ: 1,  -87 

OK

But when WvDial is using the modem, /dev/ttyUSB0 is locked and I can't query it. Am I missing something obvious? Is there any way I can configure the modem, WvDial, or pyserial so I can send AT commands to the modem while it's connected?


Solution

  • Ah. Apparently this modem exposes a couple of ttys to work with. I was able to use /dev/ttyUSB1 to sent AT commands while WvDial was connected on /dev/ttyUSB0:

    import serial
    
    ser = serial.Serial('/dev/ttyUSB1', 9600, timeout=2)
    
    at_command = 'AT+ZCSQ\r\n'
    ser.write(at_command)
    ser.sendBreak()
    
    line = ser.read(ser.inWaiting())
    ser.close
    
    print line