W32K-Mode running under Open AT


Module: Q2686H
Firmware: 660_09gg
OpenAT: 4.00 b04

When the at+w32k=1 - command is send from an external application the module goes into the powerdown mode and has a powerconsumption of about 1mA (bursts not measured). The Open At application is still running. If the same command is send by the internal application, the powerconsumption goes to appr. 15mA, athough the response to the command is “ERROR”. How is the right way to enter the w32k-mode by application?



I would like to ask about this power down mode. For entering in this mode is only necessary the AT command “at+w32k=1”? Or, is necessary anything else using any pin of the module a DTR or GPIO_0?

Thank you very much.


Hello Everyone,
To be able to send the module in power down mode using AT+W32k=1 command, the following steps should be taken:

  1. Give AT+W32K=1 command.
  2. Give a transition on DTR pin (i.e. make the DTR pin on logical low level).
  3. Now, when the power down is successful, the module will also lower its CTS pin which would indicate that it has entered the low power mode.

In case, this command is given from within the Open-AT application, there is no transition on the DTR signal. Hence, the module does not go into low power mode.

If you use TMT/TE with power down functionality, the SELIMA tool automatically takes care of giving a transition on the DTR signal when AT+W32K=1 command is given.
This is why the module enters the low power mode when the external applicaiton is used.

Best Regards,
Open AT Fan.



thanks for your responses! But I gave a transition on the DTR pin with an other port. A other way is to shut down UART1 and to activate UART2. Using AT+W32k=1 leads to the same power consumption. This consumption is about half as normal but not as low as when i use the command from an external application.

Does anyone have some power consumption values from the Q2686H?

Best Regards,



OpenAT_Fan thank for your response. You had helped me a lot of.

Sorry for my little english.

Best Regards


Hi everybody

I have similar values for the current consumtion of Q2668H: Slow Idle Mode takes about 2 mA. My concern is, that if I switch on the UART2 section on the Development Kit, consumption rises up to 12 mA (I’d like to stress, that I do measure the consumption of the module VBATT, VBAT is supplied separately).

@marcus.joachimi: could you be a bit more specific about what you did to get into ‘slow idle’ mode?

However, this feature of required DTR falling transition is stopping us from making devices without any DTR connected on UART1. Is there no other way to get into ‘Slow Idle’ mode? Do I need to use a GPIO to emulate this transition to get an independent application? I can’t see the feature aspect of it, it rather appears like a bug to me.

@OpenAT_Fan:Is there any attempt of wavecom to alter this?


Hi phhuber,

it seems to me that it is not possible to reach w32k-Mode under OpenAt running. When you send at+w32k=1 you will get only ERROR under OpenAt. When you use a gpio to make a transition on the DTR (UART1 is not used by an external application) you will only shut down UART1 (this is not the slow idle mode!) The same effect will you reach by shut down UART1 with at+wmfm=0,0,1. Unfortunatly I got no information from my distributor for this item.

When OpenAt is running you can of course send at+w32k=1 from external application and with a transition an DTR the module goes to the slow idle mode. OpenAt is then still running (module wakes up on interrupts for a short time) consuming very low average current. This should be possible by sending at+w32k=1 through OpenAt, but it don’t works.


Hi Marcus

Actually I got lucky. I did get it into ‘slow idle’ mode with an GPIO (definitely not what I was looking for but so far so good). I’m sure about this because of following reasons:
a) I see the current consumption dropping to 2mA (when UART2 switched off on the board)
b) I see the reaction of my additional display which is refreshed with an adl Timer: it only works sporadically, when there are peeks in the current consumption. The module updates status during that period and swiches into ‘fast idle’ mode for a moment.
c) I also subscribed UART2 (at+wmfm=0,1,2, as well as adl_fcmSubscribe), which receives in ‘fast idle’ mode but not in ‘slow idle’ mode.
After a reset I send the at+w32k=1 command on the default port 0 (virtual port and receive an ADL_STR_OK)
Then after some initialisation I cause DTR to go low for a while and then pull it up (DTR has inverse levels).

Now the question is, what’s wrong with your Application. Especially, why do you get an ERROR on at+w32k=1
I had that error before but can’t quite remember the circumstances. Will tell you more if I remember or see it again.



Hi everyone,

I have a custom designed board for Wismo Q2501 and I have always used the W32k slow mode in order to save battery life.
W32K was driven by GPIO3 and made transitions on the DTR pin.

Since I am developing GPRS/TCP/IP it doesn’t work anymore.
I get negative answer on adl_ioWrite, answer -3.

Can somebody help me ?

Thanks in advance,



I’m actually using TcpClient as well. My application sends and receives data every 20 seconds. During the idle period the module is in ‘Slow Idle’ Mode.

I noticed that the transition on DTR needs to be done more than once, at what condition it is necessary, I can’t tell.
I do a transition whenever I send and receive data. Also it seams necessary to keep DTR active a bit longer (maybe 100ms, can’t tell for sure).


Hi phhuber,

thanks for the answer,

I have tried to make a loop in order to retry writing to high state the GPIO, but I got repeatedly the same error and at last an RTK exception.

There must be something active in my TCP connection that keeps the DTR to one fixed level or something multiplexing that unables the usage of GPIO pin.

Whereelse can I look for ?

Please help me




a) -3 means ADL_RET_ERR_UNKNOWN_HDL (check adl_error.h) seams like you do not give the correct handle which you suppose to get from adl_ioSubscribe. Further: use adl_ioWriteSingle, it’s signature is less complex and it works fine.

b) GPIO3 is a 1.8V Pin, UART1 works with 2.8V (DTR is a 2.8V Pin) (I use GPIO19). By the way, GPIO3 is the Interupt 0 Line, be carefull with that, interrupts also brings the module into ‘Fast Idle’ mode. (Haven’t worked with it yet)


Hi phhuber,

I don’t want to be boring, but this affair is driving me mad

here are the two blocks of code that subscribe and control my GPIO3 which makes transitions on the DTR pin.
I specify that this stuff worked before I started any GPRS and ed_lib development.
Really, I don’t see any mismatch in handles or any other thing.

What can I do ?


If I feel bored, I’m not answering anymore :wink:

If it worked before, I can not help you.

As I state above, your handle might be invalid, so check it before you use it (can not be seen in your snippets). And as I also said, you’re working with wrong voltage levels (if it worked, you’re lucky)

I can not see from your code whether ADL_IO_Q25X1_GPIO_3 is actually a pointer to adl_ioWrite_t and I can not see that you are sending a high eState. Furher, as OpenAT_Fan statet, a transition is necessary to switch the mode. If your pin is high already, your code has no effect. Set the pin to low for a while and pull it up again.

That’s about it, I’ afraid. :confused:
I’m also just a user hoping for beter support of wavecom which leaves this tasks to its users. :cry:


Hi Philipp,

It’s magic! The at+w32k=1 - command works when its send by OpenAt! The only difference between now and my first post on 04 May is that the OpenAt-Version is not a beta anymore. Could this be cause? I don’t know but I have changed since then a lot of in the program. But both times I send it after a “+wind: 4”.

But I made also an interessting experience: You need not pull down the DTR Pin after the the w32k-command. Simply switch off UART1 with at+wmfm=0,0,1. I did not test if is still necesseray (I say “still” because I made a lots of test with older firmware and OpenAt-Versions) but I think before shut down UART1 you have to switch on UART2. Otherwise the module will not restart anymore…



Hello everyone,

about the problem I mentioned in driving the DTR pin with a GPIO, this is not a hardware problem since the input level for DTR is at least 0.7*VCC = 0,7 * 2.8 =~ 1.8 - 1.9V = GPIO3 output on wismo Q2501.

I am now sure that this is a software failure in my development and I would like to receive the official answer to my question, how can I get rid of answer -3 = Unknown handle in adl_ioWrite function ?

I would be glad if someone who experienced this same problem could help me.



P.S. Does anyone know where is OpenAT_fan ? I haven’t heard him since June.


well it’s simple,

-3 error is given by adl_ioWrite function which tries to write a GPIO handle which doesn’t exist.

The handle I did specify is a global variable and its value was lost between two functions from two different source files.

That’s all folks,




Hi Marcus,

Indeed it works! It took some time until I could continue again on that toppic… :wink:



Hi All
I Have two questions :

  • I’ve seen in AT Commands Documents that the wireless CPU requires 1 to 15 seconds to power down consumption. Have you remarked this ?

  • And also, during the Wakeup period after for example Opent AT Timer expiration, the wirless CPU switch to fast Mode and switch back to slow after treatments. So is there anyone who have try to see if in this wakeup period the features that are deactivated on slow Mode will be activated ?