Tethering via USB doesn't works

Just installed and updated Tumbleweed.
Connected my mobile, enabled tethering in phone but network icon doesn’t change and internet isn’t available.
With same hardware (phone and pc) using hotspot (wifi) all works fine.

Maybe the same problem reported here
https://forums.opensuse.org/t/kernl-5-for-tw-for-rndis/170345

Not so clear to me, is RNDIS involved in tethering?

Then this means that Linux use Microsoft for tethtering via USB?
No “open source” software for tethering?

No, that isn’t what that means.

It means that Microsoft developed the protocol, and that most of the cell phone manufacturers chose to use it.

Apparently there are phones, particularly newer android ones that don’t use it, but for older ones, you need RNDIS enabled to tether.

It’s disabled in the kernel by default, because it is a potential security vulnerability.

1 Like

Then for cell phone using RNDIS pc need to have RNDIS too?
Instead for “new” phones RNDIS is no more necessary.

Correct. If you have a phone or other device that requires RNDIS for tethering over USB, you will have to enable RNDIS.

Final questions:

  1. how to enable RNDIS?
  2. how to check if my cell phone use RNDIS? If it doesn’t works without RNDIS in pc it means it use RNDIS?

@Giorgio_os see https://forums.opensuse.org/t/kernl-5-for-tw-for-rndis/170345/5

Are you sure the cable you are using is a data cable? Some USB cables are just charging cables, others are data and charging. Since it is an Apple product, that is very possible, because they like to resist sharing data with a non-Apple item.

But , to be fair, a lot of phones actually come with charge-only USB cables, not just some from apple.

If you have another cable that you know transferred data in the past, test with it. I have had that issue on a few of my phones in the past.

Yes.
Same hardware (pc + cable + phone) works in tethering.

Is the problem solved? I think that a quick test is opening a terminal and issuing:

su -
<root password>
modprobe rndis_host

and then connect your phone and test.
If it works, to make the change permanent you have to comment out the relevant line in

/usr/lib/modprobe.d/50-blacklist-rndis.conf

so that it reads:

# blacklist rndis_host

Thanks to all that answer, problem solved.

This command enable tethering.
Comment this line:

# blacklist rndis_host

make tethering permanently working.

Given that RNDIS is “unsecure” I think I’ll use

su -
<root password>
modprobe rndis_host

just when I need tethering

That is absolutely wrong. You should never edit any file under /usr.

Putting an override file in /etc/modprobe.d is the correct way to do this.

2 Likes

Thanks, of course /usr/lib/modprobe.d/ gets overwritten on update.
Sorry, the last time I wrote something to /etc/modprobe.d was 2 yrs ago maybe…

Then to temporarily enable tethering this is the commands to use:

su -
<root password>
modprobe rndis_host

.

Not clear to me how to do.

man modprobe.d
touch /etc/modprobe.d/50-blacklist-rndis.conf