BC95-G issues with command CSODCP

Hi everyone, I hope you can help me out with this issue I have.
I am trying to start a non-ip connection with the module BC95-G, the module I have is at revision V150R100C10B200SP1.
I am issuing the command as follows:
“TEST”=0x54455354
TX> AT+CSODCP=1,4,54455354

In return the module is telling me:
RX> +CMEERROR: 50

As my understanding code 50 means incorrect parameters. By reading the documentation I cannot find a proper example of valid input data, but I find that it requires a “string of octets”, what does it mean by that? Isn’t a hex coded string a string of octets?

Thanks in advance

hi, Andrea_Gilardoni
Oh, I can’t find a corresponding case either, but according to 3gpp27.007, I think you may have lost the quotation marks.
TX> AT+CSODCP=1,4,“54455354”
or
TX> AT+CSODCP=1,8,“54455354”

Thanks for your answer Herbert,
I don’t think the issue here are the quotation marks.

I don’t know if this topic is related to this issue I submitted on github, but I hope there is consistency between data formats in AT communication in different communication modes. In that case I found out the commands to send data through TCP and UDP didn’t require quotation marks.

However I tried to send data in multiple formats:

  • hex string with and without quotation marks
  • Ascii characters with and without quotation marks
  • empty string ("")

I had no better results, thus I am wondering what “string of octets” means, because it is first mentioned in the device datasheet for that command in which there are no useful examples in the documentation.

I am also wondering if non ip communication may not be supported by the module I have, maybe because I have the module at the wrong version. I am thinking this because the AT commands manual of the module in question at version 1.0 (Quectel_BC95-G&BC68_AT_Commands_Manual_for_SoftBank_V1.0) says it the command is under development, while it is present at the version 1.5 (Quectel_BC95-G&BC68_AT_Commands_Manual_V1.5).

hi, Andrea_Gilardoni:
Step 1: Configure the PDN type to non-ip

AT+QCGDEFCONT=”non-ip”,”VZWINTERNET” //For example, please fill in according to your actual APN

In the above command, the APN: VZWINTERNET should be change to a right APN of NIDD of VZW lab. The details of the command can be seen in AT manual.
Step 2:Confirm the module has attached to the network.

AT+CEREG?

If the result of the querying command if 1 or 5, it means the module has attached to the network. The non-ip pdn is not based on IP type, hence there is no IP address upon registration to the network via non-ip.
Step 3: Send data via non-ip

AT+CSODCP=0,length,data

Data is the content of the data to be send which should be inside the quotes. Length is length of the data to be send.
Step 4:read the non-ip data

+RECVNONIP:,,

If the module receive some non-ip data, it will show the URC above. There is no need to do any setting for non-ip data reading.

Before you testing NON-IP, please confirm the network is available to testing non-ip data.

The following command is not present in the commands manual:

Did you perhaps intend this one: AT+CGDCONT?

Yes, these instructions are used to create the PDP;If you do not receive any return after following the above steps, your current network does not support non-IP data transfer.

Since I am using mbedos libraries to test the device I am going to paste all the commands that are executed to see if the library does something wrong.

This commands I think aren’t doing nothing particularly dangerous, they should only extract some info from the module.

TX: AT+CMEE=1<cr>
RX: OK<cr><ln>
TX: AT+CFUN=1<cr>
RX: OK<cr><ln>
TX: AT+CGMI<cr>
RX: <cr><ln>Quectel<cr><ln><cr><ln>OK<cr><ln>
TX: AT+CGMM
RX: <cr><ln>BC95GJB-02-STD<cr><ln><cr><ln>OK<cr><ln>
TX: AT+CGMR
RX: <cr><ln>SSB,V150R100C10B200SP1<cr><ln><cr><ln>SECURITY_A,V150R100C20B300SP7<cr><ln><cr><ln>PROTOCOL_A,V150R100C20B300SP7<cr><ln><cr><ln>APPLICATION_A,V150R100C20B300SP7<cr><ln><cr><ln>SECURITY_B,V150R100C20B300SP7<cr><ln><cr><ln>RADIO,Hi2115_RF0<cr><ln><cr><ln>OK<cr><ln>
TX: AT+CRTDCP=1<cr>
RX: <cr><ln>OK<cr><ln>

The following command is not working, In the code I made it possible for everything to work even if the command fails, since it is failing for whatever reason it shouldn’t make any changes

TX: AT+CCIOTOPT=1,1,1<cr>
RX: <cr><ln>+CME ERROR: 50<cr><ln>

TX: AT+CGDCONT?<cr>
RX: <cr><ln>+CGDCONT:1,“NONIP”,"<REDACTED_APN_URL>",0,0,0<cr><ln><cr><ln>OK<cr><ln>

I think here the code tries to reset the settings of the radio, but it seems to not be supported

