Raspberry Pi 3G/4G&LTE Base HAT - QMI - Ping works Curl does not

Hi
I followed your instructions - qmi-interface-with-base-hat
I then tested with
ping -I wwan0 -c 5 8.8.8.8
This works OK
I then tested with
curl --interface wwan0 https://www.google.co.uk/index.html
This did nothing.
I checked the command using the ethernet interface eth0 in place of wwan0
That fetches the google home page as raw text and sends it to the terminal (stdout) as expected.

Can you tell me - would you expect curl to work with wwan0?
Is there something I should add?

I am not familiar with networking side of linux so maybe you could suggest how to debug.

By the way I tried with ppp and got same results (I uninstalled ppp before trying QMI. I am using a SIM from Three. I am using “three.co.uk” as the APN

Martin

Hi @mjbrennan,

Try this command:
curl --interface wwan0 --ipv4 https://www.google.co.uk/index.html

Hi
Thanks for the suggestion - but it made no difference.
What I did find was that if I disconnected the Ethernet cable from the Pi (and used the TV as terminal) then curl would fetch data from some websites like google and amazon but not any that I want to use.
For instance this command
curl --ipv4 -v --interface wwan0 http://www.sixfab.com

Generates the output below then hangs up. The same command on eth0 delivers data.
I have tried with many combinations of http and https and index.html. It appears that big sites will deliver data but small sites do not.

Martin

Unfortunately I cannot post the diagnostics because your forum does not allow links (not a good setting for a forum about networking :slight_smile:)

  • Expire in 0 ms for 6 (transfer 0x1625880)
  • Expire in 1 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 1 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 1 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 2 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 2 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 2 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 2 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 2 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 2 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 2 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 2 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 2 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 2 ms for 1 (transfer 0x1625880)
  • Expire in 0 ms for 1 (transfer 0x1625880)
  • Expire in 1 ms for 1 (transfer 0x1625880)
  • Expire in 2 ms for 1 (transfer 0x1625880)
  • Expire in 1 ms for 1 (transfer 0x1625880)
  • Expire in 1 ms for 1 (transfer 0x1625880)
  • Expire in 2 ms for 1 (transfer 0x1625880)
  • Expire in 1 ms for 1 (transfer 0x1625880)
  • Expire in 1 ms for 1 (transfer 0x1625880)
  • Expire in 2 ms for 1 (transfer 0x1625880)
  • Expire in 1 ms for 1 (transfer 0x1625880)
  • Expire in 1 ms for 1 (transfer 0x1625880)
  • Expire in 4 ms for 1 (transfer 0x1625880)
  • Expire in 2 ms for 1 (transfer 0x1625880)
  • Expire in 2 ms for 1 (transfer 0x1625880)
  • Expire in 4 ms for 1 (transfer 0x1625880)
  • Expire in 2 ms for 1 (transfer 0x1625880)
  • Expire in 2 ms for 1 (transfer 0x1625880)
  • Expire in 4 ms for 1 (transfer 0x1625880)
  • Expire in 3 ms for 1 (transfer 0x1625880)
  • Expire in 3 ms for 1 (transfer 0x1625880)
  • Expire in 4 ms for 1 (transfer 0x1625880)
  • Expire in 3 ms for 1 (transfer 0x1625880)
  • Expire in 4 ms for 1 (transfer 0x1625880)
  • Expire in 4 ms for 1 (transfer 0x1625880)
  • Expire in 4 ms for 1 (transfer 0x1625880)
  • Expire in 4 ms for 1 (transfer 0x1625880)
  • Expire in 4 ms for 1 (transfer 0x1625880)
  • Expire in 5 ms for 1 (transfer 0x1625880)
  • Expire in 5 ms for 1 (transfer 0x1625880)
  • Expire in 4 ms for 1 (transfer 0x1625880)
  • Expire in 5 ms for 1 (transfer 0x1625880)
  • Expire in 6 ms for 1 (transfer 0x1625880)
  • Expire in 8 ms for 1 (transfer 0x1625880)
  • Expire in 7 ms for 1 (transfer 0x1625880)
  • Expire in 7 ms for 1 (transfer 0x1625880)
  • Expire in 8 ms for 1 (transfer 0x1625880)
  • Expire in 7 ms for 1 (transfer 0x1625880)
  • Expire in 7 ms for 1 (transfer 0x1625880)
  • Expire in 8 ms for 1 (transfer 0x1625880)
  • Expire in 9 ms for 1 (transfer 0x1625880)
  • Expire in 9 ms for 1 (transfer 0x1625880)
  • Expire in 8 ms for 1 (transfer 0x1625880)
  • Expire in 10 ms for 1 (transfer 0x1625880)
  • Expire in 10 ms for 1 (transfer 0x1625880)
  • Expire in 16 ms for 1 (transfer 0x1625880)
  • Expire in 13 ms for 1 (transfer 0x1625880)
  • Expire in 13 ms for 1 (transfer 0x1625880)
  • Expire in 16 ms for 1 (transfer 0x1625880)
  • Expire in 13 ms for 1 (transfer 0x1625880)
  • Expire in 13 ms for 1 (transfer 0x1625880)
  • Expire in 16 ms for 1 (transfer 0x1625880)
  • Expire in 50 ms for 1 (transfer 0x1625880)
  • Expire in 50 ms for 1 (transfer 0x1625880)
  • Expire in 16 ms for 1 (transfer 0x1625880)
  • Expire in 50 ms for 1 (transfer 0x1625880)
  • Expire in 50 ms for 1 (transfer 0x1625880)
  • Expire in 32 ms for 1 (transfer 0x1625880)
  • Expire in 50 ms for 1 (transfer 0x1625880)
  • Expire in 50 ms for 1 (transfer 0x1625880)
  • Expire in 32 ms for 1 (transfer 0x1625880)
  • Expire in 50 ms for 1 (transfer 0x1625880)
  • Expire in 50 ms for 1 (transfer 0x1625880)
  • Expire in 50 ms for 1 (transfer 0x1625880)
  • Trying 104.28.23.189…
  • TCP_NODELAY set
  • Local Interface wwan0 is ip 10.123.170.27 using address family 2
  • Local port: 0
  • Expire in 149922 ms for 3 (transfer 0x1625880)
  • Expire in 200 ms for 4 (transfer 0x1625880)
  • Connected to www.sixfab.com (104.28.23.189) port 80 (#0)

GET / HTTP/1.1
Host: www.sixfab.com
User-Agent: curl/7.64.0
Accept: /

I found this information:

The --interface options is used to figure determine what address on the system will be used as the source IP. It doesn’t magically change anything about routing.

A typical system will only have a single default gateway. Naively connecting two ports two different networks using only DHCP simply is not going to give you a working multi-homed system. One of the interfaces will work to connect to the internet and one will only work for the subnet. Trying to bind like you have done is going to just send packets through the wrong router.

On Linux it is possible to get this working, but it requires multiple route tables, and rules to define which table to use. See this howto.

http://lartc.org/howto/lartc.rpdb.html

I hope this helps you.