initial brax3 device makefiles
* boots and works fine Signed-off-by: erascape <erascape@proton.me>
This commit is contained in:
commit
59281ccd87
67 changed files with 3271 additions and 0 deletions
BIN
overlay/system/usr/bin/umtprd
Executable file
BIN
overlay/system/usr/bin/umtprd
Executable file
Binary file not shown.
136
overlay/system/usr/bin/usb-tethering
Executable file
136
overlay/system/usr/bin/usb-tethering
Executable file
|
@ -0,0 +1,136 @@
|
|||
#!/bin/bash
|
||||
|
||||
####
|
||||
# Default profile
|
||||
USB_IDVENDOR=0FCE
|
||||
USB_IDPRODUCT=7169
|
||||
USB_IPRODUCT="Unknown"
|
||||
USB_ISERIAL="Unknown"
|
||||
USB_IMANUFACTURER="GNU/Linux Device"
|
||||
USB_IFACE=""
|
||||
|
||||
####
|
||||
# Override profile
|
||||
if [ -f /etc/default/hybris-device ]; then
|
||||
source /etc/default/hybris-device
|
||||
fi
|
||||
|
||||
ANDROID_USB=/sys/class/android_usb/android0
|
||||
USB_FUNCTIONS=rndis
|
||||
LOCAL_IP=10.15.19.82
|
||||
GADGET_DIR=/sys/kernel/config/usb_gadget
|
||||
|
||||
write() {
|
||||
echo -n "$2" > "$1"
|
||||
}
|
||||
|
||||
# This sets up the USB with whatever USB_FUNCTIONS are set to via configfs
|
||||
usb_setup_configfs() {
|
||||
G_USB_ISERIAL=$GADGET_DIR/g1/strings/0x409/serialnumber
|
||||
|
||||
mkdir $GADGET_DIR/g1
|
||||
write $GADGET_DIR/g1/idVendor "0x$USB_IDVENDOR"
|
||||
write $GADGET_DIR/g1/idProduct "0x$USB_IDPRODUCT"
|
||||
mkdir $GADGET_DIR/g1/strings/0x409
|
||||
write $GADGET_DIR/g1/strings/0x409/serialnumber "$USB_ISERIAL"
|
||||
write $GADGET_DIR/g1/strings/0x409/manufacturer "$USB_IMANUFACTURER"
|
||||
write $GADGET_DIR/g1/strings/0x409/product "$USB_IPRODUCT"
|
||||
|
||||
if echo $USB_FUNCTIONS | grep -q "rndis"; then
|
||||
mkdir $GADGET_DIR/g1/functions/rndis.usb0
|
||||
mkdir $GADGET_DIR/g1/functions/rndis_bam.rndis
|
||||
fi
|
||||
echo $USB_FUNCTIONS | grep -q "mass_storage" && mkdir $GADGET_DIR/g1/functions/storage.0
|
||||
|
||||
mkdir $GADGET_DIR/g1/configs/c.1
|
||||
mkdir $GADGET_DIR/g1/configs/c.1/strings/0x409
|
||||
write $GADGET_DIR/g1/configs/c.1/strings/0x409/configuration "$USB_FUNCTIONS"
|
||||
|
||||
if echo $USB_FUNCTIONS | grep -q "rndis"; then
|
||||
ln -s $GADGET_DIR/g1/functions/rndis.usb0 $GADGET_DIR/g1/configs/c.1
|
||||
ln -s $GADGET_DIR/g1/functions/rndis_bam.rndis $GADGET_DIR/g1/configs/c.1
|
||||
fi
|
||||
echo $USB_FUNCTIONS | grep -q "mass_storage" && ln -s $GADGET_DIR/g1/functions/storage.0 $GADGET_DIR/g1/configs/c.1
|
||||
|
||||
# ls /sys/class/udc > $GADGET_DIR/g1/UDC
|
||||
ls /sys/class/udc | grep -v dummy | head -1 > $GADGET_DIR/g1/UDC
|
||||
}
|
||||
|
||||
# This sets up the USB with whatever USB_FUNCTIONS are set to via android_usb
|
||||
usb_setup_android_usb() {
|
||||
G_USB_ISERIAL=$ANDROID_USB/iSerial
|
||||
write $ANDROID_USB/enable 0
|
||||
write $ANDROID_USB/functions ""
|
||||
write $ANDROID_USB/enable 1
|
||||
usleep 500000 # 0.5 delay to attempt to remove rndis function
|
||||
write $ANDROID_USB/enable 0
|
||||
write $ANDROID_USB/idVendor $USB_IDVENDOR
|
||||
write $ANDROID_USB/idProduct $USB_IDPRODUCT
|
||||
write $ANDROID_USB/iManufacturer "$USB_IMANUFACTURER"
|
||||
write $ANDROID_USB/iProduct "$USB_IPRODUCT"
|
||||
write $ANDROID_USB/iSerial "$USB_ISERIAL"
|
||||
write $ANDROID_USB/functions $USB_FUNCTIONS
|
||||
write $ANDROID_USB/enable 1
|
||||
}
|
||||
|
||||
# This determines which USB setup method is going to be used
|
||||
usb_setup() {
|
||||
mount -t configfs none /sys/kernel/config || true
|
||||
|
||||
if [ -d $ANDROID_USB ]; then
|
||||
usb_setup_android_usb
|
||||
elif [ -d $GADGET_DIR ]; then
|
||||
usb_setup_configfs
|
||||
fi
|
||||
}
|
||||
|
||||
usb_info() {
|
||||
sleep 1
|
||||
write $G_USB_ISERIAL "$1"
|
||||
echo "$1" >> /var/log/usb_info.log
|
||||
}
|
||||
|
||||
ip_setup() {
|
||||
local candidate
|
||||
|
||||
if [ -n "$USB_IFACE" ]; then
|
||||
# If the specified interface fails, fallback to auto-detection.
|
||||
ip link set dev "$USB_IFACE" up || USB_IFACE=""
|
||||
fi
|
||||
|
||||
if [ -z "$USB_IFACE" ]; then
|
||||
# Prioritise usb0 over rndis0. On some devices (e.g. Sony Xperia X),
|
||||
# both would show up but only usb0 is usable. If, on some device, the
|
||||
# opposite happens, then I don't know what to do.
|
||||
for candidate in usb0 rndis0; do
|
||||
if ip link set dev "$candidate" up; then
|
||||
USB_IFACE="$candidate"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [ -z "$USB_IFACE" ]; then
|
||||
usb_info "could not setup USB tethering!"
|
||||
return 1
|
||||
fi
|
||||
|
||||
ip address add "${LOCAL_IP}/24" dev "$USB_IFACE"
|
||||
|
||||
usb_info "$USB_IMANUFACTURER on $USB_IFACE $LOCAL_IP"
|
||||
}
|
||||
|
||||
dhcpd_start() {
|
||||
mkdir -p /run/hybris-usb
|
||||
touch /run/hybris-usb/dhcpd4.leases
|
||||
/usr/sbin/dhcpd -4 -q \
|
||||
-cf /etc/hybris-usb/dhcpd.conf \
|
||||
-pf /run/hybris-usb/dhcpd4.pid \
|
||||
-lf /run/hybris-usb/dhcpd4.leases \
|
||||
"$USB_IFACE"
|
||||
}
|
||||
|
||||
usb_setup
|
||||
ip_setup && dhcpd_start
|
||||
|
||||
exit $?
|
Loading…
Add table
Add a link
Reference in a new issue