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