> You can't really do that though. It is fully possible for a
> roam off LTE onto 3G and not be attached... So we still need tosend
> +CGATT in this case.
You can't really do that, either. It is possible that the module hops
off LTE for a CSFB call of for a simple SMS, and the current logic
It may be the logic is flawed here. Or the event sequence causes GPRS
to thrash about and cause a detach. I wonder if this can be fixed in
the gprs core atom itself?
E.g. for a CSFB / SMS, we should see something like:
+CREG: 1, foo, bar, 7 // Home network, EUTRAN
+CREG: 1, baz, bea, 2
+CGREG: 1, baz, bea, 2
will send immediately AT+CGATT=0 which will wreak havoc: the
that should be handed-over or suspended are released, and the module
So if we're sending a +CGATT=0 in that event sequence, then it is likely
a bug. Can you actually share an AT command trace / debug log of what
is happening? export OFONO_AT_DEBUG=1 prior to running oFono.
is never able to return to LTE because forced to detach.
I didn't see the call drop in my tests, but it is not impossible that
some modules would also do that as a consequence.
I didn't test on the move or with a simulator, but I suppose also in
case of HO LTE->3G we have the same scenario.
The problem is that every vendor handles CGATT slightly differently. It
is a bit of a mess, but yes it sounds like we are doing something wrong
For Gemalto modules it is kind of mandatory to let the module handle
the attach by itself if it supports LTE, and I believe also for other
vendors, hence the autoattach flag.
Well, this is a bit of a strange situation actually. So the original
RoamingAllowed logic was introduced because some networks actually
charged roaming fees when the Modem was attached (not even context
activated) to the PS network. So the RoamingAllowed hammer was added to
make sure that if the user enabled that option, no attach would be
attempted while roaming.
This still in theory applies to LTE-capable devices: even if we drop
from LTE to 3G to make a phone call, we should still detach if the
setting applies. So the question is why does +CGATT affect anything in
the LTE state? In some sense I don't think it was meant to affect LTE
However, I think the fundamental problem is that 27.007 never provided
us the right command to actually tell the modem what to do. We really
just needed a hint out to the modem not to auto-attach while roaming,
something that mapped to RoamingAllowed setting. Unfortunately the
+CGATT was the only thing available.
Maybe the data-roaming logic should move from attach to context activation.
Also the operators expect it to work this way nowadays, even for
So honestly I was never happy with the RoamingAllowed stuff, nor the
logic that drove it. But at this point we're kind of stuck with it for
1.x. The question is, can this be fixed somehow?
If not, then we can consider starting oFono 2.x branch and dropping
RoamingAllowed from the D-Bus API. This would also allow us to fix some
other long-standing issues with the D-Bus API as well. However, this is
quite a major step with its own consequences...