Hey! > I have been struggling with a U-Blox SARA R412m over serial. I originally > posted this to the Network Manager list, however I have come to wonder if > this might be a Network Manager issue instead? > > this is then a repost of the original > (https://lists.freedesktop.org/archives/networkmanager/2023-February/000026.html) > > ------------ > > I have a U-Blox Sara R412m LTE-M Modem which I am attempting to use with > Network Manager. The modem is supplied via an IoT 6 Click from Mikroe > (https://www.mikroe.com/lte-iot-6-click). It is connected to a Raspberry Pi > 3b running the latest version of Raspbian Lite 32-bit. > > to summarise early (more detail will follow) Modem Manager is seeing the > modem, however Network Manager is failing to setup a connection; specifically > the error I am seeing currently is "failed to connect 'r412m_serial': > Connection requested IPv4 but IPv4 is unsupported by the modem." - which is > incorrect. > > more detail: > > Initially I had an issue with the Raspberry Pi recognising the modem on > ttyS0; this ended up being an issue with HW Flow Control, by only connecting > RX, TX, 5V and Ground the modem was found on ttyS0 and through minicom > (minicom -b 115200 -D /dev/ttyS0) I am able to issue AT Commands to the modem. > > currently, Modem Manager is able to see the device > > $ mmcli -L > /org/freedesktop/ModemManager1/Modem/0 [u-blox] SARA-R412M-02B > > it looks as I would expect > > $ mmcli -m 0 > -------------------------------- > General | dbus path: /org/freedesktop/ModemManager1/Modem/0 > | device id: 69b7c92de0606d6bbd08dd68bbf7a8ddd0cddd3e > -------------------------------- > Hardware | manufacturer: u-blox > | model: SARA-R412M-02B > | firmware revision: M0.12.00 [Dec 04 2020 16:05:31] > | supported: gsm-umts, lte > | current: gsm-umts, lte > | equipment id: 359159977335935 > -------------------------------- > System | device: /sys/devices/platform/soc/3f215040.serial > | drivers: bcm2835-aux-uart > | plugin: u-blox > | primary port: ttyS0 > | ports: ttyS0 (at) > -------------------------------- > Status | state: registered > | power state: on > | access tech: lte > | signal quality: 100% (recent) > -------------------------------- > Modes | supported: allowed: any; preferred: none > | current: allowed: any; preferred: none > -------------------------------- > Bands | supported: egsm, dcs, pcs, g850, eutran-1, eutran-2, > eutran-3, > | eutran-4, eutran-5, eutran-8, eutran-12, > eutran-13, eutran-19, > | eutran-20, eutran-28, eutran-39 > -------------------------------- > 3GPP | imei: <redacted> > | operator id: <redacted> > | operator name: <redacted> > | registration: home > -------------------------------- > 3GPP EPS | ue mode of operation: csps-2 > -------------------------------- > SIM | dbus path: /org/freedesktop/ModemManager1/SIM/0 > > I have setup a connection, and that to me looks correct > > =============================================================================== > Connection profile details (r412m_serial) > =============================================================================== > connection.id: r412m_serial > connection.uuid: 4da6b696-4540-4764-a942-2b6facda45ca > connection.stable-id: -- > connection.type: gsm > connection.interface-name: ttyS0 > connection.autoconnect: yes > connection.autoconnect-priority: 0 > connection.autoconnect-retries: -1 (default) > connection.multi-connect: 0 (default) > connection.auth-retries: -1 > connection.timestamp: 0 > connection.read-only: no > connection.permissions: -- > connection.zone: -- > connection.master: -- > connection.slave-type: -- > connection.autoconnect-slaves: -1 (default) > connection.secondaries: -- > connection.gateway-ping-timeout: 0 > connection.metered: unknown > connection.lldp: default > connection.mdns: -1 (default) > connection.llmnr: -1 (default) > connection.wait-device-timeout: -1 > ------------------------------------------------------------------------------- > ipv4.method: auto > ipv4.dns: -- > ipv4.dns-search: -- > ipv4.dns-options: -- > ipv4.dns-priority: 0 > ipv4.addresses: -- > ipv4.gateway: -- > ipv4.routes: -- > ipv4.route-metric: -1 > ipv4.route-table: 0 (unspec) > ipv4.routing-rules: -- > ipv4.ignore-auto-routes: no > ipv4.ignore-auto-dns: no > ipv4.dhcp-client-id: -- > ipv4.dhcp-iaid: -- > ipv4.dhcp-timeout: 0 (default) > ipv4.dhcp-send-hostname: yes > ipv4.dhcp-hostname: -- > ipv4.dhcp-fqdn: -- > ipv4.dhcp-hostname-flags: 0x0 (none) > ipv4.never-default: no > ipv4.may-fail: yes > ipv4.dad-timeout: -1 (default) > ipv4.dhcp-vendor-class-identifier: -- > ipv4.dhcp-reject-servers: -- > ------------------------------------------------------------------------------- > ipv6.method: disabled > ipv6.dns: -- > ipv6.dns-search: -- > ipv6.dns-options: -- > ipv6.dns-priority: 0 > ipv6.addresses: -- > ipv6.gateway: -- > ipv6.routes: -- > ipv6.route-metric: -1 > ipv6.route-table: 0 (unspec) > ipv6.routing-rules: -- > ipv6.ignore-auto-routes: no > ipv6.ignore-auto-dns: no > ipv6.never-default: no > ipv6.may-fail: yes > ipv6.ip6-privacy: -1 (unknown) > ipv6.addr-gen-mode: stable-privacy > ipv6.ra-timeout: 0 (default) > ipv6.dhcp-duid: -- > ipv6.dhcp-iaid: -- > ipv6.dhcp-timeout: 0 (default) > ipv6.dhcp-send-hostname: yes > ipv6.dhcp-hostname: -- > ipv6.dhcp-hostname-flags: 0x0 (none) > ipv6.token: -- > ------------------------------------------------------------------------------- > gsm.auto-config: no > gsm.number: -- > gsm.username: -- > gsm.password: <hidden> > gsm.password-flags: 0 (none) > gsm.apn: <redacted> > gsm.network-id: -- > gsm.pin: <hidden> > gsm.pin-flags: 0 (none) > gsm.home-only: no > gsm.device-id: -- > gsm.sim-id: -- > gsm.sim-operator-id: -- > gsm.mtu: auto > ------------------------------------------------------------------------------- > proxy.method: none > proxy.browser-only: no > proxy.pac-url: -- > proxy.pac-script: -- > ------------------------------------------------------------------------------- > > in the above, by default IPV6 is auto; however this results in the following > error: > > failed to connect 'r412m_serial': Connection requested both IPv4 and IPv6 but > dual-stack addressing is unsupported by the modem. > > this is incorrect, the modem does indeed support dual-stack IPV4V6; however > the APN I am connecting to doesn't and so I set ipv6.method to disabled; this > results in the error I am seeing currently >
I believe the issue here is that we don't support IPv4v6 if PPP is used. > failed to connect 'r412m_serial': Connection requested IPv4 but IPv4 is > unsupported by the modem. > > which again, is incorrect, the modem definitely supports IPV4, as does the APN > That is weird; please gather MM debug logs while reproducing it, see https://modemmanager.org/docs/modemmanager/debugging/ > $ nmcli d > DEVICE TYPE STATE CONNECTION > wlan0 wifi connected home_wifi > ttyS0 gsm disconnected -- > p2p-dev-wlan0 wifi-p2p disconnected -- > eth0 ethernet unavailable -- > lo loopback unmanaged -- > > $ nmcli c > > NAME UUID TYPE > DEVICE > home_wifi 8dd9fd2d-f41f-46ac-a03e-bbc7951c2763 wifi > wlan0 > Wired connection 1 2c4f0563-b9c0-3e9a-8474-c72993f8dfa8 > ethernet -- > r412m_serial 4da6b696-4540-4764-a942-2b6facda45ca gsm > -- > r412m_usb 8533c1ad-a8df-4f37-a533-82dd087f3614 gsm > -- > > as can be seen in the above, the IoT 6 click provides a USB interface. The > r412m_usb connection works perfectly, further I can use PPP with this board > using ttyS0 with no issue. Thus my suspicion that the issue is somewhere in > the interaction between NetworkManger and the R412m (for PPP I needed to > adjust the chat-connect to only look for endings of words as the first > character was garbled sometimes) > > $ sudo pon > $ ping -I ppp0 -c5 www.google.com.au > PING www.google.com.au (142.250.187.99) from 10.103.205.10 ppp0: 56(84) bytes > of data. > 64 bytes from sof02s44-in-f3.1e100.net (142.250.187.99): icmp_seq=1 ttl=114 > time=289 ms > 64 bytes from sof02s44-in-f3.1e100.net (142.250.187.99): icmp_seq=2 ttl=114 > time=347 ms > 64 bytes from sof02s44-in-f3.1e100.net (142.250.187.99): icmp_seq=3 ttl=114 > time=289 ms > 64 bytes from sof02s44-in-f3.1e100.net (142.250.187.99): icmp_seq=4 ttl=114 > time=329 ms > 64 bytes from sof02s44-in-f3.1e100.net (142.250.187.99): icmp_seq=5 ttl=114 > time=290 ms > > --- www.google.com.au ping statistics --- > 5 packets transmitted, 5 received, 0% packet loss, time 4000ms > rtt min/avg/max/mdev = 289.279/308.917/346.877/24.422 ms > > with Network Manager, I notice in the connection there is a serial section, > but it's not printed by default - looking at it, it shows > > nmcli> goto serial > You may edit the following properties: baud, bits, parity, stopbits, > send-delay > nmcli serial> print > ['serial' setting values] > serial.baud: 57600 > serial.bits: 8 > serial.parity: none > serial.stopbits: 1 > serial.send-delay: 0 > > the r412m though is set to use 115200 (which is how I have MM setup) > > $ sudo systemctl stop ModemManager > $ sudo minicom -b 115200 -D /dev/ttyS0 > > AT+CGMM > > SARA-R412M-02B > > OK > AT+IPR? > > > +IPR:115200 > > I have adjusted the serial properties to use 115200, but that has not > resolved the issue > > I am at a loss as to what the issue could be > - is the fact that it assumes the modem does not support IPV4 and IPV4V6 a > bug which should be reported? Yes for the IPv4 part. > - apart from Modem Manager detecting the modem, I am not setting up the PDP > connection with MM, rather allowing NM to do that; is it best to setup a MM > simple-connection first and then allow NM to manage the network connections? When using MM+NM, you're not supposed to need any manual MM specific operation: NM is the one running Simple.Connect(). > > In addition, I have considered that perhaps serial is not a connection that > is well supported anymore and that this might be part of the issue - though > there are modems, such as the R422 from UBlox that do not support data over > USB, only serial, so serial is still required. In this instance I understand > Ublox is not listed as as supported device > (https://www.freedesktop.org/wiki/Software/ModemManager/SupportedDevices/). > Forget about that list, that is completely unmaintained :) Generic serial devices should be mostly well maintained, although issues may exist obviously. They're not the most used devices though, if you're looking for stability, use USB. > Lastly, this is a general question I have as to what is Network Managers > responsibility and what is Modem Managers? in this case, the error is thrown > by NM, but if it's relying on MM to handle the configuration of the modem, > perhaps the issue lies in the MM side? > MM talks to the control port (AT). NM instructs MM when to connect (calls Simple.Connect(), MM runs ATD) NM sets up the network interface (runs pppd in your case). If you get MM+NM daemon logs, we can dig further. -- Aleksander