diff --git a/scripts/navka-core.sh b/scripts/navka-core.sh new file mode 100644 index 0000000..9c8197f --- /dev/null +++ b/scripts/navka-core.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +# Proven Pi-5 configfs gadget: HID keyboard+mouse + stereo UAC2 +set -euo pipefail + +mountpoint -q /sys/kernel/config || mount -t configfs configfs /sys/kernel/config +G=/sys/kernel/config/usb_gadget/navka + +[[ -d $G ]] && echo "" >"$G/UDC" && rm -rf "$G" + +mkdir -p "$G" +echo 0x1d6b >"$G/idVendor" # Linux Foundation +echo 0x0104 >"$G/idProduct" # Multifunction Composite Gadget +echo 0x0200 >"$G/bcdUSB" + +mkdir -p "$G/strings/0x409" +echo "0001" >"$G/strings/0x409/serialnumber" +echo "Navka" >"$G/strings/0x409/manufacturer" +echo "Navka Composite" >"$G/strings/0x409/product" + +# HID (boot keyboard) +mkdir -p "$G/functions/hid.usb0" +echo 1 >"$G/functions/hid.usb0/protocol" +echo 1 >"$G/functions/hid.usb0/subclass" +echo 8 >"$G/functions/hid.usb0/report_length" +echo -ne '\x05\x01\x09\x06\xa1\x01\x05\x07\x19\xe0\x29\xe7\x15\x00\x25'\ +'\x01\x75\x01\x95\x08\x81\x02\x95\x01\x75\x08\x81\x01\x95\x05\x75\x01'\ +'\x05\x08\x19\x01\x29\x05\x91\x02\x95\x01\x75\x03\x91\x01\x95\x06\x75'\ +'\x08\x15\x00\x25\x65\x05\x07\x19\x00\x29\x65\x81\x00\xc0' \ + >"$G/functions/hid.usb0/report_desc" + +# UAC2 stereo 48 kHz +mkdir -p "$G/functions/uac2.usb0" +echo 48000 >"$G/functions/uac2.usb0/c_srate" +echo 2 >"$G/functions/uac2.usb0/c_ssize" +echo 2 >"$G/functions/uac2.usb0/p_chmask" + +mkdir -p "$G/configs/c.1/strings/0x409" +echo "Config 1" >"$G/configs/c.1/strings/0x409/configuration" +echo 500 >"$G/configs/c.1/MaxPower" + +ln -s "$G/functions/hid.usb0" "$G/configs/c.1/" +ln -s "$G/functions/uac2.usb0" "$G/configs/c.1/" + +echo "$(ls /sys/class/udc | head -n1)" >"$G/UDC"