luckfox-pico-sdk/sysdrv/tools/board/android-tools/S99usb0config
luckfox-eng29 7a66b04c61 project:app:rkipc:Disable audio function in rkipc
project:cfg:BoardConfig_IPC:Add pre-processing and post-processing scripts for OEM and userdata images
project:build.sh:Add support for pre-processing and post-processing functionality for SDK OEM and userdata images
sysdrv:Makefile:Remove default Samba4 support from buildroot rootfs while retaining configuration files
sysdrv:tools:board:android-tools:S99usb0config:Add a disconnect and reconnect feature for usb0 in peripheral mode.
sysdrv:tools:board:buildroot:luckfox_pico_defconfig:Remove default Samva4 support from buildroot rootfs

Signed-off-by: luckfox-eng29 <eng29@luckfox.com>
2024-11-01 15:09:37 +08:00

68 lines
1.4 KiB
Bash
Executable File

#!/bin/sh
TARGET_IP="172.32.0.93"
USB_KEYWORD="android_work: sent uevent USB_STATE="
USB_MODE_PATH="/proc/device-tree/usbdrd/usb@ffb00000/dr_mode"
MAX_RETRIES=10
retries=0
usb0_config() {
if [ "$(cat /proc/device-tree/usbdrd/usb@ffb00000/dr_mode)" == "peripheral" ]; then
current_ip=$(ifconfig usb0 | grep -o 'inet addr:[^ ]*' | awk -F ':' '{print $2}')
echo "current_ip = $current_ip"
echo "TARGET_IP = $TARGET_IP"
while [[ "$current_ip" != "$TARGET_IP" && $retries -lt $MAX_RETRIES ]]; do
sleep .5
echo "luckfox : set usb0 ip"
ifconfig usb0 "$TARGET_IP"
current_ip=$(ifconfig usb0 | grep -o 'inet addr:[^ ]*' | awk -F ':' '{print $2}')
echo $current_ip
retries=$((retries + 1))
done
if [[ "$current_ip" != "$TARGET_IP" ]]; then
echo "usb0 config error"
else
echo "usb0 config success"
fi
else
echo "usb0 is using host mode"
fi
}
usb_reset() {
while true; do
last_line=$(dmesg | grep "$USB_KEYWORD" | tail -n 1)
if [[ "$last_line" == *"DISCONNECTED"* ]]; then
echo "Detected USB DISCONNECTED."
/etc/init.d/S50usbdevice restart
usb0_config
#elif [[ "$last_line" == *"CONFIGURED"* ]]; then
# echo "Detected CONFIGURED. No action required."
#else
# echo "No relevant USB_STATE found."
fi
sleep 5
done
}
case $1 in
start)
# check peripheral
usb_mode="$(cat $USB_MODE_PATH)"
if [ "$usb_mode" = "peripheral" ]; then
usb0_config
usb_reset &
fi
;;
stop) ;;
*)
exit 1
;;
esac