OK. After more testing, I believe that the build-up of tolerances across the modem pad positions, connector contacts positions, screw hole diameters, screw diameters and standoff positions allow the modem to be secured in a position where the TX and RX pads are not connected.
The solution for me is to:
Insert the modem into the M.2 connector
Insert the screws but do not fully tighten them
Press on the edge of the modem near the u.FL connectors to ensure the modem is inserted as far as the screws will allow
Then tighten the screws
I can cause communication to fail by:
Loosening the screws
Sliding the modem out / away from the M.2 connector as far as the screws will allow
The modem remains powered via the bottom row of M.2 contacts. It is the top row which disengages first. TX and RX are on the top row.
I am testing the breakout board and modem returned by @haugenmarine. When I received it, the modem and breakout were separate inside the box. I inserted the modem into the breakout board, secured it with the screws, connected the GPS antenna, connected it to my Windows PC via USB, opened the Swarm GUI and I was able to send commands and get the correct responses. In summary, it appears to be working perfectly…
However, after some trial and error, I am able to insert the modem into the breakout in such a way that: the modem receives power (the modem LEDs illuminate normally); but where serial communication is not possible. I think I have managed to insert it in a position where either the TX or RX pin - or both - are not connected.
The solution is to remove the screws, remove and re-insert the modem, taking care to insert it fully into the socket, and then secure it with the screws.
I will try some more tests and will report again here.
Apologies for the inconvenience and I hope this helps to solve your issue.