USB-Tethering on VollaPhone22 (Droidian 102)

When connecting the VollaPhone 22 to my PC, a Wired Connection is established, I get an IP address and can ping droidian on 10.15.19.82

But USB-Forwarding doesn’t work out of the box. One need to activate IP forwarding and setup iptables. This all just works, when WiFi is disabled, and mobile data is enabled. The device ID for mobile data is not stable, mostly it’s on ccmni1, but I had it also at ccmni0 occasionally. Hence, I created a qnd script, to setup USB on droidian:

#!/bin/bash 
## run this script with sudo rights 
## make sure to deactivate WiFi before running this script 
## make sure that mobile data is activated, and that those two horizontal arrows in the topline disappeared, sometimes you need to deactivate/activate again  
## assuming that your network provider still provides IP4 addresses

sysctl -w net.ipv4.ip_forward=1 

## sometimes it's ccmni1 or ccmni0, check with ip a show ccmni1 which one is active or down
## first argument is the mobile modem device name 
INTR="$1" 

iptables -t nat -A POSTROUTING -o $INTR -j MASQUERADE 
iptables -A FORWARD -i rndis0 -o $INTR -j ACCEPT 
iptables -A FORWARD -i $INTR -o rndis0 -m state --state RELATED,ESTABLISHED -j ACCEPT

Afterwards I needed to setup the routing on my laptop manually for the wired connection. The device id is changing after reboot, so I need to double check the naming each time with ip a, and then execute:
sudo ip route add default via 10.15.19.82 dev enxfe80ea80647c

The output of ip route should look similar to this, while the first line was added:

default via 10.15.19.82 dev enxfe80ea80647c 
10.0.3.0/24 dev lxcbr0 proto kernel scope link src 10.0.3.1 linkdown 
10.15.19.0/24 dev enxfe80ea80647c proto kernel scope link src 10.15.19.100 metric 100

Check pinging on the laptop:

ping -c3 8.8.8.8
ping -c3 google.com

I didn’t need to change any nameserver in resolv.conf.

Contrary, ssh into droidian works out of the box via WiFi, but does not work via usb interface ssh -v -o PreferredAuthentications=password -o PubkeyAuthentication=no droidian@10.15.19.82
There it hangs:

debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: sntrup761x25519-sha512@openssh.com
debug1: kex: host key algorithm: ssh-ed25519
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY

I played around with /etc/ssh/ssh_config settings, but couldn’t find any solution.

Was little confused why would you need that. So, I guess the device you connect, has no WiFI and you want to share internet over ssh?

First of all, WiFi Hotspot doesn’t work on VollaPhone22 under droidian. Hence, with USB tethering I can get internet on my laptop while on the go. I feel also more safe with USB tethering, as I don’t need to open a WiFi hotspot in public areas. And in my experience, USB tethering drains in total less energy than WiFi hotspot, as I can deactivate WiFi on both devices.

Secondly, if WiFi Hotspot doesn’t work, then I don’t have any chance to ssh into droidian, when I don’t have a third party WiFi available. Thus ssh over USB tethering is helpful in such instances. Otherwise it’s a pain to type all commands into the OSK.