mirror of
https://github.com/libretro/Lakka-LibreELEC.git
synced 2025-04-02 10:41:46 -04:00
* Switch: it builds * Switch: Use udev to finalize usb gadget to save from systemd looping service restart until cable connected. * Switch: Update kernel stuff again * Switch: Downgrade Alsa packages to version in 4.x tree * Joycond: Update Switch version * Switch: Minor fixes * LibreELEC: Fix a few broken files from upstream pull * Switch: Fix LibreELEC build. * Switch: Update bootloader stuff * L4T: FFMPEG: Add support for nvv4l2 decoder/encoder * FFMPEG: Add back encoder support for game recording in retroarch * FFMPEG: revert a few changes, and add support for vulkan.
61 lines
2.1 KiB
Bash
61 lines
2.1 KiB
Bash
#!/bin/bash
|
|
|
|
manufacturer="Nintendo"
|
|
product="Switch(@DISTRO@)"
|
|
#vid/pid defaults if not ran as attackmode.... Defaults are default for linux
|
|
vid_default="0x057e" #Nintendo Co.
|
|
pid_default="0x2000" #Switch
|
|
serialnumber="00000001"
|
|
|
|
gadget_config="/sys/kernel/config"
|
|
udc="700d0000.xudc"
|
|
|
|
create_gadget_framework() {
|
|
#create basic gadget framework to work with
|
|
mkdir -p $gadget_config
|
|
mount -t configfs none $gadget_config
|
|
mkdir -p $gadget_config/usb_gadget/g
|
|
chmod -R 666 $gadget_config/usb_gadget/g
|
|
echo $vid_default > $gadget_config/usb_gadget/g/idVendor
|
|
echo $pid_default > $gadget_config/usb_gadget/g/idProduct
|
|
echo 0x0100 > $gadget_config/usb_gadget/g/bcdDevice # v1.0.0
|
|
echo 0x0200 > $gadget_config/usb_gadget/g/bcdUSB # USB 2.0
|
|
mkdir -p $gadget_config/usb_gadget/g/strings/0x409
|
|
echo $serialnumber > $gadget_config/usb_gadget/g/strings/0x409/serialnumber
|
|
echo $manufacturer > $gadget_config/usb_gadget/g/strings/0x409/manufacturer
|
|
echo $product > $gadget_config/usb_gadget/g/strings/0x409/product
|
|
echo 0xEF > $gadget_config/usb_gadget/g/bDeviceClass
|
|
echo 0x02 > $gadget_config/usb_gadget/g/bDeviceSubClass
|
|
echo 0x01 > $gadget_config/usb_gadget/g/bDeviceProtocol
|
|
mkdir -p $gadget_config/usb_gadget/g/configs/c.1
|
|
echo 32 > $gadget_config/usb_gadget/g/configs/c.1/MaxPower
|
|
}
|
|
|
|
create_ffs_mtp() {
|
|
mkdir -p $gadget_config/usb_gadget/g/functions/ffs.mtp
|
|
ln -s $gadget_config/usb_gadget/g/functions/ffs.mtp $gadget_config/usb_gadget/g/configs/c.1/
|
|
mkdir -p /dev/ffs-umtp
|
|
mount mtp /dev/ffs-umtp -t functionfs
|
|
}
|
|
|
|
create_serial() {
|
|
mkdir -p $gadget_config/usb_gadget/g/functions/acm.usb0
|
|
ln -s $gadget_config/usb_gadget/g/functions/acm.usb0 $gadget_config/usb_gadget/g/configs/c.1/
|
|
}
|
|
|
|
if [ "$1" = "init" ]; then
|
|
create_gadget_framework
|
|
create_ffs_mtp
|
|
create_serial
|
|
elif [ "$1" = "finalize" ]; then
|
|
systemctl start umtp-responder
|
|
sleep 1 #Wait for umtp-responder to start
|
|
echo $udc > $gadget_config/usb_gadget/g/UDC
|
|
udevadm settle -t 5 || :
|
|
systemctl start usb-tty
|
|
elif [ "$1" = "disconnect" ]; then
|
|
systemctl start usb-tty
|
|
echo "" > $gadget_config/usb_gadget/g/UDC
|
|
udevadm settle -t 5 || :
|
|
systemctl stop umtp-responder
|
|
fi
|