Telit LE910 Cellular Modem - working in 2.4.2



  • The Telit LE910 comes in three variants that i am aware of:

    LE910-EU V2 - EMEA
    LE910-NA V2 - AT&T and T-Mobile USA
    LE910-SV V2 - Verizon USA (subject to Verizon application approval process)

    Datasheets and docs are here:
    https://techship.com/products/category/cellular-modules/

    I've got this working on 4G on a carrier in the EU which only needs the APN set (no USERNAME and Password required)

    The module when the device boots up appears in dmesg with the following info:

    ugen1.3: <telit fih7160=""> at usbus1
    umodem0 on uhub2
    umodem0: <cdc acm=""> on usbus1
    umodem0: data interface 1, has no CM over data, has break
    umodem1 on uhub2
    umodem1: <cdc acm=""> on usbus1
    umodem1: data interface 3, has no CM over data, has break
    umodem2 on uhub2
    umodem2: <cdc acm=""> on usbus1
    umodem2: data interface 5, has no CM over data, has break
    umodem3 on uhub2
    umodem3: <cdc acm=""> on usbus1
    umodem3: data interface 7, has no CM over data, has break
    umodem4 on uhub2
    umodem4: <cdc acm=""> on usbus1
    umodem4: data interface 9, has no CM over data, has break
    umodem5 on uhub2
    umodem5: <cdc acm=""> on usbus1
    umodem5: data interface 11, has no CM over data, has break
    cdce0 on uhub2
    cdce0: <cdc ncm=""> on usbus1
    ue0: <usb ethernet=""> on cdce0
    ue0: Ethernet address: 00:00:11:12:13:14</usb></cdc></cdc></cdc></cdc></cdc></cdc></cdc></telit>
    

    So it creates an interface ue0 and in /dev/ there are 6 cuaU* ports created.

    It appears that /dev/cuaU0 and /dev/cuaU3 are the important ones.

    To get it working:

    In the web gui for the device I created a interface OPT1 mapped to ue0 and set to DHCP for now.

    I created an allow all rule on the firewall for the interface for testing (you'll want to not use that in production).

    Then on the cli i did the following:

    You need a terminal session for setting up the connection:

    cu -l /dev/cuaU0
    

    Once in terminalyou need to do the following

    Check the modems for the modem are correct:
    Command:

    AT#PORTCFG?
    

    Should give the response below, anything else and you probably need to change the mode.

    #PORTCFG: 0,0
    

    Command:

    AT#USBCFG?
    

    Should get the response below:

    #USBCFG: 0
    

    Now need to check what technology it supports:
    Command:

    AT+WS46?
    

    So by default the reply should be 25, 25 means 4G/3G/2G

    Check the Sim:

    AT+CPIN?
    

    If not PIN or PUK locked you should get:

    +CPIN: READY
    

    Check if the sim is registered to the network:

    AT+CREG?
    

    If registered you get 0,1 like this:

    +CREG: 0,1
    

    Check what operator:

    AT+COPS?
    

    Example:

    +COPS: 0,0,"3",7
    

    Here the first digit 0 i understand means automatic , the "3" is the name of the operator and the 7 is for 4G.

    Check if attached:

    AT+CGATT?
    

    Need to get:

    +CGATT: 1 
    

    This is where it gets a bit messier. Right so according to a Telit support member in LTE PID1 is reserved, also no PIDs can have the same APN name and also apparently for Verizon only PID3 can be used for custom values. I need to go back to them on this for more detail.

    To see what PDP contexts are set up enter:

    AT+CGDCONT?
    

    You should only see one entry PID1:

    +CGDCONT: 1,"IPV4V6","","",0,0
    

    Now lets say you want to add an APN use PID2 with the following command where 3.co.uk is the APN value.

     AT+CGDCONT=2,"IP","3.co.uk"
    

    Now to connect on PID2 you enter the following command, the second 2 is the PID entry.

    AT#NCM=2,2
    

    Wait for the OK.

    Then you get the IP details, the 2 here is the PID (although i got the same values for 1)

    AT+CGCONTRDP=2
    

    You will get back:

    +CGCONTRDP: 2,5,"string.gprs","10.199.37.13.255.0.0.0","10.199.37.14","172.30.224.65","172.30.224.65","0.0.0.0","0.0.0.0"
    

    This break down as follows: "10.199.37.13.255.0.0.0" ==> IP: 10.199.37.13 and Mask: 255.0.0.0
    The far side gateway is: "10.199.37.14"
    DNS servers: "172.30.224.65","172.30.224.65"

    Now in the web gui use the IP, subnet on the OPT1 interface and set up a gateway with the far side gateway value.

    Once set up if you were doing a tcpdump on the ue0 interface you will see arp requests for the far side IP and no replies so what you need to do is add the following static arp entry in the arp table:

    arp -S 10.199.37.14 11:22:33:44:55:66
    

    The IP is the far side gateway IP and the MAC is always that value (well thats the one that works for me and is in the Telit docs.)

    You are now up and running.

    You can check the signal with the command:

    AT#MONI
    

    If you get disconnected a single string will appear on the terminal: NO CARRIER

    To disconnect use the command:

    AT#NCMD=0
    

    The zero isn't related to the PID its a device value and for now always 0.

    This obviously isn't an working out of the box solution but someone who needs a working module not on PPP might find this a nice starting point. The use of CDC-NCM is different than the PPP of other vendors. This is meant as an information sharing topic/post for those wanting to work on or use CDC-NCM rather than PPP.



  • Thanks for sharing. What sort of performance did you see with this Conor?