Scripts for setting up the Serial and Ethernet OTG USB
This commit is contained in:
@@ -0,0 +1,48 @@
|
|||||||
|
# Adapted from
|
||||||
|
# "Using OTG mode on Raspberry Pi SBCs"
|
||||||
|
# https://pip-assets.raspberrypi.com/categories/685-app-notes-guides-whitepapers/documents/RP-009276-WP/Using-OTG-mode-on-Raspberry-Pi-SBCs
|
||||||
|
sudo modprobe libcomposite
|
||||||
|
cd /sys/kernel/config/usb_gadget
|
||||||
|
# Create our new gadget
|
||||||
|
sudo mkdir MyGadget
|
||||||
|
cd MyGadget
|
||||||
|
# Add some boilerplate data that the gadget needs
|
||||||
|
echo 0x1d6b > idVendor # Linux Foundation’s USB VID. Replace with your own VID if required
|
||||||
|
echo 0x0104 > idProduct # Multifunction Composite Gadget
|
||||||
|
echo 0x0100 > bcdDevice # v1.0.0
|
||||||
|
echo 0x0200 > bcdUSB # USB2
|
||||||
|
mkdir strings/0x409 # 0x409 = English
|
||||||
|
# Insert your own manufacturer and gadget name here
|
||||||
|
echo "RaspberryPi" > strings/0x409/manufacturer
|
||||||
|
echo "MyPiGadget" > strings/0x409/product
|
||||||
|
# Make the serial number the same as the Raspberry Pi serial number; you can use whatever is required here
|
||||||
|
SERIAL=`cat /proc/cpuinfo | awk '/Serial/ {print $3}' `
|
||||||
|
echo $SERIAL > strings/0x409/serialnumber
|
||||||
|
# Create a configuration area and populate
|
||||||
|
mkdir configs/c.1
|
||||||
|
echo 120 > configs/c.1/MaxPower
|
||||||
|
mkdir configs/c.1/strings/0x409
|
||||||
|
echo "Config 1" > configs/c.1/strings/0x409/configuration
|
||||||
|
|
||||||
|
# Create our specific gadget type
|
||||||
|
## Mass storage device
|
||||||
|
### Remember to create the storage block device first
|
||||||
|
## cd /root
|
||||||
|
### Example: Make a 256 MB file to act as "USB stick"
|
||||||
|
## sudo dd if=/dev/zero of=drive.bin bs=1M count=256
|
||||||
|
### Create a VFAT file system on the backing store
|
||||||
|
## sudo mkfs.vfat drive.bin
|
||||||
|
##
|
||||||
|
# mkdir functions/mass_storage.usb0
|
||||||
|
## Set up our backing store
|
||||||
|
# echo "/home/pi/drive.bin" > functions/mass_storage.usb0/lun.0/file
|
||||||
|
## Link our function to our configuration
|
||||||
|
#ln -s functions/mass_storage.0 configs/c.1/
|
||||||
|
|
||||||
|
## Serial (CDC ACM)
|
||||||
|
mkdir functions/acm.usb0
|
||||||
|
ln -s functions/acm.usb0 configs/c.1/
|
||||||
|
|
||||||
|
## Ethernet (RNDIS and ECM)
|
||||||
|
mkdir functions/ecm.usb0
|
||||||
|
ln -s functions/ecm.usb0 configs/c.1/
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Serial and Ethernet over OTG USB
|
||||||
|
After=systemd-user-sessions.service
|
||||||
|
[Service]
|
||||||
|
ExecStart=/root/rover-pi/Scripts/gadget.sh
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.targe
|
||||||
Reference in New Issue
Block a user