xref: /OK3568_Linux_fs/device/rockchip/common/scripts/post-usb.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/bash -e
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunPOST_ROOTFS_ONLY=1
4*4882a593Smuzhiyun
5*4882a593Smuzhiyunsource "${POST_HELPER:-$(dirname "$(realpath "$0")")/../post-hooks/post-helper}"
6*4882a593Smuzhiyun
7*4882a593Smuzhiyuninstall_adbd()
8*4882a593Smuzhiyun{
9*4882a593Smuzhiyun	[ -n "$RK_USB_ADBD" ] || return 0
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun	echo "Installing adbd..."
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun	find "$TARGET_DIR" -name "*adbd*" -print0 | xargs -0 rm -rf
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun	install -m 0755 "$RK_TOOL_DIR/armhf/adbd" "$TARGET_DIR/usr/bin/adbd"
16*4882a593Smuzhiyun
17*4882a593Smuzhiyun	if [ "$RK_USB_ADBD_TCP_PORT" -ne 0 ]; then
18*4882a593Smuzhiyun		echo "export ADB_TCP_PORT=$RK_USB_ADBD_TCP_PORT" >> \
19*4882a593Smuzhiyun			"$TARGET_DIR/etc/profile.d/adbd.sh"
20*4882a593Smuzhiyun	fi
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun	if [ -n "$RK_USB_ADBD_BASH" -a -x "$TARGET_DIR/bin/bash" ]; then
23*4882a593Smuzhiyun		echo "export ADBD_SHELL=/bin/bash" >> \
24*4882a593Smuzhiyun			"$TARGET_DIR/etc/profile.d/adbd.sh"
25*4882a593Smuzhiyun	fi
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun	if [ -n "$RK_USB_ADBD_PASSWORD" ]; then
28*4882a593Smuzhiyun		install -m 0755 "$RK_DATA_DIR/adbd-auth" \
29*4882a593Smuzhiyun			"$TARGET_DIR/usr/bin/adbd-auth"
30*4882a593Smuzhiyun		sed -i "s/AUTH_PASSWORD/$(echo $RK_USB_ADBD_PASSWORD | md5sum)/g" \
31*4882a593Smuzhiyun			"$TARGET_DIR/usr/bin/adbd-auth"
32*4882a593Smuzhiyun	fi
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun	if [ -r "$RK_USB_ADBD_RSA_KEY" ]; then
35*4882a593Smuzhiyun		install -m 0644 "$RK_USB_ADBD_RSA_KEY" \
36*4882a593Smuzhiyun			"$TARGET_DIR/etc/adbkey.pub"
37*4882a593Smuzhiyun		echo "export ADBD_RSA_KEY_FILE=/etc/adbkey.pub" >> \
38*4882a593Smuzhiyun			"$TARGET_DIR/etc/profile.d/adbd.sh"
39*4882a593Smuzhiyun	fi
40*4882a593Smuzhiyun}
41*4882a593Smuzhiyun
42*4882a593Smuzhiyuninstall_ums()
43*4882a593Smuzhiyun{
44*4882a593Smuzhiyun	[ -n "$RK_USB_UMS" ] || return 0
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun	echo "Installing UMS..."
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun	{
49*4882a593Smuzhiyun		echo "export UMS_FILE=${RK_USB_UMS_FILE:-/userdata/ums_shared.img}"
50*4882a593Smuzhiyun		echo "export UMS_SIZE=${RK_USB_UMS_SIZE:-256M}"
51*4882a593Smuzhiyun		echo "export UMS_FSTYPE=${RK_USB_UMS_FSTYPE:-vfat}"
52*4882a593Smuzhiyun		echo "export UMS_MOUNT=$([ -z "$RK_USB_UMS_MOUNT" ] || echo 1)"
53*4882a593Smuzhiyun		echo "export UMS_MOUNTPOINT=${RK_USB_UMS_MOUNTPOINT:-/mnt/ums}"
54*4882a593Smuzhiyun		echo "export UMS_RO=$([ -z "$RK_USB_UMS_RO" ] || echo 1)"
55*4882a593Smuzhiyun	} >> "$TARGET_DIR/etc/profile.d/usbdevice.sh"
56*4882a593Smuzhiyun}
57*4882a593Smuzhiyun
58*4882a593Smuzhiyunusb_funcs()
59*4882a593Smuzhiyun{
60*4882a593Smuzhiyun	{
61*4882a593Smuzhiyun		echo "${RK_USB_ADBD:+adb}"
62*4882a593Smuzhiyun		echo "${RK_USB_MTP:+mtp}"
63*4882a593Smuzhiyun		echo "${RK_USB_ACM:+acm}"
64*4882a593Smuzhiyun		echo "${RK_USB_NTB:+ntb}"
65*4882a593Smuzhiyun		echo "${RK_USB_UVC:+uvc}"
66*4882a593Smuzhiyun		echo "${RK_USB_UAC1:+uac1}"
67*4882a593Smuzhiyun		echo "${RK_USB_UAC2:+uac2}"
68*4882a593Smuzhiyun		echo "${RK_USB_HID:+hid}"
69*4882a593Smuzhiyun		echo "${RK_USB_RNDIS:+rndis}"
70*4882a593Smuzhiyun		echo "${RK_USB_UMS:+ums}"
71*4882a593Smuzhiyun		echo "$RK_USB_EXTRA"
72*4882a593Smuzhiyun	} | xargs
73*4882a593Smuzhiyun}
74*4882a593Smuzhiyun
75*4882a593Smuzhiyun[ -z "$RK_USB_DISABLED" ] || exit 0
76*4882a593Smuzhiyun
77*4882a593Smuzhiyunif [ "$RK_USB_DEFAULT" -a "$POST_OS" = buildroot ]; then
78*4882a593Smuzhiyun	echo -e "\e[33mKeep original USB gadget for buildroot by default\e[0m"
79*4882a593Smuzhiyun	exit 0
80*4882a593Smuzhiyunfi
81*4882a593Smuzhiyun
82*4882a593Smuzhiyuncd "$SDK_DIR"
83*4882a593Smuzhiyun
84*4882a593Smuzhiyunmkdir -p "$TARGET_DIR/etc" "$TARGET_DIR/lib" \
85*4882a593Smuzhiyun	"$TARGET_DIR/usr/bin" "$TARGET_DIR/usr/lib"
86*4882a593Smuzhiyun
87*4882a593Smuzhiyunfind "$TARGET_DIR/etc" "$TARGET_DIR/lib" "$TARGET_DIR/usr/bin" \
88*4882a593Smuzhiyun	"$TARGET_DIR/usr/lib" -name "*usbdevice*" -print0 | xargs -0 rm -rf
89*4882a593Smuzhiyunfind "$TARGET_DIR/etc" -name ".usb_config" -print0 | xargs -0 rm -rf
90*4882a593Smuzhiyun
91*4882a593Smuzhiyunecho "USB gadget functions: $(usb_funcs)"
92*4882a593Smuzhiyunmkdir -p "$TARGET_DIR/etc/profile.d"
93*4882a593Smuzhiyunecho "export USB_FUNCS=\"$(usb_funcs)\"" > "$TARGET_DIR/etc/profile.d/usbdevice.sh"
94*4882a593Smuzhiyun
95*4882a593Smuzhiyuninstall_adbd
96*4882a593Smuzhiyuninstall_ums
97*4882a593Smuzhiyun
98*4882a593Smuzhiyunmkdir -p "$TARGET_DIR/lib/udev/rules.d"
99*4882a593Smuzhiyuninstall -m 0644 external/rkscript/61-usbdevice.rules \
100*4882a593Smuzhiyun	"$TARGET_DIR/lib/udev/rules.d/"
101*4882a593Smuzhiyun
102*4882a593Smuzhiyuninstall -m 0755 external/rkscript/usbdevice "$TARGET_DIR/usr/bin/"
103*4882a593Smuzhiyun
104*4882a593Smuzhiyunecho "Installing USB services..."
105*4882a593Smuzhiyun
106*4882a593Smuzhiyunif [ "$POST_INIT_SYSTEMD" ]; then
107*4882a593Smuzhiyun	install -m 0755 external/rkscript/usbdevice.service \
108*4882a593Smuzhiyun		"$TARGET_DIR/lib/systemd/system/"
109*4882a593Smuzhiyun	mkdir -p "$TARGET_DIR/etc/systemd/system/sysinit.target.wants"
110*4882a593Smuzhiyun	ln -sf /lib/systemd/system/usbdevice.service \
111*4882a593Smuzhiyun		"$TARGET_DIR/etc/systemd/system/sysinit.target.wants/"
112*4882a593Smuzhiyunfi
113*4882a593Smuzhiyun
114*4882a593Smuzhiyunif [ "$POST_INIT_SYSV" ]; then
115*4882a593Smuzhiyun	install -m 0755 external/rkscript/S*usbdevice \
116*4882a593Smuzhiyun		"$TARGET_DIR/etc/init.d/usbdevice.sh"
117*4882a593Smuzhiyun	for level in 5 4 3 2; do
118*4882a593Smuzhiyun		mkdir -p "$TARGET_DIR/etc/rc${level}.d"
119*4882a593Smuzhiyun		ln -sf ../init.d/usbdevice.sh \
120*4882a593Smuzhiyun			"$TARGET_DIR/etc/rc${level}.d/S70usbdevice.sh"
121*4882a593Smuzhiyun	done
122*4882a593Smuzhiyun	for level in 0 1 6; do
123*4882a593Smuzhiyun		mkdir -p "$TARGET_DIR/etc/rc${level}.d"
124*4882a593Smuzhiyun		ln -sf ../init.d/usbdevice.sh \
125*4882a593Smuzhiyun			"$TARGET_DIR/etc/rc${level}.d/K30usbdevice.sh"
126*4882a593Smuzhiyun	done
127*4882a593Smuzhiyunfi
128*4882a593Smuzhiyun
129*4882a593Smuzhiyunif [ "$POST_INIT_BUSYBOX" ]; then
130*4882a593Smuzhiyun	install -m 0755 external/rkscript/S*usbdevice "$TARGET_DIR/etc/init.d/"
131*4882a593Smuzhiyunfi
132*4882a593Smuzhiyun
133*4882a593Smuzhiyunmkdir -p "$TARGET_DIR/etc/usbdevice.d"
134*4882a593Smuzhiyunfor hook in $RK_USB_HOOKS; do
135*4882a593Smuzhiyun	[ -r "$hook" ] || continue
136*4882a593Smuzhiyun	echo "Installing USB hook: $hook"
137*4882a593Smuzhiyun	install -m 0644 "$hook" "$TARGET_DIR/etc/usbdevice.d/"
138*4882a593Smuzhiyundone
139