EG25-G IS programmable to send IP packet (Alive packet)?

Hello.

I got a EG25-G modem (Revision: 'EG25GGBR07A08M2G) and I’m wondering if is programmable.

Can i save into it some instruction for send an IP packet to own server?

If the answer is negative, what quectel 5G+GPS model is capable for this?

Thanks

Please refer to the Quectel_LTE_Standard_TCP(IP)_Application_Note_V1.1.
You can just use the TCP/IP related AT command to do it.

Thanks @Bean.Wang-Q
My question may not be precise enough.
Is it possible for this Quectel model to periodically send an IP packet working as a headless device? without the need to govern it from a device (computer, raspberry, arduino…) that acts as a master

Thanks

I think you might need the OpenLinux solution for EG25G.
Programs can run on EG25G. The Quecel EG25G is running a Linux system also.

But, you should know is that we cannot provide it on Quectel forums. You must contact with the Quectel Sales. We can run our own program on the EG25G and you don’t need the external MCU any more.

Ok, last question.
If I finally run openlinux on a EG25G (you say that the external MCU is not necessary), would it be possible to continue connecting at the same time from an external device with your Quectel-CM tool?

Very grateful for your clarifications

No need to run quectel-CM any more.
Quectel provide APIs for customer to set up data call.

Use Quectel Open Solution, there are requirements for annual output and sales. This has to be linked to sales and front-end FAE.

Ok, thank you. I’ll inform my project manager about it.

Hi again @Bean.Wang-Q
I’m wondering if is an another solution for programming a simple tracking app if I’ve used a QuecPython compatible model.

Could you program an application into the modem flash and independently provide Internet connection to a Linux device?

For QuecOpen, do you also use the EG25G.
For OpenSolution, Quectel would provide Quectel API to set up data connection.

Can you send me the neccesary tools for write QuecOpen on EG25G?
Thanks

Do you have the Quectel OpenSDK?
Actually there are examples in the sdk.

I don’t know if i understanding correctly the way to manage firmware on quectel modems.

I’ve understood that to use openlinux, Quectel must provide the SDK, under a series of device purchase conditions.
Now, I’m now testing 2 modems (EG25-G and EG915U-EU) I don’t have the possibility of installing OpenLinux.
That is why I’ve read about QuecPython and I thought that in this case you do provide the firmware without purchase conditions. I read in some forum thread how some user asked for it and you sent it to them. I just want to test on one of the 2 modems if I can run my own application (script)

I have never try the QuecPython.
For OpenLinux, Quectel provide some APIs for customer to set up data connection.

Quectel also provide an example like

int main(int argc, char **argv)
{
    int retry = 10;
    int loop;
    ql_data_call_s data_call[3];
    ql_data_call_info_s data_call_info;
    ql_data_call_error_e err = QL_DATA_CALL_ERROR_NONE;

    memset(&data_call, 0, sizeof(data_call));

    /*
     * The dialup API relies on the Quectel Manager service. If the program is not initialized successfully,
     * debugging these API interfaces will fail, so here is judged whether the service is started normally.
     */
    while(0 != QL_Data_Call_Init_Precondition() && 0 != retry) {
        printf("The Quectel manager service is not initialized, about 500ms try again.\n");
        usleep(500*1000);
        retry--;
    }

    if(0 == retry) {
        printf("Data call failure\n");
        exit(0);
    }

    if(QL_Data_Call_Init(data_call_state_callback)) {
        printf("Initialization data call failure\n");
        exit(0);
    }

    if(QL_Data_Call_Init(data_call_state_callback)) {
        printf("Initialization data call failure\n");
        exit(0);
    }

    for(loop = 0; loop < sizeof(data_call)/sizeof(data_call[0]); loop++) {
        memset(&data_call_info, 0, sizeof(data_call_info));
        err = QL_DATA_CALL_ERROR_NONE;
        data_call[loop].profile_idx = loop+1;
        /*
         * If your data call program is coredump, the data call status will not disappear automatically.
         * When your program is start again, you need to call the QL_Data_Call_Info_Get interface to get
         * the data call status. Because it is already in the data call state, you call QL_Data_Call_Start
         * again without callback function
         */
        if(QL_Data_Call_Info_Get(data_call[loop].profile_idx, QL_DATA_CALL_TYPE_IPV4, &data_call_info, &err)) {
            printf("get profile index %d information failure: errno 0x%x\n", data_call[loop].profile_idx, err);
            continue;
        }
        if(QL_DATA_CALL_CONNECTED == data_call_info.v4.state) {
            printf("the profile index %d is already connected, don't up\n", data_call[loop].profile_idx);
            continue;
        }
        data_call[loop].ip_family = QL_DATA_CALL_TYPE_IPV4;
        data_call[loop].reconnect = true;
        err = QL_DATA_CALL_ERROR_NONE;
        if(QL_Data_Call_Start(&data_call[loop], &err)) {
            printf("the profile index %d start data call failure: 0x%x\n", data_call[loop].profile_idx, err);

        }
        printf("the profile index %d start data call success\n", data_call[loop].profile_idx);
        usleep(500*1000);
    }
    sleep(3600);
    return 0;
}