web-dev-qa-db-ja.com

USBでRaspberryPi ZeroをUbuntuラップトップに接続するにはどうすればよいですか?

私は ここに示されている指示に従って を試しました。これにより、USBキーボード、マウス、モニターを購入しなくてもRaspberry PiZeroを使用できるようになります。

それを行った後、私はRaspberry PiZeroにSSHで接続できませんでした。私が得た出力は次のとおりです。

_ssh: Could not resolve hostname raspberrypi.local: Name or service not known
_

Dmesgを試してみたところ、次のことがわかりました。

_[ 2060.683489] usb 2-1: new high-speed USB device number 6 using xhci_hcd
[ 2065.979176] usb 2-1: new high-speed USB device number 7 using xhci_hcd
[ 2066.108051] usb 2-1: New USB device found, idVendor=0525, idProduct=a4a2
[ 2066.108056] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 2066.108058] usb 2-1: Product: RNDIS/Ethernet Gadget
[ 2066.108060] usb 2-1: Manufacturer: Linux 4.4.21+ with 20980000.usb
[ 2066.233624] cdc_subset: probe of 2-1:1.0 failed with error -22
[ 2066.234408] cdc_subset 2-1:1.1 usb0: register 'cdc_subset' at usb-0000:00:14.0-1, Linux Device, 6a:2b:ee:30:07:6e
[ 2066.235273] usbcore: registered new interface driver cdc_subset
[ 2066.236484] cdc_ether: probe of 2-1:1.0 failed with error -16
[ 2066.236507] usbcore: registered new interface driver cdc_ether
[ 2066.238455] cdc_subset 2-1:1.1 enp0s20u1i1: renamed from usb0
[ 2066.264145] IPv6: ADDRCONF(NETDEV_UP): enp0s20u1i1: link is not ready
[ 2066.264275] cdc_subset 2-1:1.1 enp0s20u1i1: kevent 12 may have been dropped
[ 2066.264281] cdc_subset 2-1:1.1 enp0s20u1i1: kevent 12 may have been dropped
[ 2066.264627] cdc_subset 2-1:1.1 enp0s20u1i1: kevent 12 may have been dropped
[ 2066.265568] cdc_subset 2-1:1.1 enp0s20u1i1: kevent 12 may have been dropped
[ 2066.265575] cdc_subset 2-1:1.1 enp0s20u1i1: kevent 12 may have been dropped
[ 2066.274193] cdc_subset 2-1:1.1 enp0s20u1i1: kevent 12 may have been dropped
[ 2111.934891] cdc_subset 2-1:1.1 enp0s20u1i1: kevent 12 may have been dropped
[ 2111.934898] cdc_subset 2-1:1.1 enp0s20u1i1: kevent 12 may have been dropped
[ 2111.936117] cdc_subset 2-1:1.1 enp0s20u1i1: kevent 12 may have been dropped
[ 2111.948226] cdc_subset 2-1:1.1 enp0s20u1i1: kevent 12 may have been dropped
[ 2111.948247] cdc_subset 2-1:1.1 enp0s20u1i1: kevent 12 may have been dropped
[ 2111.948251] cdc_subset 2-1:1.1 enp0s20u1i1: kevent 12 may have been dropped
_

誰かがこれらのログの意味に光を当てることができますか?広範囲にわたるグーグルは私にとって何の結果ももたらしませんでした。

LenovoZ50でUbuntu16.04.1 LTS 64ビットを使用しています(Ubuntuを実行しますが、このラップトップで発生するほとんどの問題の原因である可能性があります)。また、Windowsラップトップを使用してみました。これは、AppleからBonjourソフトウェアをインストールした後に機能しました。

Ifconfigからの出力には、デバイスのIPアドレスがないことが示されているため、どのように接続するかわかりません。

_enp0s20u3 Link encap:Ethernet  HWaddr ce:77:fe:7a:9f:66  
          inet6 addr: fe80::7af9:c911:f518:cede/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:30 errors:0 dropped:0 overruns:0 frame:0
          TX packets:84 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:5660 (5.6 KB)  TX bytes:13989 (13.9 KB)
_

ありがとう!

更新:

この線より下のすべての赤いニシンに注意してください

OKで、Linuxカーネルソース(v4.8.11である最新の安定バージョン)をダウンロードして、いくつかのgrepを実行しました。

「Keventblahが削除された可能性があります」が「usbnet_defer_kevent」という関数でスローされていることがわかりました。

_/* some work can't be done in tasklets, so we use keventd
 *
 * NOTE:  annoying asymmetry:  if it's active, schedule_work() fails,
 * but tasklet_schedule() doesn't.  hope the failure is rare.
 */
void usbnet_defer_kevent (struct usbnet *dev, int work)
{
    set_bit (work, &dev->flags);
    if (!schedule_work (&dev->kevent)) {
        if (net_ratelimit())
            netdev_err(dev->net, "kevent %d may have been dropped\n", work);
    } else {
        netdev_dbg(dev->net, "kevent %d scheduled\n", work);
    }
}
EXPORT_SYMBOL_GPL(usbnet_defer_kevent);
_

usbnet_defer_kevent(dev, EVENT_SET_RX_MODE);がいくつかの場所でスローされているのを見つけましたが、so _# define EVENT_SET_RX_MODE 12_のようにusbnet.hで定義されていることがわかりました。 _EVENT_SET_RX_MODE_がまだ何であるかわからないので(まあ、それが列挙することになっているものではありません)、誰かがそれを手伝ってくれるならしてください。

cdc_subset:blahのプローブがエラーblahで失敗しました 'really_probeで呼び出されます'drivers/base /dd.c。 Linuxは、ドライバーでデバイスを「プローブ」することにより、ドライバーが適切かどうかをテストするように見えます。とにかくそれは私の推測です。 「-22」と「-16」が何であるかを知る必要があります。

疑惑:適切なドライバーがインストールされていません

とにかくそれを叩き続けます。

ps。ここに情報がまとまっていないことをお詫びします。私はこれを自分の掘り出し物のメモ帳として使っています。

2
philmegamega

ネットワークマネージャーメニューの[接続の編集...]に移動し、新しいイーサネット接続を編集する必要があります(私にとっては「有線接続2」でした)。 [IPv4]タブに切り替え、[方法]を[リンクローカルのみ]に変更します。 [保存]、[閉じる]の順にクリックします。

その後、usb0ネットワークインターフェイスに169.254.x.yアドレスが割り当てられ、「[email protected]」が正常に機能します。

2
InvulgoSoft

Usb0の名前が変更されたため、接続が正しく確立されないことを経験しました。私のために働いたのは、接続がusb0名でセットアップされていることを確認することです。

/ etc/network/interfacesで、ファイルに以下を追加しました(アドレスは必要に応じて変更できます)。

auto usb0
iface usb0 inet static
    address 10.9.8.1
    netmask 255.255.255.0
    up iptables -A FORWARD -i usb0 -j ACCEPT
    up iptables -A FORWARD -o usb0 -j ACCEPT
    up iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Usb0が確実に認識されるようにするには、次のファイルを作成する必要があります

/etc/udev/rules.d/70-persistent-net.rules

ファイルに以下が追加されます

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="cdc_ether", NAME="usb0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="cdc_eem", NAME="usb0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="cdc_subset", NAME="usb0"

これで、ネットワークがコンピューター上で正しくセットアップされ、RPIに接続できるようになります。

0
rasmus