The u-blox-C027 is a complete starter kit that allows quick prototyping of a variety of applications for the Internet of Things. The application board has a MAX-M8Q GPS/GNSS receiver and …

Some odd Ublox C027 behaviour and crashes without USB power.

06 Mar 2014

Just a warning to others, the C027 doesn't seem to like running without the USB socket powered up.

The most obvious flaw can be seen on the schematic, the reset button only goes to a part powered by the USB bus which then controls the CPU reset. This means that if the USB interface isn't powered up the reset button doesn't work.

I've also seen some odd results with applications that don't use the USB port running fine with the USB connected for startup and then disconnected but crashing if the USB is never connected. Hello world doesn't have this issue so it is application dependent. My best guess / random speculation as to the cause is that things aren't getting a clean power on reset.

There is a simple work around to this, just connect the output labeled 5V on the side of the board to pin 1 on the USB socket (the square pin) and the board supplies power to it's own USB interface and everything works fine. A switch on that connection is probably a good idea, you don't want to supply 5V and then also connect a USB cable, nasty things can happen when two things try to drive the same power rail. Since USB power only seems to be needed for startup or the reset button you could instead use a momentary button rather than a switch and hold it down when connecting the main power without USB connected.

07 Mar 2014

The RESET_FB button is intended to start the target programm after drag and drop programming. For stand alone operation you can of course use the Arduino standard TGT_RESET signal on the pin header.

Regarding your workaround: You may want to consider to add a diode to your workaround. So you dont break the bord when you connect power supply and USB at the same time.

If the USB port is not powered you have to be careful in using some of the mbed functions. There are libraries that make calls back to the interface CPU by semihosting. One of there call is getting the mac address in the ethernet library. So for example if you use ethernet you have to implement your own mbed_mac_address function. The benefit of this architecture is that you can emulate your final product which may not have the interface on board.