Skip to content

Instantly share code, notes, and snippets.

@markstinson
Forked from geekman/myusbgadget
Created April 12, 2018 03:14
Show Gist options
  • Save markstinson/61afb4845da29c34abfdff4c40ea32f3 to your computer and use it in GitHub Desktop.
Save markstinson/61afb4845da29c34abfdff4c40ea32f3 to your computer and use it in GitHub Desktop.

Revisions

  1. @geekman geekman created this gist Jan 17, 2017.
    41 changes: 41 additions & 0 deletions myusbgadget
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,41 @@
    #!/bin/bash -e

    modprobe libcomposite

    cd /sys/kernel/config/usb_gadget/
    mkdir g && cd g

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

    echo 0xEF > bDeviceClass
    echo 0x02 > bDeviceSubClass
    echo 0x01 > bDeviceProtocol

    mkdir -p strings/0x409
    echo "deadbeef00115599" > strings/0x409/serialnumber
    echo "irq5 labs" > strings/0x409/manufacturer
    echo "Pi Zero Gadget" > strings/0x409/product

    mkdir -p functions/acm.usb0 # serial
    mkdir -p functions/rndis.usb0 # network

    mkdir -p configs/c.1
    echo 250 > configs/c.1/MaxPower
    ln -s functions/rndis.usb0 configs/c.1/
    ln -s functions/acm.usb0 configs/c.1/

    # OS descriptors
    echo 1 > os_desc/use
    echo 0xcd > os_desc/b_vendor_code
    echo MSFT100 > os_desc/qw_sign

    echo RNDIS > functions/rndis.usb0/os_desc/interface.rndis/compatible_id
    echo 5162001 > functions/rndis.usb0/os_desc/interface.rndis/sub_compatible_id

    ln -s configs/c.1 os_desc

    udevadm settle -t 5 || :
    ls /sys/class/udc/ > UDC
    13 changes: 13 additions & 0 deletions myusbgadget.service
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,13 @@
    # /usr/lib/systemd/system/myusbgadget.service

    [Unit]
    Description=My USB gadget
    After=systemd-modules-load.service

    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=/usr/bin/myusbgadget

    [Install]
    WantedBy=sysinit.target