osmo-ccid-firmware/ccid_host/hub_create_gadget.sh

49 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
GADGET_NAME=osmo-hub
GADGET_CONFIGFS=/sys/kernel/config/usb_gadget
die() {
echo ERROR: $1
exit 2
}
modprobe configfs
modprobe usb_f_fs
modprobe dummy_hcd is_high_speed=0 is_super_speed=0
[ -d $GADGET_CONFIGFS ] || die "usb_gadget configfs not mounted"
gadgetdir="$GADGET_CONFIGFS/$GADGET_NAME"
# create gadget
[ -d $gadgetdir ] || mkdir $gadgetdir || die "Cannot create $gadgetdir. Permission problem?"
set -e -x
cd $gadgetdir
echo 0x2342 > idVendor
echo 0x4200 > idProduct
echo 0x09 > bDeviceClass
echo 1 > bDeviceProtocol
[ -d strings/0x409 ] || mkdir strings/0x409
echo 2342 > strings/0x409/serialnumber
echo "sysmocom GmbH" > strings/0x409/manufacturer
echo "sysmoHUB" > strings/0x409/product
# create config
[ -d configs/c.1 ] || mkdir configs/c.1
[ -d configs/c.1/strings/0x409 ] || mkdir configs/c.1/strings/0x409
echo "sysmoHUB config" > configs/c.1/strings/0x409/configuration
[ -d functions/ffs.usb0 ] || mkdir functions/ffs.usb0
[ -e configs/c.1/ffs.usb0 ] || ln -s functions/ffs.usb0 configs/c.1
[ -d /dev/ffs-hub ] || mkdir /dev/ffs-hub
[ -e /dev/ffs-hub/ep0 ] || mount -t functionfs usb0 /dev/ffs-hub/
# enable device, only works after program has opened EP FDs
#echo dummy_udc.0 > UDC