Acessando o Xoom no Ubuntu

Ao plugar o Motorola Xoom no Linux, você não terá acesso direto ao dispositivo. Não há software (pelo menos eu não encontrei) da Motorola para o Xoom que tenha suporte ao Linux. Então após sofrer um pouco, testes e buscas em fóruns, conseguir fazer funcionar razoavelmente.

O primeiro passo é verificar as informações do dispositivo. Ligue o cabo o USB e digite: dmesg no console. Deverá aparecer uma linha semelhante à essa:

[ 8175.440025] usb 1-1: new high speed USB device using ehci_hcd and address 5

Isso significa que um dispositivo foi conectado no USB. Agora para recuperar as informações do dispositivo, digite: sudo lsusb -v no console. Irá aparecer todas as informações dos dispositivos USBs conectados. Procure pelo seguinte conteúdo.

Bus 001 Device 005: ID 18d1:70a8 Google Inc.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x18d1 Google Inc.
  idProduct          0x70a8
  bcdDevice           99.99
  iManufacturer           1 Motorola
  iProduct                2 MZ604
  iSerial                 3 xxxxxxxxxx <-- diferente para cada disp.
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           39
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xc0
      Self 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              8 MTP
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 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     0x05  EP 5 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     0x85  EP 5 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 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0001
  Self Powered

A linha 1 tem a informação resumida do que está descrito na linha 10 (Vendor) e 11 (Product). Com essas informações dá pra gente passar pro udev como criar nosso dispositvo. Para isso crie um arquivo: /etc/udev/rules.d/90-motorola-xoom.rules

# Meu Motorola Xoom
ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="70a8", ENV{ID_GPHOTO2}="1", ENV{GPHOTO2_DRIVER}="proprietary", ENV{ID_MEDIA_PLAYER}="1", ENV{ID_MTP_DEVICE}="1", MODE="0664", GROUP="audio"

Alguns dispositivos possuem o idVendor e idProduct diferentes, portanto, execute o lsusb para verificar o valor desses atributos. Reinicie o udev com o comando: sudo service udev restart

Desconecte e conecte novamente o dispositivo. E pronto! Dispositivo reconhecido. Você pode transmitir arquivos para ele, mas para isso ser feito de forma correta, é necessário aplicativos com o suporte ao protocolo MTP. No Ubuntu existem vários: Nautilus, Rhythmbox, Bashee, ...

Atualização 12/08/2011: Após o update para versão 3.1 do Android o Xoom ficou com outro idVendor e idProduct: ID 22b8:70a9 Motorola PCS. Então foi necessário alterar o script novamente.

Sobre: Thiago Galbiatti Vespa

Thiago Galbiatti Vespa é mestre em Ciências da Computação e Matemática Computacional pela USP e bacharel em Ciências da Computação pela UNESP. Coordenador de projetos do JavaNoroeste, membro do JCP (Java Community Process), consultor Oracle, arquiteto de software de empresas de médio e grande porte, palestrante de vários eventos e colaborador de projetos open source. Possui as certificações: Oracle Certified Master, Java EE 5 Enterprise Architect – Step 1, 2 and 3; Oracle WebCenter Portal 11g Certified Implementation Specialist; Oracle Service Oriented Architecture Infrastructure Implementation Certified Expert; Oracle Certified Professional, Java EE 5 Web Services Developer; Oracle Certified Expert, NetBeans Integrated Development Environment 6.1 Programmer; Oracle Certified Professional, Java Programmer; Oracle Certified Associate, Java SE 5/SE 6