Librem 5 & Tethering Update 2020

If you’re a ham radio operator and are attending a large public event such as in a stadium or at a fairgrounds, bring your late model 2m/440 HT. It’ll fit on your belt right next to your phone. When the local cell towers get over burdened and you can’t use your phone, you can easily connect to a repeater (maybe a block away or maybe twenty miles away) and make your phone calls from a landline connected from that tower. I’ve done this several times. Even if the whole city power grid and all cell towers go out, you’ll get that call through. If the landlines all are out too, you can still talk to people who can tell you what’s going on. This happened to me several years ago when most of the power on the whole US (SanDiego to Portland) West Coast went out. With most of the power and communications out everywhere in sight, I knew within just a few minutes, the scope of the outage and invited a few friends over (who also turned on their radios to see what was going-on) for a pool party at my house later that night. No matter what, you’ll always be connected if you have your 2m/440 radio with you.

3 Likes

Is this work done yet? I’ve connected my L5 to my laptop via USB, but it doesn’t detect the L5’s internet connection. So maybe it is not finished yet, or do I need to enable something on my L5? I can’t find any USB tethering stuff in the settings for instance. But via the terminal would be fine also.

Any particular reason why you don’t want to tether via WiFi?

Yes, I have two reasons. Firstly, I like to minimize the radiation around me, and secondly if I tether via USB the phone and laptop gets charged at the same time. It feels good and simple for me.

3 Likes

Also minimizes the minimal possibilities of interference and eavesdropping, one less vector into the phone open.

4 Likes

You need this

One way you can hope to do this

Or build a Faraday cage around your house or within the walls.

2 Likes

It requires manual work - as in, there’s no GUI to set it up, but if you set up your connection manually via terminal it will work. When connecting the phone to a PC via USB you should see it in lsusb as:

Bus 001 Device 010: ID 1d6b:0104 Linux Foundation Multifunction Composite Gadget

It should be seen as a Ethernet device, serial port and (empty, 1MB) mass storage device. If you don’t see anything like that, try different cables, USB-C orientations etc. In particular I’ve noticed that USB-C to USB-C connections can be capricious and there’s usually better luck with USB-A to C cables.

When you get it to be seen by your PC, you should be able to configure connection sharing in pretty much the same way you would do it on a PC using NetworkManager.

3 Likes

My problem is that I don’t know how to manually to it via the terminal. I was hoping that someone could share some commands. In the past I’ve just tethered with my iPhone, by selecting USB-tethering in the iPhone settings, and then just connecting the cable. Nothing has to be done on the laptop.

I find the USB device (L5) when I connect it to my Fedora laptop with lsusb. The NetworkManager says “Connecting” but it never connects. I guess I’m just lacking the terminal commands on the L5?

1 Like

I have configured my L5 USA for USB tether and while it works, it is painfully slow. I have my L14 running Qubes connected USB-C to USB-C. I enabled networking in the sys-usb qube and when I want to tether, I just change the firewall qube to use sys-usb for its network.

To setup the L5 configure the usb0 interface in /etc/network/interfaces.d/, install and configure dnsmasq to provide client with IP, nameservers and route information. Make sure the interface on both side is hot-plug enabled.

L5 interface file:
auto usb0
allow-hotplug usb0
iface usb0 inet static
address 192.168.200.49/30

L14 interface file:
auto usb0
allow-hotplug usb0
iface usb0 inet dhcp

Any insights on the speed issue are appreciated. BTW using AweSIM. But is slow using WiFi as well.

A couple of troubleshooting suggestions:

  • take Qubes out of the picture and tether PureOS to PureOS
  • quantify “painfully slow”

