USB tethering isn't working between my Punkt MP02 phone and any of my computers. I've tested on Windows, macOS, and Linux. WiFi tethering works. Troubleshooting is easiest with Linux so I'm going to use my Ubuntu 20.04 laptop.
The MP02 does not export a network device via USB when tethering is turned on.
The MP02 should export a network device and DHCP services via USB when tethering is turned on.
11/19/20 - I believe issue is with the MP02 phone. In order to get the phone to export a USB networking device I must use developer mode to set the USB Configuration to "RNDIS (USB Ethernet)".
The exported device is set as usb0
. The phone is not issuing a DHCP address so the interface is not usable.
I tried setting a static IP on the usb0
interface, see the STATIC IP TESTING note below. It didn't help.
--11/16/20 - I believe issue is with the MP02 phone. When tethering is on I would expect the MP02 to export a networking device, most probably via USB. It does not.--
Computer:
$ sudo dmidecode -s system-version
ThinkPad X1 Carbon 6th
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.1 LTS"
VERSION_ID="20.04"
...
Phone:
Device: Punkt MP02
Firmware: US.01.07.0078
Summary - By setting the USB Configuration to "RNDIS (USB Ethernet)" the phone exports a USB networking device as expected. The phone is not issuing a DHCP address so the interface is not usable.
Per Punkt tech support I -
- Turned tethering on.
- Turned Developer Mode on.
- Entered the Developer menu.
- Scrolled to "Select USB Configuration", clicked.
- Picked "RNDIS (USB Ethernet)"
- NOTE: In the Developer menu the USB Configuration always reads "MTP (Media Transfer Protocol)" regardless of what I pick in the menu. Because the behavior changes when I pick "RNDIS (USB Ethernet)" mode I expect this is a display bug.
- NOTE: The USB Configuration resets to MTP everytime I disconnect the USB cable, need to turn it back on.
- Backed out of the Developer menu
- Plugged the phone into the computer using a USB-A interface.
At this point a USB networking device is attached as expected but no IP is issued via DHCP.
$ tail -f /var/log/syslog
Nov 19 10:44:51 laptop kernel: [ 4095.547789] usb 1-2: new high-speed USB device number 37 using xhci_hcd
Nov 19 10:44:51 laptop kernel: [ 4095.696728] usb 1-2: New USB device found, idVendor=05c6, idProduct=f00e, bcdDevice= 3.18
Nov 19 10:44:51 laptop kernel: [ 4095.696733] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Nov 19 10:44:51 laptop kernel: [ 4095.696736] usb 1-2: Product: Android
Nov 19 10:44:51 laptop kernel: [ 4095.696738] usb 1-2: Manufacturer: Android
Nov 19 10:44:51 laptop kernel: [ 4095.696741] usb 1-2: SerialNumber: 59012a11
Nov 19 10:44:51 laptop kernel: [ 4095.700724] rndis_host 1-2:1.0 usb0: register 'rndis_host' at usb-0000:00:14.0-2, RNDIS device, 02:d4:c1:65:7a:8f
Nov 19 10:44:51 laptop NetworkManager[1160]: <info> [1605811491.9234] manager: (usb0): new Ethernet device (/org/freedesktop/NetworkManager/Devices/72)
Nov 19 10:44:51 laptop mtp-probe: checking bus 1, device 37: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2"
Nov 19 10:44:51 laptop mtp-probe: bus: 1, device: 37 was not an MTP device
Nov 19 10:44:52 laptop systemd-udevd[16303]: Using default interface naming scheme 'v245'.
Nov 19 10:44:52 laptop systemd-udevd[16303]: ethtool: autonegotiation is unset or enabled, the speed and duplex are not writable.
Nov 19 10:44:52 laptop NetworkManager[1160]: <info> [1605811492.5703] device (usb0): state change: unmanaged -> unavailable (reason 'managed', sys-iface-state: 'external')
Nov 19 10:44:52 laptop NetworkManager[1160]: <info> [1605811492.5716] device (usb0): carrier: link connected
Nov 19 10:44:52 laptop NetworkManager[1160]: <info> [1605811492.5741] device (usb0): state change: unavailable -> disconnected (reason 'none', sys-iface-state: 'managed')
Nov 19 10:44:52 laptop NetworkManager[1160]: <info> [1605811492.5756] policy: auto-activating connection 'Punkt' (f8a17616-ad72-39f4-8052-3a1ddf82f671)
Nov 19 10:44:52 laptop NetworkManager[1160]: <info> [1605811492.5763] device (usb0): Activation: starting connection 'Punkt' (f8a17616-ad72-39f4-8052-3a1ddf82f671)
Nov 19 10:44:52 laptop NetworkManager[1160]: <info> [1605811492.5764] device (usb0): state change: disconnected -> prepare (reason 'none', sys-iface-state: 'managed')
Nov 19 10:44:52 laptop NetworkManager[1160]: <info> [1605811492.5768] device (usb0): state change: prepare -> config (reason 'none', sys-iface-state: 'managed')
Nov 19 10:44:52 laptop NetworkManager[1160]: <info> [1605811492.5773] device (usb0): state change: config -> ip-config (reason 'none', sys-iface-state: 'managed')
Nov 19 10:44:52 laptop NetworkManager[1160]: <info> [1605811492.5777] dhcp4 (usb0): activation: beginning transaction (timeout in 45 seconds)
Nov 19 10:44:52 laptop mtp-probe: checking bus 1, device 37: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2"
Nov 19 10:44:52 laptop mtp-probe: bus: 1, device: 37 was not an MTP device
Nov 19 10:44:52 laptop avahi-daemon[1154]: Joining mDNS multicast group on interface usb0.IPv6 with address fe80::277e:b923:3586:e44c.
Nov 19 10:44:52 laptop avahi-daemon[1154]: New relevant interface usb0.IPv6 for mDNS.
Nov 19 10:44:52 laptop avahi-daemon[1154]: Registering new address record for fe80::277e:b923:3586:e44c on usb0.*.
Nov 19 10:44:55 laptop ModemManager[1329]: <info> Couldn't check support for device '/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2': not supported by any plugin
Nov 19 10:44:55 laptop ntpd[1331]: Listen normally on 72 usb0 [fe80::277e:b923:3586:e44c%69]:123
Nov 19 10:44:55 laptop ntpd[1331]: new interface(s) found: waking up resolver
$ ip addr show usb0
69: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
link/ether 02:d4:c1:65:7a:8f brd ff:ff:ff:ff:ff:ff
inet6 fe80::277e:b923:3586:e44c/64 scope link noprefixroute
valid_lft forever preferred_lft forever
Trying to force a DHCP renew -
$ sudo dhclient -r usb0
$ sudo dhclient -v usb0
Internet Systems Consortium DHCP Client 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/usb0/02:d4:c1:65:7a:8f
Sending on LPF/usb0/02:d4:c1:65:7a:8f
Sending on Socket/fallback
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 3 (xid=0x5b2d0958)
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 4 (xid=0x5b2d0958)
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 6 (xid=0x5b2d0958)
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 11 (xid=0x5b2d0958)
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 15 (xid=0x5b2d0958)
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 8 (xid=0x5b2d0958)
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 21 (xid=0x5b2d0958)
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 10 (xid=0x5b2d0958)
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 19 (xid=0x5b2d0958)
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 21 (xid=0x5b2d0958)
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 13 (xid=0x5b2d0958)
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 8 (xid=0x5b2d0958)
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 8 (xid=0x5b2d0958)
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 19 (xid=0x5b2d0958)
^C
# 60 seconds
NOTE: STATIC IP TESTING - As part of my troubleshooting I setup the usb0
interface with a static IP/gateway/DNS server using the same details the phone is issuing via DHCP for WiFi tethering.
The interface still wasn't usable, I couldn't ping the gateway. Details -
$ ip addr show usb0
73: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
link/ether 86:05:a7:ac:52:42 brd ff:ff:ff:ff:ff:ff
inet 192.168.43.87/24 brd 192.168.43.255 scope global noprefixroute usb0
valid_lft forever preferred_lft forever
inet6 fe80::70c5:9c60:901e:bf9e/64 scope link noprefixroute
valid_lft forever preferred_lft forever
$ ip route
default via 192.168.43.1 dev usb0 proto static metric 20100
169.254.0.0/16 dev virbr0 scope link metric 1000 linkdown
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
172.19.0.0/16 dev br-3d3df367dbe6 proto kernel scope link src 172.19.0.1
192.168.43.0/24 dev usb0 proto kernel scope link src 192.168.43.88 metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown
$ lsusb
...
Bus 001 Device 031: ID 05c6:902d Qualcomm, Inc. Android
...
$ lsusb -v
...
Bus 001 Device 037: ID 05c6:f00e Qualcomm, Inc. Android
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x05c6 Qualcomm, Inc.
idProduct 0xf00e
bcdDevice 3.18
iManufacturer 1 Android
iProduct 2 Android
iSerial 3 59012a11
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x004b
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 0
bInterfaceCount 2
bFunctionClass 224 Wireless
bFunctionSubClass 1 Radio Frequency
bFunctionProtocol 3 RNDIS
iFunction 9 RNDIS
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 3 RNDIS
iInterface 7 RNDIS Communications Control
** UNRECOGNIZED: 05 24 00 10 01
** UNRECOGNIZED: 05 24 01 00 01
** UNRECOGNIZED: 04 24 02 00
** UNRECOGNIZED: 05 24 06 00 01
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 9
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 8 RNDIS Ethernet Data
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
can't get debug descriptor: Resource temporarily unavailable
Device Status: 0x0000
(Bus Powered)
...
Looking at the USB device details (lsusb -v
) we can see that the phone is only exporting a single interface by looking at bNumInterfaces
.
When we look at the interface type via iInterface
we can see it's a MTP device.
Bus 001 Device 018: ID 05c6:f003 Qualcomm, Inc. Android
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x05c6 Qualcomm, Inc.
idProduct 0xf003
bcdDevice 3.18
iManufacturer 1 Android
iProduct 2 Android
iSerial 3 59012a11
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0027
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 0
iInterface 6 MTP
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x001c 1x 28 bytes
bInterval 6
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
can't get debug descriptor: Resource temporarily unavailable
Device Status: 0x0000
(Bus Powered)
When I attach the phone to the laptop the syslog messages don't differ based on the state of tethering, it's always -
$ tail -f /var/log/syslog
Nov 15 12:21:47 laptop kernel: [ 6262.769242] usb 1-1: new high-speed USB device number 19 using xhci_hcd
Nov 15 12:21:47 laptop kernel: [ 6262.918584] usb 1-1: New USB device found, idVendor=05c6, idProduct=f003, bcdDevice= 3.18
Nov 15 12:21:47 laptop kernel: [ 6262.918590] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Nov 15 12:21:47 laptop kernel: [ 6262.918594] usb 1-1: Product: Android
Nov 15 12:21:47 laptop kernel: [ 6262.918597] usb 1-1: Manufacturer: Android
Nov 15 12:21:47 laptop kernel: [ 6262.918599] usb 1-1: SerialNumber: 59012a11
Nov 15 12:21:48 laptop org.kde.kiod5[9007]: kf5.kiod.kmtpd: New device attached with udi= "/org/kde/solid/udev/sys/devices/pci0000:00/0000:00:14.0/usb1/1-1" . Checking if PortableMediaPlayer...
Nov 15 12:21:48 laptop org.kde.kiod5[9007]: kf5.kiod.kmtpd: SOLID: New Device with udi= "/org/kde/solid/udev/sys/devices/pci0000:00/0000:00:14.0/usb1/1-1"
Nov 15 12:21:48 laptop org.kde.kiod5[9007]: kf5.kiod.kmtpd: new device, getting raw devices
Nov 15 12:21:48 laptop org.kde.kiod5[9007]: kf5.kiod.kmtpd: No Error, continuing
Nov 15 12:21:48 laptop org.kde.kiod5[9007]: kf5.kiod.kmtpd: Found device matching the Solid description
Nov 15 12:21:48 laptop org.kde.kiod5[9007]: kf5.kiod.kmtpd: Created device "MP02" with udi= "/org/kde/solid/udev/sys/devices/pci0000:00/0000:00:14.0/usb1/1-1" and timeout 48
I tested with combinations of USB Modes and Tethering. I would expect that different combinations of these settings would result in different USB devices being exported. It does not. As expected changing the "USB Connection Mode" does change what MTP interfaces are available.
- USB Connection Mode: "Charge Only" or "Sync Mode"
- Tethering: "On" or "Off"
Tested combinations -
- Charge only + Tethering On
- Charge only + Tethering Off
- Sync Mode + Tethering On
- Sync Mode + Tethering Off
See Testing below for details.
Attached USB devices without the MP02 attached.
$ sudo lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 13d3:56b2 IMC Networks Integrated Camera
Bus 001 Device 015: ID 8087:0a2b Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Going forward I will exclude ^^^ devices from the output of lsusb
.
NOTE: To confirm that there isn't an issue with my laptop that is preventing USB networking devices to be discovered I confirmed that I could use a different USB <-> ethernet bridge, see Baseline Testing below.
NOTE: The gvfs-backends
is used by Gnome to manage MTP devices. It also prevents
mtp-detect
from working, see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=921559.
I use KDE so I can safely uninstall it -
$ sudo apt remove gvfs-backends
$ reboot
$ lsusb
...
Bus 001 Device 034: ID 05c6:f003 Qualcomm, Inc. Android
...
# MTP devices:
# camera: Qualcomm (for Highscreen) Omega Prime S
$ lsusb
...
Bus 001 Device 034: ID 05c6:f003 Qualcomm, Inc. Android
...
# MTP devices:
# camera: Qualcomm (for Highscreen) Omega Prime S
$ lsusb
...
Bus 001 Device 034: ID 05c6:f003 Qualcomm, Inc. Android
...
# MTP devices:
# camera: Qualcomm (for Highscreen) Omega Prime S
# mtp:/MTP: Internal shared storage
$ lsusb
...
Bus 001 Device 034: ID 05c6:f003 Qualcomm, Inc. Android
...
# MTP devices:
# camera: Qualcomm (for Highscreen) Omega Prime S
# mtp:/MTP: Internal shared storage
To confirm that there isn't an issue with my laptop that is preventing USB networking devices to be discovered I confirmed that I could use a different USB <-> ethernet bridge. Device: Plugable USB to Ethernet Adapter, USB 3.0 to Gigabit Ethernet
When plugging the device in -
$ tail -f /var/log/syslog
...
Nov 16 11:41:00 laptop kernel: [10557.320637] usb 2-1: new SuperSpeed Gen 1 USB device number 5 using xhci_hcd
Nov 16 11:41:00 laptop kernel: [10557.350684] usb 2-1: New USB device found, idVendor=0b95, idProduct=1790, bcdDevice= 1.00
Nov 16 11:41:00 laptop kernel: [10557.350690] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Nov 16 11:41:00 laptop kernel: [10557.350694] usb 2-1: Product: AX88179
Nov 16 11:41:00 laptop kernel: [10557.350697] usb 2-1: Manufacturer: ASIX Elec. Corp.
Nov 16 11:41:00 laptop kernel: [10557.350699] usb 2-1: SerialNumber: 008CAE4CE98676
Nov 16 11:41:01 laptop kernel: [10557.700098] ax88179_178a 2-1:1.0 eth0: register 'ax88179_178a' at usb-0000:00:14.0-1, ASIX AX88179 USB 3.0 Gigabit Ethernet, 8c:ae:4c:e9:86:76
Nov 16 11:41:01 laptop NetworkManager[1212]: <info> [1605555661.2857] manager: (eth0): new Ethernet device (/org/freedesktop/NetworkManager/Devices/66)
Nov 16 11:41:01 laptop mtp-probe: checking bus 2, device 5: "/sys/devices/pci0000:00/0000:00:14.0/usb2/2-1"
Nov 16 11:41:01 laptop mtp-probe: bus: 2, device: 5 was not an MTP device
Nov 16 11:41:01 laptop systemd-udevd[22978]: Using default interface naming scheme 'v245'.
Nov 16 11:41:01 laptop systemd-udevd[22978]: ethtool: autonegotiation is unset or enabled, the speed and duplex are not writable.
Nov 16 11:41:01 laptop kernel: [10558.414944] ax88179_178a 2-1:1.0 enx8cae4ce98676: renamed from eth0
Nov 16 11:41:02 laptop NetworkManager[1212]: <info> [1605555662.0153] device (eth0): interface index 62 renamed iface from 'eth0' to 'enx8cae4ce98676'
...
$ ip addr show enx8cae4ce98676
63: enx8cae4ce98676: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
link/ether 8c:ae:4c:e9:86:76 brd ff:ff:ff:ff:ff:ff
$ lsusb
...
Bus 002 Device 007: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
...