TX: AT+CGDCONT=0<cr>
RX: <cr><ln>+CME ERROR: 4<cr><ln>

TX: AT+CGDCONT=1,“NONIP”,"<REDACTED_APN_URL>"<cr>
RX: <cr><ln>OK<cr><ln>

TX: AT+CIPCA=3,1<cr>
RX: <cr><ln>OK<cr><ln>
TX: AT+NCONFIG=“AUTOCONNECT”,“TRUE”<cr>
RX: <cr><ln>OK<cr><ln>
TX: AT+COPS?<cr>
RX: <cr><ln>+COPS:0,2,“22201”<cr><ln><cr><ln>OK<cr><ln>
TX: AT+CEREG=2<cr>
RX: <cr><ln>OK<cr><ln>
TX: AT+CGACT?<cr>
RX: <cr><ln>+CGACT:1,0<cr><ln><cr><ln>OK<cr><ln>
TX: AT+CGATT?<cr>
RX: <cr><ln>+CGATT:1<cr><ln><cr><ln>OK<cr><ln>
TX: AT+CSQ<cr>
RX: <cr><ln>+CSQ:14,99<cr><ln><cr><ln>OK<cr><ln>
TX: AT+CSQ<cr>
RX: <cr><ln>+CSQ:14,99<cr><ln><cr><ln>OK<cr><ln>

I think that this is the result of the connection to the network and it is saying “Registered, home network”.

TX: AT+CEREG?<cr>
RX: <cr><ln>+CEREG:2,1,9128,0AB49BA1,9<cr><ln><cr><ln>OK<cr><ln>

TX: AT+CSQ<cr>
RX: <cr><ln>+CSQ:14,99<cr><ln><cr><ln>OK<cr><ln>

TX: AT+CGDCONT?
RX: <cr><ln>+CGDCONT:1,“NONIP”,"<REDACTED_APN_URL>",0,0,0<cr><ln><cr><ln>OK<cr><ln>

TX: AT+CGACT?<cr>
RX: <cr><ln>+CGACT:1,0<cr><ln><cr><ln>OK<cr><ln>
TX: AT+CGACT=1,1<cr>
RX: <cr><ln>OK<cr><ln>

Here the device sends data, but the result code tells that the operation is not supported. I tried it with both quotation marks on and off.

TX: AT+CSODCP=1,4,“54455354”<cr>
RX: <cr><ln>+CME ERROR: 4<cr><ln>

This is what is happening from the execution of the code I am writing, If the issue lies in the command sequence I can try to fix it and I could also open an issue on mbedos.

hi, Andrea_Gilardoni:
I think the main reason for the failure is that the network is not supported. I suggest you consult your SIM card provider and network operator to see if they support non-IP data service.

I will try to verify and make sure that nonip communication mode is supported.

Why this command is telling I was able to connect to the network? If I am able to connect with a PDP context I assume the network supports it, am I right?

Why is this command failing? Could this command affect the result of the send command happening after? If it was applied correctly

hi, Andrea_Gilardoni:
please refer the manual, you can execute the following “AT Command” and try to send the data

AT+NSNPD //send non-ip data
AT+NRNPDM=1 //Set up Non-IP data mode for URC result

By replacing the command AT+CCIOTOPT=1,1,1<cr> with the one below I am getting error 50 (incorrect parameters)

By replacing the following command:

with either one of the following commands:

AT+NSNPD=1,4,54455354
AT+NSNPD=1,4,“54455354”
AT+NSNPD=1,4,TEST
AT+NSNPD=1,4,“TEST”

I am always getting the following message in response:

+CME ERROR: 50

Am I missing something?

What is the difference between the command CSODCP and NSNPD? As my understanding the alter one allows you to decide whether to use the control or the user plane, is that it?
The data format should be the same, they are both mentioning “string of octets” data format.

Try executing the following command:

AT+NSNPD=1,8,54455354
AT+NSNPD=1,8,“54455354”

If it still returns an error, then I really don’t know what the problem is. After all, there are too few non-IP data transfers in reality, I’m really sorry.

I just got a reply on this by my network provider and I had been told that nonip messaging was not supported. However I would like to understand something that may be helpful for others.

  1. When I was getting error 4 (not supported error code) was this a sign that could led me understand this operation could be not supported by the network operator or the chip manufacturer?
  1. The connection to the network was successful, I was expecting it to fail if the network provider didn’t support the communication method I was trying to use, I suppose there is no negotiation of protocol during the connection phase. So one could expect to successfully join the network, but fail during the communication of the first packet. Am I correct?

  2. +CME ERROR: 50: could this error occur when the settings are incorrect? I mean I send the AT command properly formatted with the correct parameters, but because I set with another command a value of a setting, still fail?

Thanks herbert.pan for all the time you dedicated me, I hope my experience could be of benefit to others.

hi, Andrea_Gilardoni:
You are wonderful and your search for knowledge is commendable!