This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Custom PCB nRF9160 Link monitor ports

Hi, We have a custom design using an nRF9160.

We can connect and program the device using a jLink though the debug port.

How can we connect the LTE link monitor to the board to transfer AT commands?

Currently our PCB only has access to P0.18 and P0.19 for debug (this can be modified in the next PCB revision).

Can these be re-programmed or are they part of the soft device?

Thanks

  • Hi Ian,

     

    Yano said:

    Is there a way to do this using a standard serial terminal?

    Could we use USB bridge on an nRF9160-DK and wire it to our hardware and if so what way could we wire it, we have not problem modifying one (cutting tracks etc.).

    Also is there a document on the pin re-assignment process (.overlay etc) we had to do? I would like to fully understand the script used.

    I think you are over-thinking what LTE Link Monitor provides. I agree that it is helpful for the automatic response attach after issuing AT+CFUN=1, but most of this is not strictly required when going 3GPP testing, as such tests are usually carried out from the LTE tester point of view. Any RF PHY evaluating specific command isn't parsed in LTE LinkMonitor either.

    LTE Link Monitor is a terminal, similar to teraterm/realterm/putty, that can parse specific AT command response. There's strictly no need to use it, but it helps  wrt. what it "automatically" issues if you have "automatic requests" enabled, and issue a "AT+CFUN?" and parse the information provided by the different AT commands (your IP, RSRP, network status).

     

    For issuing AT%XRFTEST, the LTE Link Monitor does not give you any parsed output, expect color highlighting.

     

    If you are interested in the sequence that it provides when doing automatic requests, here's an example of that:

    *** Booting Zephyr OS build v2.4.99-ncs1-rc1  ***
    The AT host sample started
    AT+CFUN=1
    OK
    AT+CFUN?
    +CFUN: 1
    OK
    AT+CGSN=1
    +CGSN: "352656106120176"
    OK
    AT+CGMI
    Nordic Semiconductor ASA
    OK
    AT+CGMM
    nRF9160-SICA
    OK
    AT+CGMR
    mfw_nrf9160_1.2.3
    OK
    AT+CEMODE?
    +CEMODE: 2
    OK
    AT%XCBAND=?
    %XCBAND: (1,2,3,4,5,8,12,13,18,19,20,25,26,28,66)
    OK
    AT+CMEE?
    +CMEE: 0
    OK
    AT+CMEE=1
    OK
    AT+CNEC?
    +CNEC: 0
    OK
    AT+CNEC=24
    OK
    AT+CGEREP?
    +CGEREP: 0,0
    OK
    AT+CGDCONT?
    +CGDCONT: 0,"IPV4V6","telenor.iot","10.240.223.212 2A02:2121:0208:65DB:0000:0006:08C9:2B01",0,0
    OK
    AT+CGACT?
    +CGACT: 0,1
    OK
    AT+CGEREP=1
    OK
    AT+CIND=1,1,1
    OK
    AT+CEREG=5
    OK
    AT+CEREG?
    +CEREG: 5,1,"76C1","0102C305",7,,,"11100000","00001111"
    OK
    AT+COPS=3,2
    OK
    AT+COPS?+COPS: 0,2,"24201",7
    OK
    AT%XCBAND%XCBAND: 20
    OK
    AT+CGDCONT?
    +CGDCONT: 0,"IPV4V6","telenor.iot","10.240.223.212 2A02:2121:0208:65DB:0000:0006:08C9:2B01",0,0
    OK
    AT+CGACT?
    +CGACT: 0,1
    OK
    AT%CESQ=1
    OK
    AT+CESQ
    +CESQ: 99,99,255,255,24,54
    OK
    AT%XSIM=1
    OK
    %CESQ: 54,2,24,3
    AT%XSIM?
    %XSIM: 1
    OK
    AT+CPIN?
    +CPIN: READY
    OK
    AT+CPINR="SIM PIN"
    +CPINR: "SIM PIN",3
    OK
    AT+CIMI
    242016000045390
    OK

     Picture:

     

    The above commands are mostly meta-data, and you can check out the documentation for each of them in the AT commands document:

    https://infocenter.nordicsemi.com/topic/ref_at_commands/REF/at_commands/intro.html?cp=2_1

     

    Kind regards,

    Håkon

  • Hi Hakon,

    Any update on this?

     I have created a bug internally on this matter. based on the test procedure that you have gone through, everything points to the LTE Link Monitor not properly handling sending data from the PC -> USB/UART adapter.

    Not being able to upload certs is hampering us. If there was a way to do it in code it would be great.

    Thanks

    Ian

  • Hi Ian,

     

    My deepest apologies for the behavior you're seeing here. It is not yet fixed in nRF connect for desktop.

     

    In firmware, you can use the API "modem_key_mgmt_write" to write certificates, similar to how it is done in the aws_fota sample:

    https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/samples/nrf9160/aws_fota/README.html#updating-the-certificates

     

    Writing the certificate in firmware require that you put the certificate into "C format".

    If we take the AWS root CA as an example, which you can find here:

    https://www.amazontrust.com/repository/AmazonRootCA1.pem

    This holds, in ascii:

    -----BEGIN CERTIFICATE-----
    MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF
    ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6
    b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL
    MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv
    b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj
    ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM
    9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw
    IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6
    VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L
    93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm
    jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
    AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA
    A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI
    U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs
    N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv
    o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU
    5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy
    rqXRfboQnoZsG4q5WTP468SQvvG5
    -----END CERTIFICATE-----

    To put this into a C format, we need to add line ending and place it into a array:

    "-----BEGIN CERTIFICATE-----\n" \
    "MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF\n" \
    "ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6\n" \
    "b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL\n" \
    "MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv\n" \
    "b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj\n" \
    "ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM\n" \
    "9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw\n" \
    "IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6\n" \
    "VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L\n" \
    "93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm\n" \
    "jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC\n" \
    "AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA\n" \
    "A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI\n" \
    "U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs\n" \
    "N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv\n" \
    "o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU\n" \
    "5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy\n" \
    "rqXRfboQnoZsG4q5WTP468SQvvG5\n" \
    "-----END CERTIFICATE-----\n"
      

     

    if you add "#define MY_CA_CERT \" to the above, you can do like this in firmware (before issuing AT+CFUN=1!):

    	err = modem_key_mgmt_write(MY_USED_SEC_TAG,
    				   MODEM_KEY_MGMT_CRED_TYPE_CA_CHAIN,
    				   MY_CA_CERT,
    				   strlen(MY_CA_CERT));
    	if (err) {
    		printk("Failed to provision CA certificate, err %d\n", err);
    		return err;
    	}				   

     

    The sequence for inputting private (MODEM_KEY_MGMT_CRED_TYPE_PRIVATE_CERT) and public (MODEM_KEY_MGMT_CRED_TYPE_PUBLIC_CERT) is similar to the above.

     

    Alternative 2:

    Fetch the raw AT command by opening any COM port (any COM port that can be opened in LTE LM will do here) 

    Here I have inputted a CA root:

    This AT cmd has failed to write to my specified security tag.

    However, If I switch to the "terminal" view, I can see the AT command that has been inputted:

     

    You can also see this in the log if you press the "open log" here:

     

    Kind regards,

    Håkon

  • In the documentation you linked it says:

    Before programming the sample, configure it to provision the certificates from the certificates.h file (PROVISION_CERTIFICATES) and to use a different security tag (CLOUD_CERT_SEC_TAG).

    When should these switches be put and do you have an example of the format?

    Thanks

    Ian

  • It looks like there is a bit of a mix-up between aws_iot and aws_fota!

    The documentation also seems to be mixed up between these.

    aws_fota seems to have options in kconfig but for some reason aws_iot doesn't?

    It's very confusing, I don't know what switches to use.

    Should I move over to use aws_fota?

    If I do will I still be able to subscribe and publish topics as well as doing an update?

    Thanks Ian 

     

Related