#!/bin/bash # Pi side of the USB link (HANDOFF package 0b). Run as root from this directory. Re-runnable. # Needs a reboot afterwards for the dwc2 mode change to take effect. set -euo pipefail cd "$(dirname "$0")" install -m 755 usb-gadget.sh /usr/local/sbin/robot-usb-gadget install -m 644 robot-usb-gadget.service /etc/systemd/system/robot-usb-gadget.service install -m 600 netplan-usb0.yaml /etc/netplan/60-usb0.yaml echo libcomposite > /etc/modules-load.d/robot-usb-gadget.conf cfg=/boot/firmware/config.txt [ -e "$cfg.bak-usbgadget" ] || cp "$cfg" "$cfg.bak-usbgadget" if grep -qx 'dtoverlay=dwc2' "$cfg"; then sed -i 's/^dtoverlay=dwc2$/dtoverlay=dwc2,dr_mode=peripheral/' "$cfg" elif ! grep -qx 'dtoverlay=dwc2,dr_mode=peripheral' "$cfg"; then printf '\n[all]\ndtoverlay=dwc2,dr_mode=peripheral\n' >> "$cfg" fi netplan generate systemctl daemon-reload systemctl enable robot-usb-gadget.service systemctl enable serial-getty@ttyGS0.service echo "installed; reboot to apply"