2015-04-01 25 views
2

我想讀取我的華爲E3531的RSSI。所以我發現了一些文檔,它們顯示了使用AT命令獲取這些信息的簡單方法。問題是,我甚至無法連接到我的華爲E3531。我的意思是,它非常適合作爲調制解調器。我有很好的聯繫。但是當我在dev中尋找設備時,我只能找到2個似乎是2個光盤的設備(「sdb」和「sgm」),但與串口無關。嘗試使用AT命令與華爲E3531

所以我嘗試了一些事情,我發現: - 我插上華爲後,發現Idvendor和Idproduct做了一個lsusb。 - 他們我做了須藤modprobe的usbserial供應商= 0X 「Idvendor」 產品= 0X 「Idproduct」 - 然後當我做我的dmesg可以閱讀:

[ 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 

通常,我應該是這樣:

usb 1-1: generic converter now attached to ttyUSB0 

我認爲我不得不說,甚至不可能從我的Mac上看到sdb和sgm,所以我從我的Ubuntu做到了這一點。如果我讓我的無線,調制解調器無法連接(所以我沒有看到SDB和SGM)

如果有人需要它這裏是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 

再次感謝您,如果你能給我一個小小的想法,我會接受! 很快見到你

編輯9/04/2015 所以我找到了一些東西。做一個你的lsusb會看到你的設備爲:

總線003設備020:ID 12D1:1f01華爲技術有限公司

1f01是Idproduct,但它可以改變某個時候,因爲調制解調器自行進入不同的模式。如果是1F01,請執行以下操作:

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

這會迫使您的設備更改模式。現在,您的設備將有一個Idproduct iqual到1001做一個對的lsusb看看吧:

總線003設備023:ID 12D1:1001華爲技術有限公司 E169/E620/E800 HSDPA調制解調器

而你有4個新的USB設備:USB0,USB1,USB2和USB3。 現在我要嘗試使用minicom發送AT命令。

+0

我找到了一個解決方案,使用終端或python。我會很快將它放在這裏供我們需要的人 – 2015-04-15 14:15:24

+1

你從哪裏找到USB_modeswitch命令。我正面臨着與另一個調制解調器類似的問題。作爲調制解調器很有效,但不會列舉爲串行端口。 – 2016-09-21 01:15:05

回答

4

所以基本上,我的問題是,我無法看到我的調制解調器作爲一個串行。我解釋瞭如何做到這一點,你必須強迫你的調制解調器使用此命令:

須藤usb_modeswitch -v 12D1 -p 1F01 -M '55534243123456780000000000000011062000000100000000000000000000'

然後我試圖小型機,這是真的很好,你只需要使用正確的參數,如波特率和端口連接好。所以尋找它並做一些測試。要查看您在minicom中編寫的內容,只需啓用本地回顯(ctrl + a然後z選項)即可。 所以你可以發送你想要的所有信息。

但我想它在這裏這麼一個python腳本集成是我的代碼:

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) 

所以這個工作對我來說,我希望它會幫助你! 乾杯