nRF9151DK v0.9.0 USB UART stops working

Hello,

I have been developing on a nRF9151DK v0.9.0 for a few weeks now. So far this board is great! However, I have been running some long duration tests recently and logging through the default UART backend that is piped through the USB connector (J6) as a virtual COM port.

The issue I am seeing is that after some random amount of time (less than 24 hours), I no longer receive any UART messages. Yet, the COM port is still connected and open on the PC and the devkit application is still working as expected, indicated by LED activity.

I reproduced this with a simple example in the nRF Connect SDK:

My setup:

  • Windows 11 PC
    • This PC never goes to sleep, only turns the screen off. I have another piece of hardware logging on a different COM port on the same machine for over a week now without interruption. It is a dedicated test PC, not my development PC. Thus, it is not being interacted with during my tests.
  • nRF9151DK connected to PC via USB-C cable from J6, which is also powering the DK.
  • Modem firmware: mfw_nrf91x1_2.0.1
  • nRF Connect SDK / Toolchain: 2.9.0
  • Terminal app: PuTTY
  • nRF Connect Sample App: zephyr/samples/basic/blinky
  • Build configuration
    • Board: nRF9151dk/nrf9151/ns
    • Leave the rest of the build configuration settings at their default values

Simply build the application, flash it onto the DK, and open the application COM port. You will see LED1 blink continuously along with the following repeated output:

*** Booting nRF Connect SDK v2.9.0-7787b2649840 ***
*** Using Zephyr OS v3.7.99-1f8f3dc29142 ***
LED state: OFF
LED state: ON
LED state: OFF
LED state: ON
LED state: OFF
LED state: ON
LED state: OFF
LED state: ON
LED state: OFF
LED state: ON
LED state: OFF

Let this run overnight and check it the next day. No more messages are received on the COM port yet the LED is still blinking.

Is this a known issue on this devkit? Seems like there are many points of potential failure. I imagine this UART is piped through the nRF5340 on the DK, maybe it's getting hung up there.

Any input would be appreciated. We plan to use a UART to talk to a co-processor in our final design so I want to mitigate any risks or issues. Hopefully this is an issue with the devkit or something other than the nRF9151 SOC.

Thanks,

Derek

Parents
  • Hi,

    I assume you try to reconnect Putty right?

    Does resetting work?

    If you increase the frequency of the logging, will the error happen sooner?

    Regards,
    Sigurd Hellesvik

  • Hey  

    I let the devkit run overnight, and I see that it stopped logging again, but the COM port is still open as previously observed. The last series of log messages are:

    [00:11:27.816,375] <inf> led: LED state: ON
    [00:11:27.916,473] <inf> led: LED state: OFF
    [00:11:28.016,571] <inf> led: LED state: ON
    [00:11:28.116,668] <inf> led: LED state: OFF

    Thus, it ran for 11 hours and 28 minutes with SLEEP_TIME_MS set to 100.

    Does resetting work?

    Pushing the reset button (SW5) does not resolve the issue. I see the nRF9151 SOC reset indicated by a momentary pause in the blinking of LED1. The COM port remains open but nothing comes through.

    Closing and reopening the COM port resolves the issue as previously observed.

    If you increase the frequency of the logging, will the error happen sooner?

    Since my last test was the first one where I was logging timestamps, I have reverted SLEEP_TIME_MS from 100 to 1000 and will run another overnight test to see if it takes longer to occur. I will report my findings once I have them.

    Edit: It could be PuTTY. My next test after this one will be to use a different terminal app.

    Thanks,

    Derek

Reply
  • Hey  

    I let the devkit run overnight, and I see that it stopped logging again, but the COM port is still open as previously observed. The last series of log messages are:

    [00:11:27.816,375] <inf> led: LED state: ON
    [00:11:27.916,473] <inf> led: LED state: OFF
    [00:11:28.016,571] <inf> led: LED state: ON
    [00:11:28.116,668] <inf> led: LED state: OFF

    Thus, it ran for 11 hours and 28 minutes with SLEEP_TIME_MS set to 100.

    Does resetting work?

    Pushing the reset button (SW5) does not resolve the issue. I see the nRF9151 SOC reset indicated by a momentary pause in the blinking of LED1. The COM port remains open but nothing comes through.

    Closing and reopening the COM port resolves the issue as previously observed.

    If you increase the frequency of the logging, will the error happen sooner?

    Since my last test was the first one where I was logging timestamps, I have reverted SLEEP_TIME_MS from 100 to 1000 and will run another overnight test to see if it takes longer to occur. I will report my findings once I have them.

    Edit: It could be PuTTY. My next test after this one will be to use a different terminal app.

    Thanks,

    Derek

