I’ve been digging into an issue with the GL-X3000 router on T-Mobile Home Internet where the router’s OS doesn’t seem to be fully aware of the modem’s built-in CLAT (464XLAT) support when the APN is set to IPv6-only.
- The GL-X3000 uses a Quectel RM520N-GL modem, which supports CLAT internally AT+QCFG="clat".
- T-Mobile’s mobile core is effectively IPv6-only; IPv4 access is provided via 464XLAT.
-
- 464XLAT is the full mechanism (RFC 6877) that glues together:
- CLAT (Customer-side Translator): runs on the device (phone, router, modem). It gives the OS a fake IPv4 (often 192.0.0.2 per RFC 6333), and translates that into IPv6 packets.
- PLAT (Provider-side Translator): lives inside the ISP network, translating the IPv6 packets back to IPv4 for the wider Internet.
- 464XLAT is the full mechanism (RFC 6877) that glues together:
-
With APN set to IPV4V6:
AT+CGDCONT?
+CGDCONT: 1,"IPV4V6","fbb.home","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,0,,,,,,,,,,"",,,,0
- Modem is still IPv6-only on the network side, but CLAT starts up. Because T-Mobile won't hand out an IPv4 address on an IPV4IPV6 APN in most markets.
AT+QCFG="clat"
+QCFG: "clat",1,1,"",0,"ipv4only.arpa.",0,0,1,1,2,2
1: CLAT daemon enabled
1: PDN profile ID
Note: ipv4only.arpa is a special-use domain to determine IPv4 connectivity.
We can further see it's enabled because of the RFC 6333 on the router.
rmnet_mhi0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:192.0.0.2 Mask:255.255.255.224
inet6 addr: 2607:fb91:4b85:15e::::/64 Scope:Global
inet6 addr: 2607:fb91:4b85:15e::::/64 Scope:Global
inet6 addr: fe80::a3ab:::/64 Scope:Link
UP RUNNING NOARP MTU:1500 Metric:1
With APN set to IPV6:
AT+CGDCONT?
+CGDCONT: 1,"IPV6","fbb.home","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,0,,,,,,,,,,"",,,,0
Modem shows CLAT enabled
AT+QCFG="clat"
+QCFG: "clat",1,1,"",0,"ipv4only.arpa.",0,0,1,1,2,2
Router's modem interface shows only IPv6
rmnet_mhi0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet6 addr: 2607:fb90:a81b:811f::::::::/64 Scope:Global
inet6 addr: 2607:fb90:a81b:811f::::::::/64 Scope:Global
inet6 addr: fe80::a3ab::::::/64 Scope:Link
UP RUNNING NOARP MTU:1500 Metric:1
The GL-X3000 firmware doesn’t appear to hook into the modem’s CLAT interface when PDP is IPv6-only. With IPV4V6, everything works (CLAT exposed as 192.0.0.2). With IPV6, the CLAT daemon is still running (per AT queries), but the Linux side doesn’t use it.
Why this matters
- T-Mobile recommends IPv6 APNs, but on the GL-X3000 this setting loses IPv4 connectivity because the router firmware isn’t consuming the CLAT path.
- The workaround right now is to leave the APN as IPV4V6 even though the network only hands out IPv6.
Ideally the firmware should support using CLAT on an IPv6-only APN with an option to disable it if needed — or even better, it could automatically detect when the modem’s CLAT daemon is enabled and attach that IPv4 address to the Linux interface.
Other threads around this issue: