This week we worked out that EE now (it was announced last year, not sure when it got turned on) has an NB-IoT network.
We noticed because it decides to start dropping UDP packets after about 120KB of transfer, which is about 41% of the way through downloading a new firmware version.
Turns out the devices we thought were in poor network coverage and wouldn't update over the air had just chosen the EE network rather than the Vodafone one...
@amcewen any retries built in to the software layer? Have definitely had to deal with shoddy LTE M coverage in the past, like when my device decided to connect to the tower across town instead of the one next to my house for some unknown reason...
@chris_gammell yes, but the Zephyr (well nRF) download_client is fairly brittle if the retries aren't what it expects. (Presumably that's partly why it all got reworked recently - I've not tried the new version yet)
I added a fairly simple fix to download_client (so it didn't barf if it received a duplicate of the previous packet), which got things a bit further but eventually it failed with a DNS error!?!
@amcewen oh, wonder if your session got closed? Certain carriers have ridiculously short timeout requirements (30s?!)
@amcewen Golioth has SessionID baked in, which is tied to using CoAP. And the SDK has a bunch of new retry logic in the newer versions.
@chris_gammell seems the DNS error was related to my simple fix not quite being right; improving that has had it finish the download, but there were two periods (in the 12m30s of download) where it just hung for about 4 minutes with no network traffic seeming to get through (I don't have packet-level sniffing on either end, but can see the retries from the client and the CoAP requests when they hit the server)
Odd.
What's "SessionID" in this context, btw?
@amcewen ha, not a thing....I was thinking of ConnectionID, apologies!