For some reference, here are some speed tests, with the L5 (10.42.0.2) connected with USB-C to USB-A cable to an Linux i5-3337u PC (10.4.2.0.1) USB 3.0 port:

    purism@L5:~$ iperf3 -c 10.42.0.1 -R
    Connecting to host 10.42.0.1, port 5201
    Reverse mode, remote host 10.42.0.1 is sending
    [  5] local 10.42.0.2 port 33158 connected to 10.42.0.1 port 5201
    [ ID] Interval           Transfer     Bitrate
    [  5]   0.00-1.00   sec  18.4 MBytes   154 Mbits/sec                  
    [  5]   1.00-2.00   sec  17.8 MBytes   149 Mbits/sec                  
    [  5]   2.00-3.00   sec  17.7 MBytes   149 Mbits/sec                  
    [  5]   3.00-4.00   sec  17.7 MBytes   149 Mbits/sec                  
    [  5]   4.00-5.00   sec  17.8 MBytes   149 Mbits/sec                  
    [  5]   5.00-6.00   sec  17.6 MBytes   148 Mbits/sec                  
    [  5]   6.00-7.00   sec  17.6 MBytes   148 Mbits/sec                  
    [  5]   7.00-8.00   sec  17.6 MBytes   148 Mbits/sec                  
    [  5]   8.00-9.00   sec  17.7 MBytes   148 Mbits/sec                  
    [  5]   9.00-10.00  sec  17.8 MBytes   150 Mbits/sec                  
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bitrate         Retr
    [  5]   0.00-10.01  sec   179 MBytes   150 Mbits/sec    0             sender
    [  5]   0.00-10.00  sec   178 MBytes   149 Mbits/sec                  receiver

    iperf Done.
    purism@L5:~$ iperf3 -c 10.42.0.1 
    Connecting to host 10.42.0.1, port 5201
    [  5] local 10.42.0.2 port 43668 connected to 10.42.0.1 port 5201
    [ ID] Interval           Transfer     Bitrate         Retr  Cwnd
    [  5]   0.00-1.00   sec  16.5 MBytes   139 Mbits/sec    0    115 KBytes       
    [  5]   1.00-2.00   sec  15.8 MBytes   133 Mbits/sec    0    123 KBytes       
    [  5]   2.00-3.00   sec  15.6 MBytes   131 Mbits/sec    0    235 KBytes       
    [  5]   3.00-4.00   sec  15.4 MBytes   129 Mbits/sec    0    238 KBytes       
    [  5]   4.00-5.00   sec  15.5 MBytes   130 Mbits/sec    0    238 KBytes       
    [  5]   5.00-6.00   sec  15.0 MBytes   126 Mbits/sec    0    238 KBytes       
    [  5]   6.00-7.00   sec  15.7 MBytes   131 Mbits/sec    0    247 KBytes       
    [  5]   7.00-8.00   sec  15.9 MBytes   134 Mbits/sec    0    287 KBytes       
    [  5]   8.00-9.00   sec  15.0 MBytes   126 Mbits/sec    0    287 KBytes       
    [  5]   9.00-10.00  sec  15.5 MBytes   130 Mbits/sec    0    287 KBytes       
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bitrate         Retr
    [  5]   0.00-10.00  sec   156 MBytes   131 Mbits/sec    0             sender
    [  5]   0.00-10.02  sec   154 MBytes   129 Mbits/sec                  receiver

    iperf Done.

I see similar speeds using public iperf3, i.e. 150Mbps DL, 130Mbps UL, on TCP.
Doing this on UDP instead ([...] -u -b 400M param) I get 237Mbps DL, 178Mbps UL.

Speedtest seems quite a bit slower (PC is on fiber uplink and for reference it can do over 850Mbps):

purism@os:~$ speedtest-cli
Retrieving speedtest.net configuration...
Testing from [...]
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by  [...] [6.04 km]: 11.13 ms
Testing download speed................................................................................
Download: 106.70 Mbit/s
Testing upload speed......................................................................................................
Upload: 96.02 Mbit/s

The L5 advertises itself as being 5000Mbps (USB 3.0) capable, according to the PC side (lsusb -v shows Device can operate at SuperSpeed (5Gbps)), but even on a USB 3.0 port on this PC, the USB Ethernet speeds are more consistent w/ USB 2.0 (480 Mbps).
lsusb -tv on PC shows the Librem 5 actually connected to a USB 2.0 hub port. If I remember from last year, someone from Purism wrote here about how the USB hubs/ports from the i.MX 8M SoC are actually used/connected internally.

Of course, Ethernet over USB (2.0) has a lot of USB & CDC protocol overhead, so I think 150 tcp or 237Mbps udp max speeds are quite reasonable.
The L5 hardware limitations are also a factor.

2 Likes

So, reconfigured L5 removing my manual USB0 config and using nmcli to setup a shared interface. This is working much better. The download speed across the tether is comparable to that obtained directly on the L5, but the upload speed is about half.

nmcli connection add type ethernet ifname usb0 ipv4.method shared con-name tether

Using speedtest-cli gave better results than web version on L5. Performance is acceptable up and down.

I appreciate the assistance.

1 Like