Children
  • Thanks for doing extensive testing here Derek!

    droberson said:
    Edit: It could be PuTTY. My next test after this one will be to use a different terminal app.

    If it is not putty, I will report this as a bug internally and try to reproduce this myself as well.

  • Hey Sigurd,

    I have completed some additional testing and here are my results.

    SLEEP_TIME_MS 1000 with Putty last few messages received:

    [00:14:44.556,427] <inf> led: LED state: OFF
    [00:14:45.556,640] <inf> led: LED state: ON
    [00:14:46.556,793] <inf> led: LED state: OFF

    It ran for 14 minutes

    SLEEP_TIME_MS 1000 with YAT (Yet Another Terminal):

    [00:09:14.503,021] <ESC>[0m<inf> led: LED state: OFF<ESC>[0m
    [00:09:15.503,234] <ESC>[0m<inf> led: LED state: ON<ESC>[0m
    [00:09:16.503,387] <ESC>[0m<inf> led: LED state: OFF<ESC>[0m
    [00:09:17.503,601] <ESC>[0m<inf> led: LED state: ON<ESC>[0m
    [00:09:18.503,753] <ESC>[0m<inf> led: LED state: OFF<ESC>[0m
    [00:09:19.503,967] <ESC>[0m<inf> led: LED state: ON<ESC>[0m
    [00:09:20.504,119] <ESC>[0m<inf> led: LED state: OFF<ESC>[0m
    [00:09:21.504,333] <ESC>[0m<inf> led: LED state: ON<ESC>[0m
    [00:09:22.504,486] <ESC>[0m<inf> led: LED state: OFF<ESC>[0m
    [00:09:23.504,699] <ESC>[0m<inf> led: LED state: ON<ESC>[0m
    [00:09:24.504,852] <ESC>[0m<inf> led: LED state: OFF<ESC>[0m
    [00:09:25.505,065] <ESC>[0m<inf> led: LED state: ON<ESC>[0m
    [00:09:26.505,218] <ESC>[0m<inf> led: LED state: OFF<ESC>[0m
    
    <Closed and re-opened COM port here>
    
    [36:00:21.127,136] <ESC>[0m<inf> led: LED state: ON<ESC>[0m
    [36:00:22.127,288] <ESC>[0m<inf> led: LED state: OFF<ESC>[0m
    [36:00:23.127,502] <ESC>[0m<inf> led: LED state: ON<ESC>[0m
    [36:00:24.127,655] <ESC>[0m<inf> led: LED state: OFF<ESC>[0m
    [36:00:25.127,868] <ESC>[0m<inf> led: LED state: ON<ESC>[0m
    [36:00:26.128,021] <ESC>[0m<inf> led: LED state: OFF<ESC>[0m
    [36:00:27.128,234] <ESC>[0m<inf> led: LED state: ON<ESC>[0m
    [36:00:28.128,387] <ESC>[0m<inf> led: LED state: OFF<ESC>[0m
    [36:00:29.128,601] <ESC>[0m<inf> led: LED state: ON<ESC>[0m
    [36:00:30.128,753] <ESC>[0m<inf> led: LED state: OFF<ESC>[0m
    [36:00:31.128,967] <ESC>[0m<inf> led: LED state: ON<ESC>[0m
    [36:00:32.129,119] <ESC>[0m<inf> led: LED state: OFF<ESC>[0m
    [36:00:33.129,333] <ESC>[0m<inf> led: LED state: ON<ESC>[0m
    [36:00:34.129,486] <ESC>[0m<inf> led: LED state: OFF<ESC>[0m
    [36:00:35.129,699] <ESC>[0m<inf> led: LED state: ON<ESC>[0m
    [36:00:36.129,852] <ESC>[0m<inf> led: LED state: OFF<ESC>[0m
    [36:00:37.130,065] <ESC>[0m<inf> led: LED state: ON<ESC>[0m
    [36:00:38.130,218] <ESC>[0m<inf> led: LED state: OFF<ESC>[0m

    It ran for 9 minutes. Note that I closed and reopened the COM port and it resumed logging, hence the gap in timestamps above.

    I have compiled all test results below thus far for concise reference.

    • SLEEP_TIME_MS 100
      • Logged via Putty
      • Stopped receiving UART messages after 11 hours and 28 minutes
    • SLEEP_TIME_MS 1000
      • Logged via Putty
      • Stopped receiving UART messages after 14 minutes
    • SLEEP_TIME_MS 1000
      • Logged via YAT (Yet Another Terminal)
      • Stopped receiving UART messages after 9 minutes

    I thought of one more test to run to rule out any potential power saving stuff that Windows 11 might be doing on this USB port, and to rule out the devkit. I am going to run an overnight test on a nRF52840 devkit using the same blinky application with a 52840 build configuration and will report my findings.

    Thanks,

    Derek

Related