faucamp / python-gsmmodem

Python module to control a GSM modem attached to the system: send/receive SMS messages, handle calls, etc
GNU Lesser General Public License v3.0
384 stars 302 forks source link

Not getting text response on USSD dial #59

Closed thesabbir closed 8 years ago

thesabbir commented 8 years ago

Thanks for the awesome library. Noob here. Output by running ussd example:

Initializing modem...
Sending USSD string: *124#
USSD reply received: 0059006F007500720020006D00610069006E0020006100630063006F0075006E0074002000420061006C0061006E00630065003A00200038002E00360031002000200042004400540020004500780070003A002000330030002D00300039002D0032003000320030002000320033003A00350039003A003500390020000A002E0054006B00320033002000720065006300680061007200670065002D0065002000730068006F006200200042004C0020003200350070002F006D0069006E002C006E006F006E002D0042004C003600300070002F006D0069006E0020003100320061006D002D00350070006D002E00430061006C006C0020003100320031003500370034
USSD session was ended by network.

With debug:

Initializing modem...
INFO: Connecting to modem on port /dev/ttyUSB1 at 115200bps
DEBUG: write: ATZ
DEBUG: response: ['OK']
DEBUG: write: ATE0
DEBUG: response: ['OK']
DEBUG: write: AT+CFUN?
DEBUG: response: ['+CFUN: 1', 'OK']
DEBUG: write: AT+CMEE=1
DEBUG: response: ['OK']
DEBUG: write: AT+CPIN?
DEBUG: response: ['+CPIN: READY', 'OK']
DEBUG: write: AT+CLAC
DEBUG: response: ['&C', '&D', '&E', '&F', '&S', '&V', '&W', 'E', 'I', 'L', 'M', 'Q', 'V', 'X', 'Z', 'T', 'P', '\\Q', '\\S', '\\V', '%V', 'D', 'A', 'H', 'O', 'S0', 'S2', 'S3', 'S4', 'S5', 'S6', 'S7', 'S8', 'S9', 'S10', 'S11', 'S30', 'S103', 'S104', '+ZTEST', '+FCLASS', '+ICF', '+IFC', '+IPR', '+GMI', '+GMM', '+NVDIS', '+GMR', '+GCAP', '+GSN', '+DR', '+DS', '+WS46', '+CBST', '+CRLP', '+CV120', '+CHSN', '+CSSN', '+CREG', '+CGREG', '+CFUN', '+GCAP', '+CSCS', '+CSTA', '+CR', '+CEER', '+CRC', '+CMEE', '+CGDCONT', '+CGDSCONT', '+CGTFT', '+CGEQREQ', '+CGEQMIN', '+CGQREQ', '+CGQMIN', '+CGEREP', '+CGPADDR', '+CGDATA', '+CGCLASS', '+CGSMS', '+CSMS', '+CMGF', '+CSAS', '+CRES', '+CSCA', '+CSMP', '+CSDH', '+CSCB', '+FDD', '+FAR', '+FCL', '+FIT', '+ES', '+ESA', '+CMOD', '+CVHU', '+CSQ', '+CBC', '+CPAS', '+CPIN', '+CMEC', '+CKPD', '+CIND', '+CMER', '+CGATT', '+CGACT', '+CGCMOD', '+CPBS', '+CPBR', '+CPBF', '+CPBW', '+CPMS', '+CNMI', '+CMGL', '+CMGR', '+CMGS', '+CMSS', '+CMGW', '+CMGD', '+CMGC', '+CNMA', '+CMMS', '+ZUPLOG', '+ZTAG', '+CHUP', '+CCFC', '+CCUG', '+COPS', '+CLCK', '+CPWD', '+CUSD', '+CAOC', '+CACM', '+CAMM', '+CPUC', '+CCWA', '+CHLD', '+CIMI', '+CGMI', '+CGMM', '+CGMR', '+CGSN', '+CNUM', '+CSIM', '+CRSM', '+CCLK', '+CLVL', '+CMUT', '+CLCC', '+COPN', '+CPOL', '+CPLS', '+CTZR', '+CTZU', '+CLAC', '+CLIP', '+COLP', '+CDIP', '+CTFR', '+CLIR', '$QCSIMSTAT', '$QCCNMI', '$QCCLR', '$QCDMG', '$QCDMR', '$QCDNSP', '$QCDNSS', '$QCTER', '$QCSLOT', '$QCPINSTAT', '$QCPDPP', '$QCPDPLT', '$QCPWRDN', '$QCDGEN', '$BREW', '$QCSYSMODE', '$QCCTM', 'OK']
DEBUG: write: AT+CGMI
DEBUG: response: ['ZTE CORPORATION', 'OK']
DEBUG: write: AT+ZPAS?
DEBUG: response: ['+ZPAS: "HSPA","CS_PS"', 'OK']
INFO: Loading ZTE call state update table
DEBUG: write: AT+COPS=3,0
DEBUG: response: ['OK']
DEBUG: write: AT+CMGF=0
DEBUG: response: ['OK']
DEBUG: write: AT+CSCA?
DEBUG: response: ['+CSCA: "+88019900557",145', 'OK']
DEBUG: write: AT+CSMP=49,167,0,0
DEBUG: response: ['OK']
DEBUG: write: AT+CSCA?
DEBUG: response: ['+CSCA: "+88019900557",145', 'OK']
DEBUG: write: AT+CPMS=?
DEBUG: response: ['+CPMS: ("ME","MT","SM","SR"),("ME","MT","SM","SR"),("ME","MT","SM","SR")', 'OK']
DEBUG: write: AT+CPMS="ME","ME","ME"
DEBUG: response: ['+CPMS: 0,100,0,100,0,100', 'OK']
DEBUG: write: AT+CNMI=2,1,0,2
DEBUG: response: ['OK']
DEBUG: write: AT+CLIP=1
DEBUG: response: ['OK']
DEBUG: write: AT+CRC=1
DEBUG: response: ['OK']
DEBUG: write: AT+CVHU=0
DEBUG: response: ['OK']
DEBUG: write: AT+CREG?
DEBUG: response: ['+CREG: 0,1', 'OK']
DEBUG: write: AT+CSQ
DEBUG: response: ['+CSQ: 20,99', 'OK']
Sending USSD string: *124#
DEBUG: write: AT+CUSD=1,"*124#",15
DEBUG: response: ['OK']
DEBUG: notification: ['+CUSD: 0,"0059006F007500720020006D00610069006E0020006100630063006F0075006E0074002000420061006C0061006E00630065003A00200038002E00360031002000200042004400540020004500780070003A002000330030002D00300039002D0032003000320030002000320033003A00350039003A003500390020000A002E0054006B00320033002000720065006300680061007200670065002D0065002000730068006F006200200042004C0020003200350070002F006D0069006E002C006E006F006E002D0042004C003600300070002F006D0069006E0020003100320061006D002D00350070006D002E00430061006C006C0020003100320031003500370034",72']
<class 'gsmmodem.modem.Ussd'>
USSD reply received: 0059006F007500720020006D00610069006E0020006100630063006F0075006E0074002000420061006C0061006E00630065003A00200038002E00360031002000200042004400540020004500780070003A002000330030002D00300039002D0032003000320030002000320033003A00350039003A003500390020000A002E0054006B00320033002000720065006300680061007200670065002D0065002000730068006F006200200042004C0020003200350070002F006D0069006E002C006E006F006E002D0042004C003600300070002F006D0069006E0020003100320061006D002D00350070006D002E00430061006C006C0020003100320031003500370034
USSD session was ended by network.
[~]                                                                                                                                                             2:02:17
[~] ./ussd_demo.py > log.usb.txt                                                                                                                                2:02:17
INFO: Connecting to modem on port /dev/ttyUSB1 at 115200bps
DEBUG: write: ATZ
DEBUG: response: ['OK']
DEBUG: write: ATE0
DEBUG: response: ['OK']
DEBUG: write: AT+CFUN?
DEBUG: response: ['+CFUN: 1', 'OK']
DEBUG: write: AT+CMEE=1
DEBUG: response: ['OK']
DEBUG: write: AT+CPIN?
DEBUG: response: ['+CPIN: READY', 'OK']
DEBUG: write: AT+CLAC
DEBUG: response: ['&C', '&D', '&E', '&F', '&S', '&V', '&W', 'E', 'I', 'L', 'M', 'Q', 'V', 'X', 'Z', 'T', 'P', '\\Q', '\\S', '\\V', '%V', 'D', 'A', 'H', 'O', 'S0', 'S2', 'S3', 'S4', 'S5', 'S6', 'S7', 'S8', 'S9', 'S10', 'S11', 'S30', 'S103', 'S104', '+ZTEST', '+FCLASS', '+ICF', '+IFC', '+IPR', '+GMI', '+GMM', '+NVDIS', '+GMR', '+GCAP', '+GSN', '+DR', '+DS', '+WS46', '+CBST', '+CRLP', '+CV120', '+CHSN', '+CSSN', '+CREG', '+CGREG', '+CFUN', '+GCAP', '+CSCS', '+CSTA', '+CR', '+CEER', '+CRC', '+CMEE', '+CGDCONT', '+CGDSCONT', '+CGTFT', '+CGEQREQ', '+CGEQMIN', '+CGQREQ', '+CGQMIN', '+CGEREP', '+CGPADDR', '+CGDATA', '+CGCLASS', '+CGSMS', '+CSMS', '+CMGF', '+CSAS', '+CRES', '+CSCA', '+CSMP', '+CSDH', '+CSCB', '+FDD', '+FAR', '+FCL', '+FIT', '+ES', '+ESA', '+CMOD', '+CVHU', '+CSQ', '+CBC', '+CPAS', '+CPIN', '+CMEC', '+CKPD', '+CIND', '+CMER', '+CGATT', '+CGACT', '+CGCMOD', '+CPBS', '+CPBR', '+CPBF', '+CPBW', '+CPMS', '+CNMI', '+CMGL', '+CMGR', '+CMGS', '+CMSS', '+CMGW', '+CMGD', '+CMGC', '+CNMA', '+CMMS', '+ZUPLOG', '+ZTAG', '+CHUP', '+CCFC', '+CCUG', '+COPS', '+CLCK', '+CPWD', '+CUSD', '+CAOC', '+CACM', '+CAMM', '+CPUC', '+CCWA', '+CHLD', '+CIMI', '+CGMI', '+CGMM', '+CGMR', '+CGSN', '+CNUM', '+CSIM', '+CRSM', '+CCLK', '+CLVL', '+CMUT', '+CLCC', '+COPN', '+CPOL', '+CPLS', '+CTZR', '+CTZU', '+CLAC', '+CLIP', '+COLP', '+CDIP', '+CTFR', '+CLIR', '$QCSIMSTAT', '$QCCNMI', '$QCCLR', '$QCDMG', '$QCDMR', '$QCDNSP', '$QCDNSS', '$QCTER', '$QCSLOT', '$QCPINSTAT', '$QCPDPP', '$QCPDPLT', '$QCPWRDN', '$QCDGEN', '$BREW', '$QCSYSMODE', '$QCCTM', 'OK']
DEBUG: write: AT+CGMI
DEBUG: response: ['ZTE CORPORATION', 'OK']
DEBUG: write: AT+ZPAS?
DEBUG: response: ['+ZPAS: "HSPA","CS_PS"', 'OK']
INFO: Loading ZTE call state update table
DEBUG: write: AT+COPS=3,0
DEBUG: response: ['OK']
DEBUG: write: AT+CMGF=0
DEBUG: response: ['OK']
DEBUG: write: AT+CSCA?
DEBUG: response: ['+CSCA: "+88019900557",145', 'OK']
DEBUG: write: AT+CSMP=49,167,0,0
DEBUG: response: ['OK']
DEBUG: write: AT+CSCA?
DEBUG: response: ['+CSCA: "+88019900557",145', 'OK']
DEBUG: write: AT+CPMS=?
DEBUG: response: ['+CPMS: ("ME","MT","SM","SR"),("ME","MT","SM","SR"),("ME","MT","SM","SR")', 'OK']
DEBUG: write: AT+CPMS="ME","ME","ME"
DEBUG: response: ['+CPMS: 0,100,0,100,0,100', 'OK']
DEBUG: write: AT+CNMI=2,1,0,2
DEBUG: response: ['OK']
DEBUG: write: AT+CLIP=1
DEBUG: response: ['OK']
DEBUG: write: AT+CRC=1
DEBUG: response: ['OK']
DEBUG: write: AT+CVHU=0
DEBUG: response: ['OK']
DEBUG: write: AT+CREG?
DEBUG: response: ['+CREG: 0,1', 'OK']
DEBUG: write: AT+CSQ
DEBUG: response: ['+CSQ: 20,99', 'OK']
DEBUG: write: AT+CUSD=1,"*124#",15
DEBUG: response: ['OK']
DEBUG: notification: ['+CUSD: 0,"0059006F007500720020006D00610069006E0020006100630063006F0075006E0074002000420061006C0061006E00630065003A00200038002E00360031002000200042004400540020004500780070003A002000330030002D00300039002D0032003000320030002000320033003A00350039003A003500390020000A002E0054006B00320033002000720065006300680061007200670065002D0065002000730068006F006200200042004C0020003200350070002F006D0069006E002C006E006F006E002D0042004C003600300070002F006D0069006E0020003100320061006D002D00350070006D002E00430061006C006C0020003100320031003500370034",72']
thesabbir commented 8 years ago

Found how to make it human readable:

#!/usr/bin/env python

ORT = '/dev/ttyUSB1'
BAUDRATE = 115200
USSD_STRING = '*5000*500#'

from gsmmodem.modem import GsmModem
from gsmmodem import pdu

def main():
    print('Initializing modem...')
    #logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG)
    modem = GsmModem(PORT, BAUDRATE)
    modem.connect(None)
    modem.waitForNetworkCoverage(10)
    response = modem.sendUssd(USSD_STRING)
    _response = iter(pdu.toByteArray(response.message))
    result = unicode(pdu.decodeUcs2(_response, _response))
    print "Reply recieved:"
    print result
    if response.sessionActive:
        print 'Closing USSD session.'
        response.cancel()
    else:
        print 'USSD session was ended by network.'
    modem.close()

if __name__ == '__main__':
    main()

Mainly a documentation issue. Is there any better way to do it?