从Android设备获取USB网络共享以在Debian 8上运行


13

我试图使Nexus 5手机(运行CM11)和运行Debian 8的台式机之间能够通过USB绑定,将手机通过USB连接到计算机并收到以下消息:

[14972.580738] usb 3-2: new high-speed USB device number 6 using xhci_hcd
[14972.709236] usb 3-2: New USB device found, idVendor=18d1, idProduct=4ee3
[14972.709239] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[14972.709240] usb 3-2: Product: Nexus 5
[14972.709242] usb 3-2: Manufacturer: LGE
[14972.709243] usb 3-2: SerialNumber: 04a0ba5813aff0d4

在手机上启用USB绑定后,我还得到:

[14972.710663] rndis_host 3-2:1.0 usb0: register 'rndis_host' at usb-0000:00:14.0-2, RNDIS device, 02:04:67:3f:31:35

该设备也被列出lsusb,尽管是Nexus 4:

Bus 003 Device 006: ID 18d1:4ee3 Google Inc. Nexus 4 (tether)

(那是问题吗?)

但是,我没有获得USB0网络接口或其他可能的接口。ifconfig只列出了先前存在的接口,其是eth0lo,以及两个tun由OpenVPN的提供的装置。

我搜索了可能不起作用的可能原因,但它们围绕的是太老的内核(从2.6天开始)。我的内核是3.16.0,我假设它支持USB绑定。我还记得,几年前,我通过连接USB即可与索尼爱立信手机配合使用。

据我所知,所有相关的内核模块都已加载:

rndis_host             12698  0 
cdc_ether              12564  1 rndis_host
usbnet                 30844  2 rndis_host,cdc_ether
usbcore               195340  8 xpad,rndis_host,ehci_hcd,ehci_pci,usbhid,usbnet,xhci_hcd,cdc_ether
usb_common             12440  1 usbcore

我必须怎么做才能获得usb0网络接口?


更新:我在另一台运行Debian 8的计算机上尝试了此方法,并且该方法有效。据我所知,不同之处在于还加载了另外两个模块:rndis_wlanmii。但是,尽管通过手动加载这些模块modprobe似乎可以正常工作,但是usb0仍然缺少。

经过一番谷歌搜索后,我发现我应该使用来获取有关网络接口的信息ip link。输出为:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 30:85:a9:f6:24:cd brd ff:ff:ff:ff:ff:ff
31: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 100
    link/none 
32: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 100
    link/none 
37: usb0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 0e:21:59:43:d3:ca brd ff:ff:ff:ff:ff:ff

因此看来usb0确实存在。然后我尝试了ifup usb0,但是说

Ignoring unknown interface usb0=usb0.

我也使用Nexus 7(第一代)完成了整个过程,并得到了相同的结果。

Answers:


9

好的,看来我已经知道了。这些命令使它起作用:

ip link set usb0 up
dhclient usb0

奇怪的是,它ifup usb0仍然告诉我该接口是未知的,并且:在运行之前dhclient,甚至还没有ping 8.8.8.8工作。

我仍然想知道如何使它自动化,或者为什么在另一个Debian 8安装中会自动发生这种情况。


1
“ ifup usb0仍然告诉我该接口是未知的”-因此我想这毕竟是不成功的。为什么将这个问题标记为正确的答案?自那时以来您是否还发现其他问题?我想通过USB调试来建立网络连接,因为adb尚不能端口转发UDP端口(尽管它可以端口转发和反向端口转发TCP)。因此,我对如何完成此任务非常感兴趣
Csaba Toth

1
即使ip link set usb0 up收益率Cannot find device "usb0"形成我:/
乔鲍托特

usb0用您的设备名称替换。您可以通过比较ip link插入Android设备和激活USB绑定之前和之后的命令输出来找到它。插入并激活USB绑定后,最后一行应显示为37: usb0: <BROADCAST,MULTICAST> ...。编号后的名称应为您要查找的设备。
v.tralala '19

2

将此添加到/etc/network/interfaces配置文件:

auto usb0
allow-hotplug usb0
iface usb0 inet dhcp

重启后

sudo ifconfig usb0 up

如果您的系统在16.04之后是ubuntu,则可能需要更改接口名称:

auto enusb01
allow-hotplug enusb01
iface enusb01 inet dhcp

重启后

sudo ifconfig enusb01 up

如果没有效果,请尝试查看带有的列表,ifconfig -a | grep Link然后尝试安装相关的列表,或执行上面的步骤,然后将其安装起来。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.