Debugging T-Mobile IPv6-only with GL-iNet Spitz (RM520N-GL)

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.

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:

Hello @whfsdude

May I know if you can ping IPv4 when setting APN IP type to IPv4v6?

Regarding the issue that CLAT not working in IPv6 apn, can you help to get some qlogs for analysis?
Refer to the following instruction, collect the qlog logs for the APN settings set to IPv6-only and IPv4v6, respectively. Thanks

@Cathy Can I get the latest AT command manual for RM520N-GL?

For me once CLAT is enabled on the modem, X3000 gets 192.0.0.2 and you can use 192.0.0.1 as nexthop for v4 destinations. How do you even toggle v4 / v4v6 APN in 4.0 0704release5 firmware?

for me `AT+CGDCONT?` shows IPV4V6

Here is the AT command manual for RM520N
Quectel_RG520N&RG525F&RG5x0F&RM5x0N_Series_AT_Commands_Manual_V1.1.pdf (1.6 MB)

Command AT+CGDCONT can be used to set APN, where the parameter PDP_type is used to specify the connection via v4/ v4v6.