Advertisement
Guest User

Untitled

a guest
Jan 2nd, 2018
481
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.07 KB | None | 0 0
  1. #!/bin/sh
  2. # Copyright (C) 2016 Mathias Kresin <dev@kresin.me>
  3.  
  4. . /lib/functions.sh
  5.  
  6. # remove debug output from serial console
  7. echo 5 > /proc/sys/kernel/printk
  8.  
  9. # check for required binaries
  10. BINARIES="insmod flash_erase nandwrite ubirmvol nanddump openssl nandwrite fw_printenv fw_setenv"
  11. for BINARY in ${BINARIES}; do
  12. [ ! -x $(which ${BINARY}) ] && {
  13. echo "${BINARY} not found - are you running the install image?" >&2
  14. exit 1
  15. }
  16. done
  17.  
  18. # make sure expected partitions exist and are writable
  19. PART_NAME="ubi"
  20. UBI_PART_INDEX=$(find_mtd_index "${PART_NAME}")
  21. [ -z "${UBI_PART_INDEX}" ] && {
  22. echo "${PART_NAME} partition not found - something is wrong!" >&2
  23. exit 1
  24. }
  25.  
  26. [ $(cat /sys/class/block/mtdblock${UBI_PART_INDEX}/ro) -eq 1 ] && {
  27. echo "${PART_NAME} partition not writable - something is wrong!" >&2
  28. exit 1
  29. }
  30.  
  31. PART_NAME="uboot-env"
  32. UBOOT_ENV_PART_INDEX=$(find_mtd_index "${PART_NAME}")
  33. [ -z "${UBOOT_ENV_PART_INDEX}" ] && {
  34. echo "${PART_NAME} partition not found - something is wrong!" >&2
  35. exit 1
  36. }
  37.  
  38. [ $(cat /sys/class/block/mtdblock${UBOOT_ENV_PART_INDEX}/ro) -eq 1 ] && {
  39. echo "${PART_NAME} partition not writable - are you running the install image?" >&2
  40. exit 1
  41. }
  42.  
  43. # cleanup nandsim state
  44. rmmod nandsim &>/dev/null
  45.  
  46. # create 16 MByte virtual nand chip in RAM
  47. insmod nandsim first_id_byte=0x20 second_id_byte=0x33 parts=8 >/dev/null
  48. PART_NAME="NAND simulator partition 0"
  49. NANDSIM_UBOOT_ENV_PART_INDEX=$(find_mtd_index "${PART_NAME}")
  50. [ -z "${NANDSIM_UBOOT_ENV_PART_INDEX}" ] && {
  51. echo "ERROR ${PART_NAME} partition not found - something is wrong!" >&2
  52. exit 1
  53. }
  54.  
  55. echo ""
  56. echo "This script will erase parts of the Nand flash memory on this Hub, and then"
  57. echo "prepare it for running Sysupgrade."
  58. echo ""
  59. echo ""
  60. echo "WARNING: DO NOT CONTINUE unless you have saved a backup of the original firmware"
  61. echo " to your COMPUTER or other storage device!"
  62. echo ""
  63. echo ""
  64. echo "DO NOT POWER OFF THE DEVICE DURING THIS PROCEDURE."
  65. echo ""
  66. echo ""
  67.  
  68. read -p "Please enter YESIHAVEABACKUP to continue: " CONFIRMATION
  69. [ "${CONFIRMATION}" != "YESIHAVEABACKUP" ] && exit 0
  70.  
  71. set -o pipefail
  72.  
  73. echo ""
  74. echo "Starting installation..."
  75.  
  76. # configure fw_printenv
  77. echo "/dev/mtd${NANDSIM_UBOOT_ENV_PART_INDEX} 0x0000 0x20000 0x4000" > /etc/fw_env.config
  78.  
  79. # BT BusinessHub 5a
  80. # Plusnet Hub One
  81. # BT HomeHub 5a
  82. KNOWN_KEYS="B1D3B4BD0970FCA9261E23C2170DB8E52407C71DAC06098678C0885BC7E68CCD \
  83. 86fd5557bab554172a97eaec65680745d4ec2efe723decb956a50bd9bc13e1a8 \
  84. 3E4CA8114D15BFC653B2BF9519EF2B94200E30345503B125C1D0BE776698B950"
  85.  
  86. for key in $KNOWN_KEYS; do
  87. echo "TRYING to decrypt u-boot env with key $key"
  88.  
  89. # decrypt aes-256-cbc encrypted u-boot env and store to temporary mtd
  90. # blockdevice to manipulate it using the u-boot env tools
  91. flash_erase -q "/dev/mtd${NANDSIM_UBOOT_ENV_PART_INDEX}" 0 0
  92.  
  93. nanddump -q "/dev/mtd${UBOOT_ENV_PART_INDEX}" | \
  94. openssl enc -d -aes-256-cbc \
  95. -K $key \
  96. -iv 00000000000000000000000000000000 -nopad | \
  97. nandwrite -q "/dev/mtd${NANDSIM_UBOOT_ENV_PART_INDEX}"
  98.  
  99. BOOTCMD=$(fw_printenv -n bootcmd 2>/dev/null)
  100. [ -n "$BOOTCMD" ] && {
  101. echo "SUCCESSFULLY decrypted u-boot env"
  102. break
  103. }
  104. done
  105.  
  106. if [ -z "$BOOTCMD" ]
  107. then
  108. echo "WARNING: U-boot environment could not be decrypted!"
  109. echo ""
  110. echo "'bootcmd' will be reset to default values. When the HH5A starts up after"
  111. echo "installing LEDE, the boot process will halt at the VR9# u-boot prompt."
  112. echo ""
  113. echo "To update 'bootcmd' variable refer to the guide on the web page hosting the"
  114. echo "install image."
  115. echo ""
  116. flash_erase "/dev/mtd${UBOOT_ENV_PART_INDEX}" 0 0
  117.  
  118. read -p "Press any key to continue..."
  119. else
  120. fw_printenv -n bootcmd_openrg &>/dev/null && {
  121. echo "ERROR bootcmd_openrg already exists. Please restore backup and start again" >&2
  122. exit 1
  123. }
  124.  
  125. echo ""
  126. echo "BACKING UP original bootcmd in u-boot env"
  127. fw_setenv bootcmd_openrg "$BOOTCMD"
  128.  
  129. echo "SETTING custom bootcmd in u-boot env"
  130. fw_setenv bootcmd 'ubi part UBI; ubi read $(loadaddr) kernel; bootm $(loadaddr)'
  131.  
  132. echo "UNLOCKING u-boot prompt"
  133. fw_setenv silent
  134.  
  135. echo ""
  136. echo "FLASHING updated encrypted u-boot env"
  137. flash_erase "/dev/mtd${UBOOT_ENV_PART_INDEX}" 0 0
  138. nanddump -q "/dev/mtd${NANDSIM_UBOOT_ENV_PART_INDEX}" | \
  139. openssl enc -aes-256-cbc \
  140. -K $key \
  141. -iv 00000000000000000000000000000000 -nopad | \
  142. nandwrite -m "/dev/mtd${UBOOT_ENV_PART_INDEX}"
  143. fi
  144.  
  145. # cleanup nandsim state
  146. rmmod nandsim &>/dev/null
  147.  
  148. echo ""
  149. echo "REMOVING ubi volume OpenRG..."
  150. ubirmvol /dev/ubi0 --name=OpenRG
  151.  
  152. echo ""
  153. echo "REMOVING ubi volume FFS..."
  154. ubirmvol /dev/ubi0 --name=FFS
  155.  
  156. echo ""
  157. echo ""
  158. echo "Preparation completed!"
  159. echo ""
  160. echo "Your attached USB media is mounted as a subdirectory at /tmp/mounts/"
  161. echo ""
  162. echo "To install LEDE, run:"
  163. echo ""
  164. echo " sysupgrade /tmp/mounts/<directory>/lede-17.01.4-lantiq-xrx200-BTHOMEHUBV5A-squashfs-sysupgrade.bin"
  165. echo ""
  166. echo "Sysupgrade will automatically restart your device when it has finished."
  167. echo "If the CFG-04 UART prompt appears, power-cycle your device!"
  168. echo "The hub should now boot up using LEDE."
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement