Dispositivo de armazenamento sendo detectado como impressora

2

Eu tenho um thumbdrive USB da HP. Estava funcionando bem, mas depois de uma ejeção ruim, parou. Agora, quando eu o insiro, ele é detectado como uma impressora (pelo que eu posso dizer).

Meu syslog mostra isso quando eu insiro o USB.

Dec 15 09:10:44 namviper kernel: [  797.472422] usb 3-3: new high-speed USB device number 10 using xhci_hcd
Dec 15 09:10:44 namviper kernel: [  797.614558] usb 3-3: New USB device found, idVendor=03f0, idProduct=5a07
Dec 15 09:10:44 namviper kernel: [  797.614562] usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Dec 15 09:10:44 namviper kernel: [  797.614565] usb 3-3: Product: v220w
Dec 15 09:10:44 namviper kernel: [  797.614566] usb 3-3: Manufacturer: HP
Dec 15 09:10:44 namviper kernel: [  797.614568] usb 3-3: SerialNumber: 0426400000006660
Dec 15 09:10:44 namviper kernel: [  797.615308] usb-storage 3-3:1.0: USB Mass Storage device detected
Dec 15 09:10:44 namviper kernel: [  797.615599] scsi host6: usb-storage 3-3:1.0
Dec 15 09:10:44 namviper root: loading HP Device 003 010
Dec 15 09:10:45 namviper python3: io/hpmud/musb.c 2183: [3413] hpmud_make_usb_uri() bus=003 dev=010
Dec 15 09:10:45 namviper python3: io/hpmud/musb.c 2281: hpmud_make_usb_uri() uri=hp:/usb/v220w?serial=SMART_INSTALL_ENABLED bytes_read=42
Dec 15 09:10:45 namviper /hp-config_usb_printer: hp-config_usb_printer[3413]: error: This is not a valid device
Dec 15 09:10:45 namviper colord[1002]: (colord:1002): Cd-WARNING **: CdMain: failed to emit DeviceAdded: failed to register object: An object is already exported for the interface org.freedesktop.ColorManager.Device at /org/freedesktop/ColorManager/devices/sysfs_HP_v220w

lsblk não mostra o dispositivo e a pesquisa na Internet no erro mostra apenas as informações de depuração da instalação da impressora.

Acho que preciso dizer ao meu sistema para tratar isso como um dispositivo de armazenamento, mas não sei como.

Aqui está o meu uname -a :

Linux namviper 4.10.0-42-generic #46~16.04.1-Ubuntu SMP Mon Dec 4 15:57:59 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Atualização: de acordo com a resposta de KamilMaciorowski, o driver correto já foi detectado:

$> cd "/sys/bus/usb/devices/3-3:1.0/"
$> readlink ./driver
../../../../../../bus/usb/drivers/usb-storage

Agora preciso saber o que fazer com essa informação.

    
por recluze 15.12.2017 / 05:19

1 resposta

3

Nota (edit): Descobri que a minha resposta original (abaixo) não resolve o problema do OP, apenas o reduz. Tendo lutado para excluir a resposta ou não, estou deixando que ela fique para fins educacionais.

Seu USB parece informar 5a07 em vez de 5307 (?). Compare usb.ids . 5a07 não está lá, mas talvez algum driver de impressora corresponda a isso de alguma forma. O mecanismo é descrito em esta resposta (que parece excessivamente pessimista no assunto de anexar manualmente um driver).

Eu não sei exatamente o que aconteceu. Na verdade usb-storage 3-3:1.0 do seu syslog me faz suspeitar que usb-storage (que é o módulo certo para um thumbdrive) foi carregado, então hpmud (?) Entrou em ação; Não tenho certeza.

Mas vamos assumir :

  • o idProduct reportado incorretamente é o único problema (ou seja, em todos os outros aspectos, o seu drive USB funciona bem),
  • há de fato algum driver errado conectado
  • e tudo que você precisa é separá-lo e anexar o caminho certo.

Veja esta outra resposta , ela aponta para este artigo do LWN e parece um bom lead (também há esta resposta apontando para este artigo . O exemplo genérico é:

In order to unbind a device from a driver, simply write the bus id of the device to the unbind file:

echo -n "1-1:1.0" > /sys/bus/usb/drivers/ub/unbind

[…]

To bind a device to a driver, the device must first not be controlled by any other driver.

[…]

Then, simply write the bus id of the device you wish to bind, into the bind file for that driver:

echo -n "1-1:1.0" > /sys/bus/usb/drivers/usb-storage/bind

No seu caso, o id do barramento é 3-3:1.0 . Observe que isso depende da porta USB usada, por isso, será diferente se você inserir o thumbdrive em outro soquete. Em um momento, precisaremos de acesso root e, devido aos redirecionamentos ( > ), é mais fácil iniciar um shell separado ( sudo -s ).

Primeiro, verifique o driver anexado no momento:

cd "/sys/bus/usb/devices/3-3:1.0/"
readlink ./driver

Se tiver razão, será algo diferente de usb-storage .

Desanexe o driver, seja o que for:

echo -n "3-3:1.0" > ./driver/unbind

Carregue o driver correto caso ainda não tenha sido carregado:

modprobe usb-storage

Anexá-lo ao dispositivo:

echo -n "3-3:1.0" > /sys/bus/usb/drivers/usb-storage/bind

E confirme:

readlink ./driver
lsblk

Não se esqueça de exit do shell de raiz.

A solução não é permanente. Por enquanto eu não sei como dizer ao Linux para sempre carregar o driver desejado (eu poderia escrever um script para automatizar o acima, mas não parece o caminho certo). No entanto, o thumbdrive presumivelmente mudou seu idProduct após uma ejeção ruim, então eu não confiaria em um longo prazo. Uma vez que funcionou com o driver usb-storage forçado, eu executaria ddrescue para proteger todos os dados dele.

    
por 15.12.2017 / 09:36