Loading WIP plug in on Q2687


i have fulfilled the following steps in order to install WIP plug-in on wavecom Q2687 :


  1. Erase old file thanks to AT+WOPEN=0, AT+WOPEN=4 and AT+WOPEN=3
  2. Send AT+WDWL and load WipSoft_v202.wpb.dwl file using Hyperterminal (by XModem)
  3. As soon as the file is loaded, reset the module by AT+CFUN=1
  4. Start WIP function thanks to AT+WOPEN=1
  5. Check WIP operating mode thanks to AT+WIPCFG=1 and AT+WIPCFG=3

Now, i have developed an OpenAT application which used wip library and i load it thanks to AT+WDWL.

But after application loaded and started with AT+WOPEN=1, i typed AT+WIPCFG=3 (or 1) and wavecom module returns an ERROR.

So, is it normal ? WIP plug-in is it properly loaded on Wavecom module ? should i loaded WIP plug-in each time i deployed a new OpenAT application on Wavecom module ?

Thanks you for your help


As I know the wipSoft is only for new Q24 series module or Q2406B with 657 or higher firmware. Wavecom has not made wipSoft program for Q26 series module.

Maybe you can check by entering AT+WOPEN=2, you will see two OpenAT versions; 1st : OpenAT version supported by this module, 2nd: OpenAT version of the downloaded file.



+WOPEN: 2,“AT v04.20”,“AT v04.20”

Wavecom has gave to me Firmware version 6.62 for Q2687 and WIP stack 2.02 in a same e-mail. Does it is possible that they make a mistake ? i don’t think.

But, the main problem is that when i execute my OpenAT application the wip_bearerOpen() function returns WIP_BERR_NO_DEV (= the device does not exist).

So, how solve this problem :

  • Does the WIP plug-in is properly installed on wavecom module (as describe above) ?
  • Maybe different operations should be made before calling wip_bearerOpen() function in my OpenAT application ? (i already use adl_sim_Subscribe() of course, but maybe others (AT+CGATT ?!) ?!)

Thanks you in advance for your help and guidelines

Sorry I really don’t know there is wipSoft for Q26 series. Nevertheless if you are downloading your own written and complied program to the module this will overwrite the wipSoft dwl file (wipSoft is actually an OpenAT program itself)

Before you call wip_bearerOpen() have you called wip_netInit( ) first ? If yes what is the return value then ?

WipSoft and the WIP plugin for use with ADL applications are not the same.

WipSoft is a standalone application, while the WIP plugin can be linked with your own application.


When i add wip_Init() function just before wip_bearerOpen(), the OpenAT compilation (in RTE mode) gives the following error :

Code :
[color=blue]/* Open Bearer and install our event handler */

Status = wip_netInit();
Status = wip_bearerOpen(&myBearer, GPRS_Bearer_Device, AL_GPRS_Bearer_Hdlr, NULL);

Compilation :
[color=green]D:\Programmes\Wavecom-OpenAT\WorkSpace-OpenAT\LoadIde.bat -p wmmake -RTE
Loading Open AT IDE…
bash.exe: warning: could not find /tmp, please create!
Loading project settings…
Updating GPRS.mak file from Software Common Settings…
Building mingw_GPRS_H project…

Launch a full library or binary process

… Dependency graph is being built …

… Build sources filtering rules for mingw_GPRS_H

Get …/…/src/al_gprs.c al_gprs.c
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_global.h adl_global.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/basic/wm_types.h wm_types.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/basic/wm_stdio.h wm_stdio.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/basic/wm_remote.h wm_remote.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/basic/wm_list.h wm_list.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/basic/wm_snd.h wm_snd.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_str.h adl_str.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_port.h adl_port.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_at.h adl_at.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_traces.h adl_traces.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_memory.h adl_memory.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_error.h adl_error.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_flash.h adl_flash.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_gpio.h adl_gpio.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_bus.h adl_bus.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_fcm.h adl_fcm.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_osa.h adl_osa.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_AppliInit.h adl_AppliInit.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_UnSoHandler.h adl_UnSoHandler.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_RspHandler.h adl_RspHandler.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_CmdHandler.h adl_CmdHandler.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_CmdStackHandler.h adl_CmdStackHandler.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_TimerHandler.h adl_TimerHandler.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_sim.h adl_sim.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_sms.h adl_sms.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_call.h adl_call.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_gprs.h adl_gprs.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_safe.h adl_safe.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_ad.h adl_ad.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_rtc.h adl_rtc.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_ctx.h adl_ctx.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_msg.h adl_msg.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_irq.h adl_irq.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_sctu.h adl_sctu.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_vs.h adl_vs.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_sem.h adl_sem.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_extint.h adl_extint.h
Get D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/itf/adl_dac.h adl_dac.h
Get …/…/inc/al_gprs.h al_gprs.h
Get D:/Programmes/Wavecom-OpenAT/Plug-ins/WIP/1.10.02/WIP/itf/wip_bearer.h wip_bearer.h
Get D:/Programmes/Wavecom-OpenAT/Plug-ins/WIP/1.10.02/WIP/itf/wip_net.h wip_net.h
Get D:/Programmes/Wavecom-OpenAT/Plug-ins/WIP/1.10.02/WIP/itf/wip_inet.h wip_inet.h
Get D:/Programmes/Wavecom-OpenAT/Plug-ins/WIP/1.10.02/WIP/itf/wip_http.h wip_http.h
Get D:/Programmes/Wavecom-OpenAT/Plug-ins/WIP/1.10.02/WIP/itf/wip_file.h wip_file.h
Get D:/Programmes/Wavecom-OpenAT/Plug-ins/WIP/1.10.02/WIP/itf/wip_channel.h wip_channel.h
Get …/…/inc/bl_gprs.h bl_gprs.h
… Compiling al_gprs.c

