Especifique a função no dispositivo USB

1

Estou tentando fazer um dispositivo USB composto usando o ConfigFS no meu Raspberry Pi Zero. Eu segui este guia para criar um dispositivo USB: link

Eu configurei um dispositivo USB padrão usando este script na inicialização (via /etc/rc.local ):

#!/bin/bash

cd /sys/kernel/config/usb_gadget/
mkdir -p isticktoit
cd isticktoit

echo 0x1d6b > idVendor # Linux Foundation
echo 0x0104 > idProduct # Multifunction Composite Gadget
echo 0x0100 > bcdDevice # v1.0.0
echo 0x0200 > bcdUSB # USB2

mkdir -p strings/0x409
echo "fedcba9876543210" > strings/0x409/serialnumber
echo "JW" > strings/0x409/manufacturer
echo "DoItForTheWenHua" > strings/0x409/product
mkdir -p configs/c.1/strings/0x409
echo "Config 1" > configs/c.1/strings/0x409/configuration
echo 250 > configs/c.1/MaxPower

# Add functions here
mkdir -p functions/hid.usb0
echo 1 > functions/hid.usb0/protocol
echo 1 > functions/hid.usb0/subclass
echo 3 > functions/hid.usb0/report_length
echo -ne \x05\x01\x09\x02\xa1\x01\x09\x01\xa1\x00\x05\x09\x19\x01\x29\x03\x15\x00\x25\x01\x95\x03\x75\x01\x81\x02\x95\x01\x75\x05\x81\x03\x05\x01\x09\x30\x09\x31\x15\x81\x25\x7f\x75\x08\x95\x02\x81\x06\xc0\xc0 > functions/hid.usb0/report_desc
ln -s functions/hid.usb0 configs/c.1/

mkdir -p functions/hid.usb1
echo 1 > functions/hid.usb1/protocol
echo 1 > functions/hid.usb1/subclass
echo 8 > functions/hid.usb1/report_length
echo -ne \x05\x01\x09\x06\xa1\x01\x05\x07\x19\xe0\x29\xe7\x15\x00\x25\x01\x75\x01\x95\x08\x81\x02\x95\x01\x75\x08\x81\x03\x95\x05\x75\x01\x05\x08\x19\x01\x29\x05\x91\x02\x95\x01\x75\x03\x91\x03\x95\x06\x75\x08\x15\x00\x25\x65\x05\x07\x19\x00\x29\x65\x81\x00\xc0 > functions/hid.usb1/report_desc
ln -s functions/hid.usb1 /configs/c.1/

# End functions
ls /sys/class/udc > UDC

A primeira função, hid.usb0 , tem um descritor de relatório para mover o mouse (3 bytes) e a segunda função, hid.usb1 , possui um descritor de relatório para digitar no teclado (8 bytes).

Eu posso escrever 3 bytes para o dispositivo usb em /dev/hidg0 e mover o mouse usando a primeira função, hid.usb0 . Eu tentei escrever 3 bytes para a primeira função, e 8 bytes para a segunda função juntos como 11 bytes, e enquanto o mouse se movia, não havia entrada de teclado (mesmo que o relatório que eu passei tivesse feito um pressionamento de tecla).

Como eu especifico que eu quero mudar para a segunda função, hid.usb1 ?

    
por James Meas 09.07.2018 / 05:02

0 respostas