Emulando o dispositivo USB com um arquivo usando g_mass_storage = udc-core: não foi possível encontrar um UDC disponível - adicionado [g_mass_storage] à lista de drivers pendentes

0

Gostaria de emular um USB de um arquivo de imagem.

Estou usando o Centos7 com o Kernel 4.11.7 instalado através de kernel-ml e kernel-ml-devel elrepo 4.11.7-1.el7.elrepo.x86_64 (na verdade, tentei com 3.10. * 4.10. * 4.11.1 também)

Temos duas soluções:

  1. com insmod

    sudo insmod /link/to/g_mass_storage.ko file = / tmp/filebin.img stall = 0 removível = y

No dmesg : udc-core: couldn't find an available UDC - added [g_mass_storage] to list of pending drivers

  1. com modprobe

    $ sudo modprobe arquivo g_mass_storage = / tmp / testusb.img stall = 0 removível = y modprobe: FATAL: Módulo g_mass_storage não encontrado. Nada em dmesg .

  2. Eu também tentei com dummy_hcd :

    $ sudo modprobe dummy_hcd modprobe: FATAL: Módulo dummy_hcd não encontrado.

Como posso resolver este problema?

Eu tentei muitas coisas, como recompilar o Kernel 4.11.1, ativando tudo com gadget, etc ...

/usr/src/kernels/4.11.7-1.el7.elrepo.x86_64 $ cat .config | grep CONFIG_USB_DUMMY_HCD
# CONFIG_USB_DUMMY_HCD is not set

Resultado: Depois de compilar o kernel, consegui modprobe dummy_hcd e emular um usb com um arquivo binário.

    
por Alexis_FR_JP 27.06.2017 / 01:22

1 resposta

2

Você precisa do dispositivo controlador de host dummy_hcd dummy (loopback). Os drivers USB do gadget são destinados a hardware USB real e, em PCs normais, esse hardware não existe. O controlador de loopback fornece a estrutura para o controlador do dispositivo e um controlador de host USB para acessá-los. Então:

$ sudo modprobe dummy_hcd

fornece um novo hub raiz

$ lsusb
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Agora você pode modificar o driver do gadget

$ sudo modprobe g_mass_storage file=/path/to/backing_file idVendor=0x1d6b idProduct=0x0104 iManufacturer=Myself iProduct=VirtualBlockDevice iSerialNumber=123

e ele aparecerá no novo hub raiz

$ lsusb
Bus 005 Device 002: ID 0525:a4a5 Netchip Technology, Inc. Pocketbook Pro 903
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Note que você não precisa simular um dispositivo de armazenamento em massa USB se estiver interessado apenas no conteúdo do arquivo, você pode montá-lo diretamente (através do dispositivo de loop, mas isso acontece automaticamente).

    
por 27.06.2017 / 08:32