al_gprs.c:137:21: warning: unknown escape sequence: ‘\040’
al_gprs.c:143:22: warning: unknown escape sequence: ‘\040’

Get …/…/src/appli.c appli.c
… Compiling appli.c

Get …/…/src/bl_gprs.c bl_gprs.c
… Compiling bl_gprs.c

Copy all needed library and object files

Make links D:/Programmes/Wavecom-OpenAT/OS/4.10.10/ADL/rte_wmadl_4. …/out/rte_wmadl_4.
Make links D:/Programmes/Wavecom-OpenAT/Plug-ins/WIP/1.10.02/WIP/rte_wmwip_2. …/out/rte_wmwip_2.

… Link step in progress …

… Link mingw_GPRS_H.bin …

[color=red]make: *** [make_single_bin] Error 1
rte_wmwip_2.[_ngRandom]+0x25):U:\projet\gsmmi\in: undefined reference to _allmul' rte_wmwip_2.[_ngRandom]+0x33):U:\projet\gsmmi\in: undefined reference to_aullrem’[color=green]
Updating RTE kernel file…
no generated DLL found…
[wmmake error #1] Build error.]

If i comment “wip_netInit()” in my code the compilation (in RTE mode) is Ok. What is this error (in red) ? (in my project i include “wip_net.h” librairy)

In Target Mode the compilation is Ok. But, i wish to use in RTE Mode for debugging.



The problem is already known here :

wavecom.com/modules/movie/sc … php?t=1209

So, thank for your help.


I come back because something is wrong with this plug in internet and me !

    • If i understand properly, The WIPSoft is only an OpenAT application that Wavecom provides to us in order to introduce HTTP and IP connection ? That’s right or wrong ? because it’s not very clear…
    • So, if WIPsoft is only an OpenAT application, what i have to install on my Q2687 in order to handle WIP and HTTP library. (as wip_HTTP_ClientCreateOpts(…)) ? there is something to install ? or it’s already included in my firmware version ?

I currently have the OpenAT OS version : [color=orange]662_09gg.Q2687H 1945024 042307 12:41
My Module is : [color=orange]Q2687
My Open AT version :[color=orange] 4.11
My WIPSoft version : [color=orange]WIP Soft v202 on Open AT OS v420

    • Independently of the previous points, i developped a small program which tries to establish and send an HTTP request. when WIP_BEV_IP_CONNECTED event is sent the following code is executed on my module :

wip_channel_t HTTPCom;

// IP Communciation Ready - we can start IP application from here…
// setup HTTP session

HTTPCom = wip_HTTPClientCreateOpts(NULL, NULL, WIP_COPT_HTTP_HEADER, “User-Agent”, “WIP-HTTP/Client/1.0”, WIP_COPT_END);

     if(HTTPCom != NULL){
        AL_GPRS_SystemOut("HTTPCom established...\r");    
        AL_GPRS_SystemOut("Init HTTP Communication failed\r");        

But, HTTPCom is always equals to [color=violet]NULL.

Do i forgot a parameter in wip_HTTPClientCreateOpts ? how can i know what’s wrong with this method ? Maybe it is due to the two first questions ?

Thank you in advance for your help, time and guidelines :wink: !

Nobody has already used HTTP client ?! someone can help me ?! (Mainly for the third question)

i have tried this :

[color=blue]wip_httpHeader_t http_struct[4];
wip_channel_t HTTPCom;

    http_struct[0].name =  "User-Agent";
    http_struct[0].value = "WIP-HTTP-Client/1.0";
    http_struct[1].name = "Content-Language";
    http_struct[1].value = "en-US";
    http_struct[2].name = "Content-Type";
    http_struct[2].value = "application/x-www-form-urlencoded";
    http_struct[3].name = NULL;
    http_struct[3].value = NULL;

     if(HTTPCom != NULL){
        AL_GPRS_SystemOut("AL_GPRS_Bearer_Hdlr : HTTPCom established...\r");
        AL_GPRS_SystemOut("AL_GPRS_Bearer_Hdlr : Init HTTP Communication failed\r");


But, HTTPCom always equals to [color=violet]NULL !!!

You may have to unlock the Internet features for HTTP to work.

Check in the AT manual how AT+WCFM works so you can check it on your own. If Internet Plug In is not enabled, you need to contact your distributor for a key to unlock.

Or you can write your own HTTP service if you have the know-how.

You can still connect to servers with TCP or UDP if you want to, but the extra features like HTTP, FTP, etc. that do all the hard work for you is not enabled by default.


Thank you tobias for your reply

After several phone call and e-mail to our supplier in order to solve the problem, it appears that our module has NO IMEI and NO key activation for internet plug-in !

i’m disappointed about our supplier because without your help, the problem would be unsolved !!!

So, i wait an activation key. i will tell you if all it’s ok !

Best regards.


With an IMEI and an activation key, it runs much better ! But, problem arises also quickly !

my HTTPClientCreate function is OK. Now, when wip_getFileOpts() is executed, after few seconds WIP_CEV_ERROR event is sent on my BL_GPRS_HTTP_Handler. (“This event is sent when a socket error has occured”).

wip_bearer_t myBearer;
wip_channel_t HTTPCom;


       // setup HTTP session
            HTTPCom = wip_HTTPClientCreateOpts(BL_GPRS_HTTP_Hdlr, NULL, WIP_COPT_HTTP_HEADER, "User-Agent", "WIP-HTTP/Client/1.0", WIP_COPT_END);

         if(HTTPCom != NULL){

                wip_getFileOpts(HTTPCom, "http:\\www.wavecom.com", BL_GPRS_HTTP_Hdlr, NULL, WIP_COPT_HTTP_HEADER, "Accept", "text/html", WIP_COPT_END);

The WIp_development guidelines doen’st explain what could cause this error (page 184) ! Maybe, anybody knows what’s wrong ? or What i missed ?

Thanks in advance.


Noboby implements HTTP library ?!

I used http APIs to download file, so far no problem. Just follow the sample code in WIP document…

Yes, i also follow it. But, when are you call “MyFunction” in the WIP document sample. what are you doing before ?

do you set sim card ? (of course)
do you set AT+cgatt=1 ? (i do)
do you use wip_netInit() ? (i do)
wip_bearerOpen() ? (i do)
wip_bearerSetOpts() ? (i do)
wip_bearerStart() ? (i do)

in my bearer handler when WIP_BEV_IP_CONNECTED event is sent, i start http com with http_clientCreateOpts() (see my last post above) !

So, i’m lost :imp: ! what i forgot ! i have no idea !

Last week i haven’t IMEI and activation key on my Q2687… now yes… need i other things ?


Replacing backslashes with proper slashes might help.

As for your error event. there’s a field ev->content.error.errnum which contains an informative error number; having this error number would help diagnosing what went wrong.

Thank you for your help fft !

I’m working alone on my Q2687 and it’s always helpful to have an outside glance.

In fact, i made a mistake with slashes. i replaced it and now it’s work fine.

i have just another question. I use an HTTP post method to forward data on my server. In my BL_GPRS_HTTP_Hdlr when WIP_CEV_WRITE event is sent, i use wip_write() function to set my HTTP body request.
But, the wip_write() function returns always WIP_CERR_CSTATE.

void BL_GPRS_HTTP_Hdlr(wip_event_t *ev, void *ctx){
   wip_channel_t ch;
    s32 ret;
    u8 u8Index;
    ch = ev->channel;
    int Status, len, tmplen;
    ascii tmpbuf[256];

        case WIP_CEV_OPEN :

        case WIP_CEV_WRITE :             
            wm_sprintf( tmpbuf, "IMEI=XXXXXXXXXX&Ref=0\r\n");
            Status = wip_write(ch, tmpbuf, sizeof(tmpbuf));  
            if(Status = WIP_CERR_CSTATE){
               AL_GPRS_SystemOut("\rAL_GPRS_Bearer_Hdlr : wip_write = WIP_CERR_CSTATE\r");
            }else if(Status = WIP_CERR_NOT_SUPPORTED){
                AL_GPRS_SystemOut("\rAL_GPRS_Bearer_Hdlr : wip_write = WIP_CERR_NOT_SUPPORTED\r");
               AL_GPRS_SystemOut("\rAL_GPRS_Bearer_Hdlr : wip_write = default\r");
            Status = wip_shutdown(ch, FALSE, TRUE);



But, The HTTP request is sent properly, receive on server side and HTTP response is properly received on my Q2687.

So, i would like to understand why wip_write() function always returns WIP_CERR_CSTATE whereas HTTP request work fine ?!

Thanks in advance for your explanation.

Hi !

You’ve made a little error in the if statement :

Instead of comparison operator “==” you use affectation operator “=” : if(Status [color=red][size=150]=[/size] WIP_CERR_CSTATE)


ok ok ! i’m really stupid ! lol ! :wink:
i had not seen this stupid error !

Thank you for your help ! :laughing: