Diffrence between X51 to X55


Hello everybody

I recently counter some problem with my application. I have build application using M1306 with X51, and for reading sms I’m using AT+CMGR. On X51 when some one reading at wrong indexes the modem give respond +CMS ERROR: 321, and my application make some procedure with the respond value. But when I’m using new modem with X55 it makes error because the modem didn’t give the error value +CMS ERROR: 321, it just give respond OK.

My question is can we make the modem to give error message? And how to do that?




To enable the error messages, we have to give command


and save that command using


then if there is some error, you get a +cme: error or +cms: error

With Regards,


That changes the error responses from just “ERROR” to “+CME: ERROR”

The OP is saying he’s getting “OK” instead of “ERROR”


x51a: +CMS ERROR: 321
x55: OK
x57: OK

This is exactly according to documentation actually.

In x57, I get OK on all empty slots, but +CMS ERROR: 321 on indices that goes beyond what AT+CPMS? say is max.

I don’t know what the GSM specification say regarding empty slots but my guess is that Wavecom have “fixed” previously incorrect behaviour.


I know AT+CMEE=1, and awneil had explained.

For tobias

I agree that wavecom have “fixed” and it is a good one, but in my application, I’m using the previous behaviour. And to change my application will make me using my resource (time, and etc.). I just want to make the error appear again. Maybe using the DIP SWITCH SETTINGS, or is it possible to downgrade the firmware, from X55 to X51 using DwlWin, but from my distributor I just get the files of firmware X55 like 66_arm_eDSoft_310_32.wpb; pro-dwl.wpb; q2406b.e2p; w.e2p.


It should be possible to downgrade a Q2406B.

If you can’t get your distributor to give you older firmware, you’ll have to work around the problem on your own.

Could be useful to know that if a slot does have an SMS stored, the reply will start with +CMGR, but if not, only the OK will appear.

Another thing that you may want to look into is how you handle SMS’s that only contain terminal responses like OK, ERROR, +CMS ERROR, as the sms text is sent as the same response type as the terminal responses, and the ADL library can’t be used to determine if it’s the terminal response or sms text without your help.

The RspID in the adl_atResponse_t struct is not reliable as that is determined internally with a string compare instead of actually determining if it’s a terminal response or not. (At least it was like this in OAT 3.03 and I doubt that’s changed)


Forgot to add…

x51 should be avoided if you’re using ADL for your application… Some AT commands will crash the application if sent with adl_atCmdCreate.
x51a has been pretty safe to use though.