BGS5T VCCREF reboots | Thales IoT Developer Community
December 10, 2016 - 1:22am, 8523 views
Hello,
I have a simple PCB with a jumper used to choose between +5V from the module or an external 3.3V source. For some very strange reason once the module is connected to the PCB the module will reboot if +5V is connected to VCCRef. Even after removing and connecting +5V to VccRef the module will continue to reboot.
The reboots seems to coincide when using an internet connection, perhaps due to higher power usage. When connected to the PCB but without the jumper connected everything works and is stable. Even the inputs and outputs work correctly. This is even more strange because in this situation VccRef is not even connected to anything yet the digital inputs/outputs work. By change measuring VccRef when it is disconnted reads about +2V.
What is very concerning is that when VccRef is disconnected things work which not how it should be according to the datasheet. When +5V is connected to VccRef the module reboots normally during network usage, but not always but roughly %90.
We have used simple code and various midlets to rule out programming issues but the reboots continue. The module reboots without any warning or error message.
Thank you.
Hello,
Could you write some more about the problem:
Did you have an opportunity to test this on more than one device?
Could you check the ATI1 reply.
What kind of input and output are you using?
Have you configured the interfaces properly on the module and terminal?
Can you share the code that reproduces this problem?
Are you using watchdog?
Are you using the HW interfaces besides network connections or just connecting 5V is enough?
Regards,
Bartłomiej
Hello,
We have tested this on various modules and the problem will occur to each of them. The +5V powers a few chips, buttons, a transistor and VCCREF and the total power consumption is less than 10mA with everything activated. Even with +5V directly connected to VCCREF without any external PCB or connections(see image) the module will reboot continuously. Sometimes it will reboot before ^SYSSTART shows and sometimes it will let the midlet run a little before rebooting.
We use 2 inputs for reports and shutting down the module which are connected to +5V. We have 1 output which goes to a transistor to turn on a relay. Even with this disabled the problem persists. We use an external ADC and an external RTC. The ADC and RTC communicate via I2C.
After an unknown period of time (24 hours or less) without any power the module will begin to work again with +5V directly connected to VCCREF without the PCB. We have even simplified our circut removing the transistor/relay, buttons and chips. The circut now is simply +5V to a jumper that connects to VCCREF.
When VCCREFF is left hanging, not connected, everything works even while the rest of the GPIO is connected to the PCB. Even the buttons work when in this state. Once we place the jumper to connect +5v to VCCREF the module starts rebooting. After this happens even removing the PCB all together and connecting +5V to VCCREF directly (see image) will cause the module to reboot continously before ^SYSSTART or randomly at the start of the midlet. The network activity or high power consumption due to the activity seems to be a factor because if the midlet is idle then the module is stable. Once I initalize the GPIO and start connecting to the network thats when the module tends to reboot.
Again to be clear, once the reboots begin the module will continue to reboot even when not connected to the PCB and only has +5V directly connected to VCCREF.
It is difficult to say exactly where in the code the module reboots because the module will reboot at different points. Sometimes the midlet isn't even running when the module reboots. Most of the time the module tends to reboot during an NTP sync which runs the following code. There are no other threads using the network or ATCOMMAND interfaces during this sync.
connURL = new StringBuffer(45);
connURL.append("datagram://:9001");
connURL.append(";bearer_type=gprs;access_point=");
connURL.append(gprs_apn);
connURL.append(";username=");
connURL.append(gprs_user);
connURL.append(";password=");
connURL.append(gprs_pass);
connURL.append(";timeout=50;");
try
{
//udp = (DatagramConnection) Connector.open("datagram://:9001", Connector.READ_WRITE, true);
udp = (DatagramConnection) Connector.open(connURL.toString(), Connector.READ_WRITE, true);
final byte[] buf = Ntp.toByteArray(new NtpMessage());
Datagram sendDatagram = udp.newDatagram(buf, buf.length, "datagram://"+server+":123");
udp.send(sendDatagram);
Datagram receiveDatagram = udp.newDatagram(buf, buf.length);
udp.receive(receiveDatagram);
// Immediately record the incoming timestamp
final double destinationTimestamp = Ntp.currentNtpTime();
// Process response
NtpMessage msg = Ntp.toMessage(buf);
// Corrected, according to RFC2030 errata
final double localClockOffset = Ntp.calculateLocalClockOffset(destinationTimestamp, msg);
return (long) (localClockOffset * 1000);
}
catch (Exception e)
{
throw new Exception("Exception " + e.getMessage());
}
finally
{
if (udp != null)
{
udp.close();
}
}
All modules we use are prepared in the same manner using the following commands.
Commands that are run using the ASC0 interface at 1200 baudrate. These commands are run in this order.
WD=RST_REP,0,0
WD=RST_UART,0,0
WD=MIN_START_TIME,0,0
WD=ALWAYS_ON,0,0
WD=ON,0,0
Commands are run in this order.
AT^SPOW=1,0,0
AT^SJOTAP = "pwd",,,,,,,,,,,,
AT^SCFG="GPIO/****/DAI","gpio"
AT^SCFG="gpio/****/asc1","std"
AT+CFUN=1,1
AT^SCFG="Serial/Interface/Allocation","1"
AT+CFUN=1,1
at^SCFG="Userware/Autostart","","1"
AT^SCFG="Userware/Watchdog","1"
AT^SCFG="Userware/StdOut", "ASC0"
ATI1
Cinterion
BGS5
REVISION 01.100
A-REVISION 00.000.18
OK
at^scfg?
^SCFG: "Call/ECC","0"
^SCFG: "GPRS/AutoAttach","enabled"
^SCFG: "Gpio/****/ASC1","std"
^SCFG: "Gpio/****/DAI","gpio"
^SCFG: "Gpio/****/DCD0","std"
^SCFG: "Gpio/****/DSR0","std"
^SCFG: "Gpio/****/DTR0","std"
^SCFG: "Gpio/****/FSR","gpio"
^SCFG: "Gpio/****/PULSE","gpio"
^SCFG: "Gpio/****/PWM","gpio"
^SCFG: "Gpio/****/RING0","std"
^SCFG: "Gpio/****/SPI","rsv"
^SCFG: "Gpio/****/SYNC","std"
^SCFG: "Ident/Manufacturer","Cinterion"
^SCFG: "Ident/Product","BGS5"
^SCFG: "MEShutdown/Fso","0"
^SCFG: "MEopMode/SoR","on"
^SCFG: "Radio/Band","15"
^SCFG: "Radio/OutputPowerReduction","4"
^SCFG: "Serial/Interface/Allocation","1","1"
^SCFG: "Serial/USB/DDD","0","0","0409","1E2D","0059","Cinterion Wireless Modules","Cinterion BGx USB Com Port",""
^SCFG: "Tcp/IRT","3"
^SCFG: "Tcp/MR","10"
^SCFG: "Tcp/OT","6000"
^SCFG: "Tcp/WithURCs","on"
^SCFG: "Trace/Syslog/Otap","0"
^SCFG: "URC/Ringline","local"
^SCFG: "URC/Ringline/ActiveTime","2"
^SCFG: "Userware/Autostart","1"
^SCFG: "Userware/Autostart/Delay","0"
^SCFG: "Userware/Passwd",
^SCFG: "Userware/Stdout","asc0",,,,"off"
^SCFG: "Userware/Watchdog","1"
Hello,
This morning I found the module rebooting with the following message:
^SYSLOADING
SYSTEM.OUT STARTED
java.lang.NoClassDefFoundError: ev
- java.lang.Class.invoke_verify(), bci=0
- java.lang.Class.initialize(), bci=100
- com.cinterion.jrc.JRC_Context.a(), bci=58
- aQ.a(), bci=166
- com.cinterion.jrc.JRC_Midlet.startApp(), bci=114
- javax.microedition.midlet.MIDletTunnelImpl.callStartApp(), bci=1
- com.sun.midp.midlet.MIDletPeer.startApp(), bci=5
- com.sun.midp.midlet.MIDletStateHandler.startSuite(), bci=261
- com.sun.midp.main.AbstractMIDletSuiteLoader.startSuite(), bci=38
- com.sun.midp.main.CldcMIDletSuiteLoader.startSuite(), bci=5
- com.sun.midp.main.AbstractMIDletSuiteLoader.runMIDletSuite(), bci=134
- com.sun.midp.main.AppIsolateMIDletSuiteLoader.main(), bci=26
Hello,
Thank you for the answers.
I would like to try if it's possible to reproduce this behaviour. I would need the simplest possible scenario for that. I'm not sure if just connecting 5V to Vccref and connections to the NTP server should cause the module reboot or I would need to connect the additional hardware first and communicate with this hardware also.
You are probably using the GPIO lines. Have you configured the GPIO directions in the terminal?
There is also the watchdog activated. Is it possible that it could cause reboots?
There is an update for the firmware that you are using - maybe you would like to check with the new version?
The last exception is from the JRC MIDlet. You are using the autostart - are you able to get this problem without autostart also? What is the Oracle-MIDlet-Autostart setting in the jad file? It should be at least 2 to ensure that the MIDlet will be started after JRC.
Regards,
Bartłomiej
The simplest connection which reproduces the problem is connecting +5V to VCCREF via a jumper. We have eleminated any extra hardware to simplify.
We configure the GPIO with the "GPIO configurator" application that was found here on the forum. I confirm that the GPIO becomes properly configured.
The software watchdog is activated late in the startup and with a "timeout" of 5 minutes. It does not make sense that the watchdog is rebooting the module since the reboots occur before the watchdog is started.
Please send the firmware update, I would like to see if it makes a difference.
The midlet has the Oracle-MIDlet-Autostart is set to 2. Turning autostart off the module will not reboot. The JRC gives this exception when the code is activating the ATCommand:
if (!initilized){
atCom = new ATCommand (false);
initilized = true;
}
Our midlet does not throw any exception but the JRC does and this did not happen before. Even after turning off this particular module will throw this JRC exception. We have not found any other modules with doing with this particular behavior.
Thank you.
Hello,
I have sent you the latest firmware. Please try if the problem still exists.
In case of the one module throwing exception I would suggest also updating the firmware or reflashing with the same version. If the problem will still exits and will reproduce with just AtCommand instance creation without any other activity (that could suggest some other reason) I would consider the device as damaged and suggest to contact the local Gemalto office to replace it.
Regards,
Bartłomiej
Hello,
We now have another module that reboots imediatly at startup and the JRC throws the following error:
SYSTEM.OUT STARTED
java.lang.IllegalStateException: no factory available
- com.cinterion.jrc.JRC_Factory.a(), bci=12
- com.cinterion.jrc.JRC_LogManager.a(), bci=9
- com.cinterion.jrc.JRC_LogManager.d(), bci=18
- cM.d(), bci=5
- com.cinterion.jrc.JRC_Midlet.startApp(), bci=22
- javax.microedition.midlet.MIDletTunnelImpl.callStartApp(), bci=1
- com.sun.midp.midlet.MIDletPeer.startApp(), bci=5
- com.sun.midp.midlet.MIDletStateHandler.startSuite(), bci=261
- com.sun.midp.main.AbstractMIDletSuiteLoader.startSuite(), bci=38
- com.sun.midp.main.CldcMIDletSuiteLoader.startSuite(), bci=5
- com.sun.midp.main.AbstractMIDletSuiteLoader.runMIDletSuite(), bci=134
- com.sun.midp.main.AppIsolateMIDletSuiteLoader.main(), bci=26
Thanks.
Hello,
Have you already tested with the new firmware?
Regards,
Bartłomiej
Hello,
We currently have one batch of modules running the old firmware and another batch running the new firmware. Once we have some concrete information I will post an update.
So far we have noticed that most of the problems appear on PCBs that were not placed in an oven before sealing with conformal coating. We live in a high humidity area and the problem may be related to humidty locked into the PCB.
We are still in the process of testing but since we started placing the PCBs in an oven the reboots and strange issues have gotten better. We are reducing variables and once we have more information I will let you know.
Thanks.
Hello,
I would like to update this thread with new information. We have concluded that the firmware update does not resolve the issues we have been having. The issue is not caused by our software nor our PCB but rather it seems the modules are defective.
We have over 40 modules and so far we found16 modules that fail. The main issue was that when VREF was connected to the 5V GPIO the module would randomly reboot, normally during network activity (SMS, HTTP, etc.) however due to the randomness of the fault it is difficult to pin point specifics areas in which the fault occurs.
We started tested modules and performing diagnostics and have seen the following faults:
Hard locks - Amber light stops flashing, no response from the module on any interface. USB is not properly recognized by Windows.
Random reboots - The module will reboot without notice. Some***** the module will reboot 5-10+ ***** in rapid succession even before ^SYSTART appears or our code begins to execute.
Random GPIO trigger - We have a couple of digital inputs that are randomly triggered.
Random JRC errors - Less frequent but we have seen some odd messages that do not come from our app.
At least one module will not perform OTAP.
All of these faults have been observed on brand new modules with a stable wall adapter power supply. Nothing was connected to the module except the connection from 5V to VREF. On a few modules we observe these faults without the connection from 5V to VREF absolutly nothing connected to the module.
We found a brand new module to hard lock imediately and wont even allow AT commands to be run. The firmware update software is unable to communicate with the module as well. Once the power jack is inserted the green LED turns on and that is it. No amber led, no USB interface, no RS232 interface, nothing.
We have about 15 modules that are running stable with the same exact code. The app runs stable and correctly on these modules so we can rule out the code as the source of the problem. Apparently we started software development with a stable module because we ran a battery of stress tests to test the code stablitiy and the module´s stablity which at the time was working. Of course the software may still have bugs but it is very hard to believe the software is the culprite when 15 modules are stable. Every single module has the same exact configuration as the one I posted here previously. The steps and commands are all the same performed in the same order.
So far 30 of the 40 modules we have purchased has been tested and so far 16 of those 30 have critical faults. We are continuing to test the remaining modules and already have contacted the vendor.
Since the change from the TC65 to BGS5T we have had a horrible experience. A few changes like missing power button, no battery connection for RTC , RJ plug for power has been a pain but relativly easy to deal with. The stablity issues are not so easy to over look and it seems like the JRC/firmware is also quite buggy since the transition from the TC65 because so far most of the problems the solution is a firmware update. It is extremly fusturating because durning such instability our natural reaction is to double check the software or something we might have done incorrectly.
Since starting with these modules we have had issues with OTAP, configuration troubles/old or incorrect information on datasheet, random reboots and shutdowns. The reboots are the worst. We have modules that worked during configuration then were delievered to the field and within weeks some***** days come back with the faults I described. We have spent months and lots of money testing our desgins, our code and our hardware only to find out the module was the problem all along.
Has no one else complained about similar issues? I look on the forum and I find a few threads with a couple of similar faults but no solution or response on those threads. The only "solutions" are to update to a new firmware. Was there a bad batch or lot that left the factory? By sending these defective modules back can you ****** me that the next batch wont be defective? It is very upsetting that now we must test every brand new module. If these problems persist and we cannot find a solution in due time we will be forced to stop using Gemalto modules and will develop another solution for our *****.
Thank you.
Pages