Communication Problem Between OpenMV H7 Plus and Rockblock9603 Satellite Module


I am having a problem while trying to communicate Rockblock 9603 satellite module from my OpenMV H7 Plus board.
I am simply trying to have an “OK” response to my “AT” command. With PuTTY, everything works fine, when I enter “AT”, it immediately returns OK to me. Also, with Python, everything works fine with original RockBlock Github test codes ( Adafruit_CircuitPython_RockBlock/ at main · adafruit/Adafruit_CircuitPython_RockBlock · GitHub ).

Below is the code block that I am trying to communicate with the satellite module.

It always returns None to my “AT” commands. However, in all trials I’ve done (more than 500), it returned OK for 2-3 times and I have no idea why it responded correctly.

Below is the output that I have.


For the times when it returned “OK”, the command was NOT b’AT\r’ , it was b’AT\r\r\n’. So I also tried to set it manually to b’AT/r/r/n’ instead of b’AT\r’, but it did not work.

About the connections, I’m sure I plugged everything correctly. RXD and TXD are connected to P5 and P4 ports respectively, I also tried P0 and P1 ports, but it also did not work.

Any ideas how to solve this weird problem?

Thanks a lot!

1 Like

readline() has a timeout that’s set by the UART driver init. You might want to read each byte in a loop manually and then check for a newline to be more robust.

So, readline is not getting any data likely.

1 Like

Thanks for your reply. I tried to read each byte in a loop but it again did not work. I have also set the timeout parameter in UART constructor with different values such as 100, 300, 5000 etc., however, “None” is the only output I still have.

Below are the codes I’ve changed and the output I’ve been getting.

Further help would be great if possible. Thanks in advance.


Code part where I’ve set timeout to different values:


1 Like

Okay, how did you init the UART?

  • timeout is the timeout in milliseconds to wait for writing/reading the first character.
  • timeout_char is the timeout in milliseconds to wait between characters while writing or reading.

These above parameters need to be set higher than the default or you will get no characters.

1 Like

Below are how I did init the UART. Even though I tried many different values, I still get None, and None only.

Also, for make it crystal clear, this is the constructor of it:


Do you think there is a possibility that this problem is caused by the OpenMV? Sorry to disturbing you continuously but it is extremely important for us to communicate with the iridium module over the OpenMV, and we are about to come to a point where we will be left out of our solution ideas.

The init call overwrites the previous call.

So, you are setting it correctly and then throwing that away. Please do everything in the constructor.