Swarm M138 : Can't receive messages from bumbleblee.hive to M138

Hi,

I’ve been trying to test the two ways communications on my datalogger.

At the moment, it works by sending data more or less every hour, then go back to sleep. (power completely off).

Sending data has been working fine.

But I’ve been trying lately to implement functionalities that are based on receiving messages. Like for example change the amount of sleep time, etc.

The first time that I tried sending a message I had an error saying that no route could be found to my modem. I’ve been told by their support to try again later which I did.

But now I see from hive, that my messages got through the satellite, but when I check on the modem itself, there are no messages in the buffer at all. Read or unread. (using $MM C=**74)

Message notification was enabled, so I don’t know what this message notification looks like. Maybe this delete the message after it has been received ? I’ve been trying to find more information on that in the M138 manual, but it is not very informative).

Is there somebody here that could make it work ? And could give me some help with this.

Swarm support hasn’t been super responsive on that problem so I’m trying my luck here.

Thanks a lot for your help.

Geoffrey Johnen

Hi Geoffrey,

Here’s my understanding on this:

For “downlink” messages, they are passed from the Ground Station to a satellite that is known to be passing over your location. The system has to know your location - based on a previous successful transmit - for this to work. If your modem happens to be turned off when that satellite passes overhead, then the modem won’t receive the message.

We did receive some information from Swarm about this. This was months ago though - when fewer satellites were in orbit. Things may have changed since then.

"

Downlink can be tricky and sometimes unpredictable based on location. We’ve just released an “auto-retry” that knows your last transmit location and optimizes which satellite to put the message on to optimize the link. That should start to reduce times, as well as more satellites. Since our sats are not meshed together, the message will get put on one sat that will need to pass over the device waiting in receive mode. After a certain amount of time, if the message is still on a satellite, we’ll push it onto another. It’s best used for updating minor configuration changes, not for turning off a water pump.

I’ve had messages come through anywhere between 15mins and 3 hours, but it’s possible based on some remote locations to need to wait 48 hours. They should be sent to a satellite within 90 minutes or less based on the router and which ground station it will relay over.

It can be more consistent if the user always sends the downlink at say, 12pm, then generally the same sat will get it every time and you would have a better baseline. It’s tough right now with our constellation not complete.

"

I hope this helps,

Paul

Hey Paul !

Thank you so much for the answer it really helps.

It confirms indeed that it is not as straightforward as I thought it would be, as a previous Iridium user.

I’ve seen this “retries attempt” on hive, they try 5 times if I’m correct.

I think there are still a few things that I don’t understand with this process :

  • What do they mean by “waiting in receive mode” ? Is that a command to use ? Or does it just mean to let the Swarm M138 powered on and to wait ?

  • Does disabling message notifications change anything apart from disabling the unsolicited $RD messages ? Because the way we code our ESP32 here is to avoid unsolicited messages as much as possible to keep control on the flow.

  • When a Swarm Modem 138 enters in communication with a satellite, does downlink or uplink has the priority ? At the moment, as soon as our buffer is empty, we cut the power, but we were worried that if the downlink happens after the uplink, then we won’t let opportunity for the modem to actually receive any messages.

Thank you so much for your help Paul, it is really appreciated.

Geoffrey

Hi Geoffrey,

I’ll answer as best as I can. I have successfully tested the downlink, but it was months ago - back when I was writing the Library and the code examples…

I’ve used Iridium (SBD) too. Swarm is very different…

I’ve seen this “retries attempt” on hive, they try 5 times if I’m correct.

Sorry. I don’t know the answer to that. I can ask Swarm if needed.

What do they mean by “waiting in receive mode” ? Is that a command to use ? Or does it just mean to let the Swarm M138 powered on and to wait ?

My understanding is that the modem simply needs to be “on” - i.e. not asleep or powered off.

Does disabling message notifications change anything apart from disabling the unsolicited $RD messages ?

My understanding is that it doesn’t change anything. The messages should still be received. You just need to check the number of received (unread) messages manually instead.

When a Swarm Modem 138 enters in communication with a satellite, does downlink or uplink has the priority ?

Sorry. I don’t know. I can ask Swarm if needed. I suspect it is very different to Iridium (SBD) where you exchange one uplink message and one downlink message in a single ‘transaction’. If I had to guess, I’d say uplink probably happens first. Downlink probably happens either when the satellite is close to apogee (based on it knowing your location) - and/or after it receives the uplink message(s)?

I hope this helps,

Paul