Trying to use the AT command with an Huawei E3531

非 Y 不嫁゛ 提交于 2020-01-01 05:50:09

问题


I want to read the RSSI of my Huawei E3531. So I found some documentations that show an easy way to get those informations using the AT command. The problem is that I can't even connect to my Huawei E3531. I mean, it works really well as a modem. I have a good connection. But when I am looking for the device in dev, I just find 2 devices ("sdb" and "sgm") which seem to be 2 disc, but nothing to do with serial port.

So I tried somethin I found: -After I plugged the Huawei, I find the Idvendor and Idproduct doing an lsusb. -They I do a sudo modprobe usbserial vendor=0X"Idvendor" product=0X"Idproduct" -And then when I do dmesg I can read:

[ 1038.498282] usbcore: registered new interface driver usbserial
[ 1038.498299] usbcore: registered new interface driver usbserial_generic
[ 1038.498312] usbserial: USB Serial support registered for generic

Normally I should have something like:

usb 1-1: generic converter now attached to ttyUSB0

I think I have to say that it was not even possible to see the sdb and sgm from my mac, so I am doing this from my Ubuntu. And if I enable my wifi, the modem cannot connect ( so I do not see the sdb and sgm)

If someone need it here is the first part of the dmesg:

[  742.756888] usb 3-1: USB disconnect, device number 6
[  743.123706] usb 3-1: new high-speed USB device number 7 using xhci_hcd
[  743.252854] usb 3-1: New USB device found, idVendor=12d1, idProduct=14dc
[  743.252861] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  743.252865] usb 3-1: Product: HUAWEI Mobile
[  743.252868] usb 3-1: Manufacturer: HUAWEI
[  743.482312] cdc_ether 3-1:1.0 usb0: register 'cdc_ether' at usb-0000:00:14.0-1, CDC Ethernet Device, 9a:c2:9b:ee:4c:d9
[  743.482859] usb-storage 3-1:1.2: USB Mass Storage device detected
[  743.483249] scsi11 : usb-storage 3-1:1.2
[  743.520839] audit: type=1400 audit(1427889713.269:79): apparmor="DENIED" operation="file_inherit" profile="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=3414 comm="nm-dhcp-client." lport=29180 family="inet" sock_type="dgram" protocol=17
[  743.520857] audit: type=1400 audit(1427889713.269:80): apparmor="DENIED" operation="file_inherit" profile="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=3414 comm="nm-dhcp-client." lport=47709 family="inet6" sock_type="dgram" protocol=17
[  744.481267] scsi 11:0:0:0: Direct-Access     HUAWEI   TF CARD Storage  2.31 PQ: 0 ANSI: 2
[  744.481722] sd 11:0:0:0: Attached scsi generic sg2 type 0
[  744.482933] sd 11:0:0:0: [sdb] Attached SCSI removable disk
[  753.752310] audit: type=1400 audit(1427889723.496:81): apparmor="DENIED" operation="file_inherit" profile="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=3423 comm="nm-dhcp-client." lport=29180 family="inet" sock_type="dgram" protocol=17
[  753.752328] audit: type=1400 audit(1427889723.496:82): apparmor="DENIED" operation="file_inherit" profile="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=3423 comm="nm-dhcp-client." lport=47709 family="inet6" sock_type="dgram" protocol=17
[ 1038.498282] usbcore: registered new interface driver usbserial
[ 1038.498299] usbcore: registered new interface driver usbserial_generic
[ 1038.498312] usbserial: USB Serial support registered for generic

Thank you again, if you can give me even a small idea, I will take it! see you soon

EDIT 9/04/2015 So I found something. Do an lsusb you will see your device as:

Bus 003 Device 020: ID 12d1:1f01 Huawei Technologies Co., Ltd.

1f01 is the Idproduct, but it can change sometime, because the modem goes to different mode on its own. If it is 1F01, do:

sudo usb_modeswitch -v 12d1 -p 1F01 -M '55534243123456780000000000000011062000000100000000000000000000' 

This will force your device your device to change mode. Now your device will have an Idproduct iqual to 1001. Do an lsusb to see it:

Bus 003 Device 023: ID 12d1:1001 Huawei Technologies Co., Ltd. E169/E620/E800 HSDPA Modem

And you have 4 new usb dev: USB0, USB1, USB2 and USB3. Now I am going to try minicom to send the AT command.


回答1:


so basically, my problem was that I could not see my modem as a serial. I explained how to do that, you have to force your modem with this command:

sudo usb_modeswitch -v 12d1 -p 1F01 -M '55534243123456780000000000000011062000000100000000000000000000'

Then I tried Minicom, which is really nice, you just have to connect well using the right parameters like baud rate and port. So look for it and do some test. To see what you are writing in minicom, just enable local echo (ctrl+a then z to the option). So you can send all the information you want.

But I wanted to integrate it in a python script so here is my code:

def terminalComAndRead(a,b) :
    found = False
    proc = subprocess.Popen([a], stdout=subprocess.PIPE, shell=True)#send the command
    (out, err) = proc.communicate()
    string=str(out)
    #print(string)
    foundstring=string.find(b, 0, len(string))#look for the string b in the serial answer of my device
    if foundstring != -1 :
        found= True #send back true if it found it
    return found

def send(data,ser):
    try:
        ser.write(data)#write the command my serail port
    except Exception as e:
        print "Couldn't send data to serial port: %s" % str(e)
    else:
        try:
            sleep(1)
            data = ser.read(1)#read the serial
        except Exception as e:
            print "Couldn't read data from serial port: %s" % str(e)
        else:
            if data:  # If data = None, timeout occurr
                n = ser.inWaiting()
                if n > 0: data += ser.read(n)
                return data

def searchModem():

    foundmob= False
    foundusb= False

    sudoPassword='Figaro5558_'#my sudo password
    command="usb_modeswitch -v 12d1 -p 1f01 -M '55534243123456780000000000000011062000000100000000000000000000'" # the command that for ce the modem to be on serial mode
    while foundusb!= True : # this allows me to look for the modem as an usb and then force it

        foundmob=terminalComAndRead("lsusb",'12d1:1f01')#doing a ls usb and then looking for the id of my device
        changemob=terminalComAndRead("lsusb",'12d1:1001')#this is the id of my device when it is already in serial mode

        if foundmob == True :
            sleep(1)
            os.system('echo %s|sudo -S %s' % (sudoPassword, command))# this is the line who execute the command on sudo

            foundusb=terminalComAndRead("ls /dev/ttyUSB*",'ttyUSB1')


        if changemob == True :
            foundusb=terminalComAndRead("ls /dev/ttyUSB*",'ttyUSB1')

        if foundusb == True :
                print('Modem ready for connection')

    ttyusb0=terminalComAndRead('dmesg | tail -50','now attached to ttyUSB0') #look int he dmesg if there is my new usb port

    if ttyusb0 == True :
        usbPort='/dev/ttyUSB0'#give the path 

    return usbPort

ser = serial.Serial(usbPort, 9600, bytesize=8, parity='N', stopbits=1, timeout=1, rtscts=False, dsrdtr=False) #connect to your serial

cmd="AT^HCSQ?\r\n"#the AT command
msg=str(send(cmd,ser))#use the send function to send the AT command
print(msg)

So this worked for me, I hope it will help you! Cheers



来源:https://stackoverflow.com/questions/29392102/trying-to-use-the-at-command-with-an-huawei-e3531

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!