#!/bin/sh

USB=$1

VID=$(printf "%04x" 0x$(echo "$USB" | awk -F'/' '{print $1}'))
PID=$(printf "%04x" 0x$(echo "$USB" | awk -F'/' '{print $2}'))

if echo "$USB" | grep -Eq '^1bc7/1910/'; then
	PORT=$(grep -l "$VID" /sys/bus/usb/devices/*/idVendor | awk -F'/' '{print $(NF-1)}')
	echo "$VID $PID" > /sys/bus/usb/drivers/qmi_wwan/new_id
	ESCAPED_PORT=$(echo "$PORT" | sed 's/\./\\./g')
	X=$(ls /sys/bus/usb/devices/ | grep -o "^${ESCAPED_PORT}:[0-9]\+\.2" | head -n1 | cut -d: -f2 | cut -d. -f1)
	for Y in 2 3 4; do
		echo "$PORT:$X.$Y" > /sys/bus/usb/drivers/qmi_wwan/unbind
	done
fi

if echo "$USB" | grep -Eq '^1bc7/1900/|^413c/81d7/'; then
	PORT=$(grep -l "$VID" /sys/bus/usb/devices/*/idVendor | awk -F'/' '{print $(NF-1)}')
	DEVICE_PATH="/sys/bus/usb/devices/${PORT}/bConfigurationValue"
	CONFIG="$(cat "$DEVICE_PATH")"
	if grep -qi dell "/sys/bus/usb/devices/$PORT/manufacturer" && [ "$CONFIG" = "2" ]; then
		while :; do
			echo -1 > "$DEVICE_PATH"
			echo 1 > "$DEVICE_PATH"
			sleep 1
			CONFIG=$(cat "$DEVICE_PATH")
			if [ "$CONFIG" = "1" ]; then
				break
			fi
		done
	fi
fi

echo "$VID $PID" > /sys/bus/usb-serial/drivers/option1/new_id
