Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 39c0f158fe | |||
| 9f51718235 | |||
| 01b3a189ed | |||
| 3ef2ca02a6 | |||
| cc0b37af8b | |||
| 17c0ffab67 | |||
| 39aeb47d0e |
+27
-8
@@ -3,20 +3,33 @@
|
|||||||
# "Using OTG mode on Raspberry Pi SBCs"
|
# "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
|
# https://pip-assets.raspberrypi.com/categories/685-app-notes-guides-whitepapers/documents/RP-009276-WP/Using-OTG-mode-on-Raspberry-Pi-SBCs
|
||||||
|
|
||||||
# Is the dwc2 overlay installed? Nothing will work if it isn't.
|
# This script only works if you are running it as root
|
||||||
LOGGER="systemd-cat -t gadget.sh"
|
if [ $(id -u) -ne 0 ]; then
|
||||||
if lsmod | grep -q "dwc2"; then
|
echo "Please run as root or use sudo"
|
||||||
$LOGGER -p info "DWC2 module loaded, setting up OTG gadget serial and ethernet"
|
|
||||||
else
|
|
||||||
$LOGGER -p warning "DWC2 module missing. Aborting OTG setup"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
sudo modprobe libcomposite
|
# Is the dwc2 overlay installed? Nothing will work if it isn't.
|
||||||
|
if lsmod | grep -q "dwc2"; then
|
||||||
|
echo "DWC2 module loaded, setting up OTG gadget serial and ethernet" | logger -t $0 -p info
|
||||||
|
echo "DWC2 module loaded"
|
||||||
|
else
|
||||||
|
echo "DWC2 module missing. Aborting OTG setup." | logger -t $0 -p info
|
||||||
|
echo "DWC2 module missing"
|
||||||
|
systemctl disable serial-getty@ttyGS0.service
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
modprobe libcomposite
|
||||||
cd /sys/kernel/config/usb_gadget
|
cd /sys/kernel/config/usb_gadget
|
||||||
|
if [ -d "MyGadget" ]; then
|
||||||
|
echo "MyGadget already exists. Aborting OTG setup." | logger -t $0 -p info
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Create our new gadget
|
# Create our new gadget
|
||||||
sudo mkdir MyGadget
|
mkdir MyGadget
|
||||||
cd MyGadget
|
cd MyGadget
|
||||||
# Add some boilerplate data that the gadget needs
|
# Add some boilerplate data that the gadget needs
|
||||||
echo 0x1d6b > idVendor # Linux Foundation’s USB VID. Replace with your own VID if required
|
echo 0x1d6b > idVendor # Linux Foundation’s USB VID. Replace with your own VID if required
|
||||||
@@ -41,6 +54,7 @@ echo "Config 1" > configs/c.1/strings/0x409/configuration
|
|||||||
### Remember to create the storage block device first
|
### Remember to create the storage block device first
|
||||||
## cd /root
|
## cd /root
|
||||||
### Example: Make a 256 MB file to act as "USB stick"
|
### Example: Make a 256 MB file to act as "USB stick"
|
||||||
|
## Only create it once or it will delete the previous content
|
||||||
## sudo dd if=/dev/zero of=drive.bin bs=1M count=256
|
## sudo dd if=/dev/zero of=drive.bin bs=1M count=256
|
||||||
### Create a VFAT file system on the backing store
|
### Create a VFAT file system on the backing store
|
||||||
## sudo mkfs.vfat drive.bin
|
## sudo mkfs.vfat drive.bin
|
||||||
@@ -56,9 +70,14 @@ mkdir functions/acm.usb0
|
|||||||
ln -s functions/acm.usb0 configs/c.1/
|
ln -s functions/acm.usb0 configs/c.1/
|
||||||
|
|
||||||
## Ethernet (RNDIS and ECM)
|
## Ethernet (RNDIS and ECM)
|
||||||
|
## Of note, this may cause the IP to show up as 127.0.0.1
|
||||||
|
## and wireless to suddenly fail to connect
|
||||||
mkdir functions/ecm.usb0
|
mkdir functions/ecm.usb0
|
||||||
ln -s functions/ecm.usb0 configs/c.1/
|
ln -s functions/ecm.usb0 configs/c.1/
|
||||||
|
|
||||||
## USB Device Controller update
|
## USB Device Controller update
|
||||||
UDC=`ls /sys/class/udc`
|
UDC=`ls /sys/class/udc`
|
||||||
echo $UDC > UDC
|
echo $UDC > UDC
|
||||||
|
|
||||||
|
# Enable the gettys
|
||||||
|
systemctl enable serial-getty@ttyGS0.service
|
||||||
|
|||||||
Reference in New Issue
Block a user