Help Resetting NEO-F10N Breakout Baudrate (Stuck at Non-Standard 11520, No Communication)

Hello! I recently purchased a “SparkFun GNSS L1/L5 Breakout - NEO-F10N, SMA”. It was a little confusing to get it working at first, I wasn’t seeing any messages in u-center (which I had to use the soda WINE fork with Bottles in order to run on my Linux machine) but I eventually figured out the baudrate is set to 38400 by default. It’s been working great, except for one small problem, I accidentally set CFG-UART1-BAUDRATE to 11520 (instead of 115200, with an extra zero, oops) in BBR and Flash :triumph:. The problem is that I can’t control my breakout anymore! I also think I set CFG-UART1-PARITY to “1 - ODD”, but I know parity bits have been working already with standard baudrates…

I don’t know if it’s a limitation of the CH340, but when I try setting a custom baudrate in u-center to 11520 it doesn’t start communicating… I have a handheld oscilloscope and by probing the TX pin I can confirm that each bit is ~86.8 μs, which comes out to almost exactly 11520, still without the extra zero… Thankfully, I have an Arduino UNO R3, which I think can talk at arbitrary baudrates, but unfortunately I have no clue how to send the message to set the baudrate back to something standard, like 38400. Either that or I am wiring my Arduino incorrectly, I have tried using a jumper to connect the GND pin on my NEO-F10N breakout and Arduino, and another jumper, resistor, potentiometer etc. to the RX pin on the NEO-F10N breakout but the baudrate still seems to be stuck at 38400 :frowning:

Using the config view in u-center, I found the “Show Hex Toggle” output for setting “UART1” to “0+1 - UBX+NMEA” protocol in and out with a baudrate of 38400 looks like this:

0000  24 50 55 42 58 2C 34 31 2C 31 2C 30 30 30 33 2C 30 30  $PUBX,41,1,0003,00
0012  30 33 2C 33 38 34 30 30 2C 30 2A 32 34 0D 0A           03,38400,0*24

So, I whipped up a little program for my Arduino that outputs this message over serial:

const char message[] = "\x0D\x0A$PUBX,41,1,0003,0003,38400,0*24\x0D\x0A";

void setup() {
  Serial.begin(11520, SERIAL_8O1);
}

void loop() {
  delay(1000);
  Serial.write(message, sizeof(message));
}

But no luck. I noticed the Arduino is set to HIGH when Serial is idle, so I modified my program to turn it off when unused (and added some extra line returns for good measure):

const char message[] = "\x0D\x0A\x0D\x0A\x0D\x0A\x0D\x0A$PUBX,41,1,0003,0003,38400,0*24\x0D\x0A\x0D\x0A\x0D\x0A\x0D\x0A";

void setup() {
  pinMode(1, OUTPUT);
  digitalWrite(1, LOW);
}

void loop() {
  delay(1000);
  Serial.begin(11520, SERIAL_8O1);
  Serial.write(message, sizeof(message));
  Serial.end();
  pinMode(1, OUTPUT);
  digitalWrite(1, LOW);
}

Still nothing. So does anybody have any ideas?

Hi @Zi7ar21 ,

Have you tried a SAFEBOOT? Disconnect the power, hold a jumper wire between the SAFE pad and GND, reconnect the power, remove the wire. Can you connect with u-center? If you can, you should be able to use UBX-CFG-CFG to restore the default configuration, then save the configuration.

I hope this helps,
Paul

Hi @Zi7ar21 ,

Also, if the CH340 TX is still connected to the NEO RX pin, the CH340 TX and Arduino TX will fight each other. You will almost certainly need to open the USB-RX and USB-TX jumpers on the back of the board. That will isolate the CH340, allowing the Arduino TX to get a foot in the door. Adding a 1K resistor in series is all you need to protect the 3.3V NEO RX from the 5V Arduino TX: Arduino TX → 1K → NEO RX.

I hope this helps,
Paul

@PaulZC thanks for the response
I used a jumper between the “SAFE” and “GND”, it took a few tries in order to establish communication in u-center (maybe WINE issues) but I was eventually able to communicate again (I used my oscilloscope and found it reverts to 9600 baud)

I send UBX-CFG-CFG a few times and was even able to manually set the baudrate in BBR and Flash to 38400, I was also able to change the baudrate in safeboot mode to 38400, but when I reset it, it still goes back to the faulty 11520 baud.

I don’t wanna cut the PCB quite yet, the CH340 was one of reasons I bought this breakout board, I mean I guess I could solder it back afterwards but surely it wouldn’t be under warranty then right?

Attached are the packet console and binary console outputs, if you are curious
packet_console.txt (2.7 KB)
binary_console.txt (376.6 KB)

Hi @Zi7ar21 ,

Thanks for the update. I’m glad Safeboot is working for you.

There are two steps to restoring the default configuration. Please check you are using u-center ‘classic’, not u-center2. Open the Messages View. Navigate to UBX \ CFG \ CFG. Select “Revert to default configuration” (on BBR and FLASH) and click “Send”. Select “Save current configuration” and click “Send”. Then power-cycle.

If all else fails, we can send you the SPG 6.00 firmware binary and you can reflash it using Tools \ Firmware Update.

Best,
Paul

I did that except the save current configuration afterwards.

Just tried it with save current configuration, still doesn’t appear to be working. My friend suggested I short the battery, but if you can send me the firmware that would be great, I can’t find it for the NEO-M10N on ublox’s website.

I will PM the firmware to you. It isn’t publically available, but u-blox have give us permission to share it with customers.

Hey Paul. From safeboot I was able to update the firmware (setting the “Use this baudrate for the update” to 115200 was even worked, so I didn’t have to wait around at 9600 baud haha) and it appears to finally be back at 38400 baud. Thank you so much for your help. No idea why UBX-CFG-CFG and CFG-UART1-BAUDRATE couldn’t be set from safeboot, but reinstalling the firmware did the trick.

Nice one. Glad it’s finally working for you!

All the best,
Paul