<div dir="ltr"><div dir="ltr"><div><div>Hi,</div><div><br></div><div>Some progress on my fight with the SIM7070g:<br></div><br></div><div>1. Connection test with IPV6 disabled: <br><br></div>Created a new connection using the following command:<br><div></div><div>nmcli c add type gsm ifname ttyS4 con-name iot-modem apn <a href="http://iot.t-mobile.nl">iot.t-mobile.nl</a> ipv6.method "disabled"<br><br></div><div>Logs attached (MM_NM_logs.zip).<br></div><div>As you can see this time, modemmanager seems to be avoiding the ipv6 config by passing the "noipv6" argument when launching ppp as shown in the following log line:<br></div><div><br></div><div><debug> [1666559451.6679] ppp-manager: command line: /usr/sbin/pppd nodetach lock nodefaultroute noipv6 debug ttyS4 noipdefault noauth usepeerdns lcp-echo-failure 0 lcp-echo-interval 0 idle 0 ipparam /org/freedesktop/NetworkManager/PPP/1 plugin /usr/lib/pppd/2.4.5/nm-pppd-plugin.so<br><br></div><div>Unfortunately the connection never gets an IP and finally discards the modem completely.</div><div></div><div><br></div><div>2. Tested exactly the same device, with the same SIM card using ppp + chat combination and it works fine, im attaching the working ppp/chat files (ppp_working_config.zip)<br></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Oct 17, 2022 at 10:43 AM Aleksander Morgado <<a href="mailto:aleksandermj@chromium.org">aleksandermj@chromium.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hey Jorge,<br>
<br>
><br>
> So I did the requested testing: Logs attached.<br>
><br>
<br>
I can see the "pppd timed out or didn't initialize our dbus module"<br>
failure in NetworkManager as follows:<br>
<br>
<info>  [1665939102.1936] ppp-manager: starting PPP connection<br>
<debug> [1665939102.1944] ppp-manager: command line: /usr/sbin/pppd<br>
nodetach lock nodefaultroute ipv6 , debug ttyS4 noipdefault noauth<br>
usepeerdns lcp-echo-failure 0 lcp-echo-interval 0 idle 0 ipparam<br>
/org/freedesktop/NetworkManager/PPP/1 plugin<br>
/usr/lib/pppd/2.4.5/nm-pppd-plugin.so<br>
<info>  [1665939102.2189] ppp-manager: pppd started with pid 1613<br>
<info>  [1665939102.2216] modem["ttyS4"]: IPv6 configuration disabled<br>
Plugin /usr/lib/pppd/2.4.5/nm-pppd-plugin.so loaded.<br>
nm-pppd-plugin-Message: 18:51:42.264: nm-ppp-plugin: initializing<br>
nm-pppd-plugin-Message: 18:51:42.306: nm-ppp-plugin: status 3 / phase<br>
'serial connection'<br>
<warn>  [1665939122.1174] ppp-manager: pppd timed out or didn't<br>
initialize our dbus module<br>
<debug> [1665939122.1255] kill child process 'pppd' (1613): wait for<br>
process to terminate after sending SIGTERM (15) (send SIGKILL in 1500<br>
milliseconds)...<br>
<debug> [1665939122.1275] device[7af82be3978a2649] (ttyS4):<br>
activation-stage: schedule activate_stage4_ip_config_timeout_4,v4 (id<br>
368)<br>
<debug> [1665939122.1335] device[7af82be3978a2649] (ttyS4):<br>
activation-stage: invoke activate_stage4_ip_config_timeout_4,v4 (id<br>
368)<br>
<info>  [1665939122.1343] device (ttyS4): state change: ip-config -><br>
failed (reason 'ip-config-unavailable', sys-iface-state: 'managed')<br>
<br>
This could be a mismatched pppd config. When you manually test this<br>
and get a data connection, how are you launching pppd?<br>
<br>
>> > I'm trying to configure a SIMCOM7070G modem to work with ModemManager/NetworkManager.<br>
>> ><br>
>> > I've observed there is already a plugin and some support, but unless I'm mistaken, it looks like the current support expects this modem to be connected via USB (4 ports provided by usb: AT cmds, data, gnss, etc).<br>
>> ><br>
>> > My problem is I'm using it in a board where the modem is NOT connected to the CPU via USB: The regular UART (UART1) provided by the modem is used.<br>
>> ><br>
>> > So far, I already have some signals of life:<br>
>> ><br>
>> > 1. MODEM is detected by ModemManager as Generic GSM modem: I added the following rule to /etc/udev/rules.d/ and works fine:<br>
>> ><br>
>> > ACTION!="add|change|move|bind", GOTO="mm_whitelist_end"<br>
>> > KERNEL=="ttyS4" ENV{ID_MM_DEVICE_PROCESS}="1"<br>
>> > LABEL="mm_whitelist_end"<br>
>> ><br>
>><br>
>> There are several things missing here.<br>
>><br>
>> The "simtech" plugin only expects USB modems right now. It should be<br>
>> updated to have MM_PLUGIN_ALLOWED_VENDOR_STRINGS, so that after the AT<br>
>> probing phase is run, ModemManager tries to guess the modem vendor<br>
>> based on the given string. Once that works, the simtech plugin will<br>
>> take control of your modem, with the simcom-specific features if any<br>
>> needed.<br>
>><br>
>> Then given you're using a pure RS232 port, please note that you should<br>
>> explicitly configure how the TTY is supposed to work, in particular,<br>
>> you need to define ID_MM_TTY_BAUDRATE and ID_MM_TTY_FLOW_CONTROL<br>
>> explicitly. If your modem works fine AT-control wise, then probably<br>
>> the default baudrate MM uses was good (57600), but you should better<br>
>> explicitly define it. And if the data connection over PPP is not<br>
>> working as expected as in your case, it may indeed because of the<br>
>> missing ID_MM_TTY_FLOW_CONTROL (either "none", "xon-xoff" or<br>
>> "rts-cts").<br>
><br>
><br>
><br>
> New udev rules as follows:<br>
><br>
> ACTION!="add|change|move|bind", GOTO="mm_whitelist_end"<br>
> KERNEL=="ttyS4" ENV{ID_MM_DEVICE_PROCESS}="1", ENV{ID_MM_TTY_BAUDRATE}="115200", ENV{ID_MM_TTY_FLOW_CONTROL}="rts-cts"<br>
> LABEL="mm_whitelist_end"<br>
><br>
<br>
Those look fine, unless you're using openwrt, which I don't remember<br>
if that's the case or not. In openwrt you need to have one "=" action<br>
per line (so you would split that line in 3). Not an issue if not<br>
using openwrt.<br></blockquote><div><br></div><div>I'm using a custom build with yocto. And the udev rule works fine, i can see everything working as expected from MM side.<br>Btw, never mentioned it and just in case it could be relevant, my ModemManager version is: 1.12.12, it is displayed in the logs, but I just wanted to remark on it.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
> As you can see I'm setting ID_MM_TTY_BAUDRATE to 115200. Reason for this is, the modem is capable of autobauding up to a maximum speed of 115200bps, later on (during ppp) higher bps rates can be set.<br>
> I can see ModemManager talking to the modem on the AT stage without issues. So I'm assuming baudrate/flow control are fine.<br>
<br>
Yes.<br>
<br>
>> > 2. I Added a gsm connection to set the APN: (<a href="http://iot.t-mobile.nl" rel="noreferrer" target="_blank">iot.t-mobile.nl</a>)<br>
>> > I can see in ModemManager logs how it exchanges a lot of AT commands, etc to finally launch PPP. And this is where I'm stuck.<br>
<br>
Could you try to fully disable IPv6 in the networkmanager settings?<br>
i.e. so that IP family ipv4 is requested exclusively and NM doesn't<br>
try to bring up IPv6 over pppd.<br>
<br>
> Some clarifications:<br>
><br>
> 1. The GPIO operations discussed in previous posts: This is required only before using the modem. NOT during normal operation. For now I added a systemd service which starts before modemmanager and simply performs the required operations to guarantee the modem is operational whenever modemmanager boots.<br>
<br>
That makes sense.<br></blockquote><div><br></div><div>About the GPIO control of the modem: To start it, the solution is clear, I can use systemd to launch some script to control the gpios before starting MM. But I wonder if there is some option (dbus signal coming from MM?) to detect a disconnection so I can trigger a reset operation on the GPIO just in case. Might be it was just a coincidence, but I have observed the modem doesn't respond very well to some commands and tends to "freak out" :)<br><br></div><div>Not important for now, this is candidate for workaround, asking just in case there is a more stylish way rather than using the brute-FORCE.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
> 2. I'm attempting to connect to a "cat-m" network: Not sure how to "explain" this to ModemManager so it selects the proper band/network before attempting ppp<br>
<br>
How are you doing that manually? Do you have explicit AT commands for that?<br>
<br>
> 3. Baudrate: As it can be seen in the logs, AT commands are working fine at the configured baudrate, but would be great to change baudrate when starting ppp. Is this doable?<br>
<br>
Nope, no. Baudrate settings in a RS232 device are assumed fixed always.<br>
<br>
> 4. Following the "AT Commands Only" section on this site: <a href="https://docs.iotcreators.com/docs/simcom-sim7070g-waveshare-dev-kit" rel="noreferrer" target="_blank">https://docs.iotcreators.com/docs/simcom-sim7070g-waveshare-dev-kit</a>. I can manage to ping a host from the modem.<br>
><br>
<br>
Maybe try to compare that sequence with what MM does and see where they differ?<br>
<br>
-- <br>
Aleksander<br></blockquote><div><br></div><div><br></div><div>Thanks for helping! <br></div><div>Jorge.<br></div></div></div>