Como se conectar a um Raspberry Pi Zero a um laptop Ubuntu por USB?

1

Eu tentei seguir as instruções mostradas aqui para ter a possibilidade de usar meu Raspberry Pi Zero sem precisar comprar teclado, mouse e monitor usb.

Depois de fazer isso, não consegui usar o Raspberry Pi Zero. A saída que recebi foi:

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

Eu tentei o dmesg e vi o seguinte:

[ 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

Alguém pode esclarecer o que significam esses registros? O extenso googling não produziu resultados para mim.

Estou usando o Ubuntu 16.04.1 LTS de 64 bits em um Lenovo Z50 (roda o Ubuntu, mas um pouco desordenado, que provavelmente é a fonte da maioria dos problemas que tenho neste laptop). Eu também tentei usar um laptop Windows. Isso funcionou depois que eu instalei o software Bonjour da Apple.

A saída do ifconfig diz que não há endereço IP para o dispositivo, então não tenho certeza de como me conectar a ele.

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)

Obrigado!

Atualização:

Cuidado com os arenques vermelhos em tudo abaixo desta linha

OK, então baixei a fonte kernal do linux (última versão estável que é v4.8.11) e fiz alguns grepping.

Descobri que o "Kevent blah pode ter sido eliminado" é lançado em uma função chamada '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);

Eu encontrei usbnet_defer_kevent(dev, EVENT_SET_RX_MODE); sendo jogado em alguns lugares e acontece que o defini em usbnet.h como # define EVENT_SET_RX_MODE 12 . Ainda não sei o que é o EVENT_SET_RX_MODE (bem, não o que é suposto enumerar), então se alguém puder ajudar com isso, por favor, faça.

cdc_subset: o teste de blah falhou com o erro blah é chamado em 'really_probe' em drivers / base / dd.c. Parece que o Linux testa os drivers para ver se eles são adequados "sondando" o dispositivo com o driver. Esse é o meu palpite de qualquer maneira. Precisa descobrir o que '-22' e '-16' são.

suspeita : não tenho um driver adequado instalado

Vou continuar martelando mesmo assim.

ps. desculpe pelo conhecimento incoerente de informações aqui. Eu estou meio que usando isso como um bloco de notas para minha própria escavação.

    
por philmegamega 28.11.2016 / 12:47

2 respostas

1

Você precisa acessar o menu do gerenciador de rede, Editar conexões… e editar a nova conexão Ethernet (para mim, era “Conexão com fio 2”). Alterne para a guia IPv4 e altere o método para "Link-Local apenas". Clique em Salvar e, em seguida, em Fechar.

A interface de rede usb0 será atribuída a um endereço 169.254.x.y, e “ssh [email protected]” funcionará como deveria.

    
por 14.06.2017 / 21:41
0

Eu tenho experimentado que a conexão não é estabelecida corretamente devido ao usb0 ser renomeado. O que funcionou para mim é garantir que a conexão seja configurada com o nome usb0.

Em / etc / network / interfaces eu acrescentei o seguinte ao arquivo (você pode alterar seu endereço conforme ele se encaixa):

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

Para garantir que o usb0 seja reconhecido, o seguinte arquivo deve ser criado

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

no arquivo, o seguinte é anexado

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"

Agora a rede deve ser configurada corretamente no computador e você deve poder se conectar ao RPI

    
por 13.10.2017 / 11:03