#!/bin/bash
do {
	#////////////////////////////////////
	# DietPi
	#
	#////////////////////////////////////
	# Created by Daniel Knight / daniel.knight@dietpi.com / dietpi.com
	#////////////////////////////////////
	#
	# Info:
	# - Generates /DietPi/dietpi/.hw_model
	# - Called from /DietPi/dietpi/boot
	#
	# In DietPi-Software:
	#	MAX_G_HW_MODEL=64		#This needs to match highest G_HW_MODEL value in dietpi-obtain_hw_model
	#	MAX_G_HW_ARCH=10		#This needs to match highest G_HW_ARCH value in dietpi-obtain_hw_model
	#
	# - Line1 -
	# G_HW_MODEL 71 Beagle Bone Black
	# G_HW_MODEL 70 Sparky SBC
	# G_HW_MODEL 66 NanoPi M1 Plus
	# G_HW_MODEL 65 NanoPi NEO 2
	# G_HW_MODEL 64 NanoPi NEO Air
	# G_HW_MODEL 63 NanoPi M1/T1
	# G_HW_MODEL 62 NanoPi M3/T3
	# G_HW_MODEL 61 NanoPi M2/T2
	# G_HW_MODEL 60 NanoPi Neo
	# G_HW_MODEL 52 Asus Tinker Board
	# G_HW_MODEL 51 BananaPi Pro (Lemaker)
	# G_HW_MODEL 50 BananaPi M2+ (sinovoip)
	# G_HW_MODEL 43 Rock64
	# G_HW_MODEL 40 Pine A64
	# G_HW_MODEL 38 OrangePi PC 2
	# G_HW_MODEL 37 OrangePi Prime
	# G_HW_MODEL 36 OrangePi Win
	# G_HW_MODEL 35 OrangePi Zero Plus 2 (H3/H5)
	# G_HW_MODEL 34 OrangePi Plus
	# G_HW_MODEL 33 OrangePi Lite
	# G_HW_MODEL 32 OrangePi Zero (H2+)
	# G_HW_MODEL 31 OrangePi One
	# G_HW_MODEL 30 OrangePi PC
	# G_HW_MODEL 22 Generic device (eg: unknown to DietPi)
	# G_HW_MODEL 21 x86_64 native (PC)
	# G_HW_MODEL 20 VM x64 (VMware VirtualBox)
	# G_HW_MODEL 13 oDroid U3
	# G_HW_MODEL 12 oDroid C2
	# G_HW_MODEL 11 oDroid XU3/XU4/HC1
	# G_HW_MODEL 10 oDroid C1
	# G_HW_MODEL 3 Raspberry Pi 3
	# G_HW_MODEL 2 Raspberry Pi 2
	# G_HW_MODEL 1 Raspberry Pi 1/Zero (512mb)
	# G_HW_MODEL 0 Raspberry Pi 1 (256mb)
	# - Line2 -
	# G_HW_MODEL_DESCRIPTION
	# - Line3 -
	# G_DISTRO 0 unknown
	# G_DISTRO 1 Debian Wheezy (No longer supported, http://dietpi.com/phpbb/viewtopic.php?f=9&t=432#p1898)
	# G_DISTRO 2 Ubuntu 14.04 (No longer supported, left in for user message during update)
	# G_DISTRO 3 Jessie
	# G_DISTRO 4 Stretch, pulled a muscle!
	# G_DISTRO 5 Buster
	# - Line4 -
	# RootFS device path (eg: /dev/mmc01)
	# - Line5 -
	# UUID
	# - Line 6 -
	# G_HW_ARCH 10 x86_64 (VM)
	# G_HW_ARCH 3 armv8/arm64
	# G_HW_ARCH 2 armv7
	# G_HW_ARCH 1 armv6
	# G_HW_ARCH 0 unknown
	# - Line 7 -
	# G_HW_ARCH_DESCRIPTION
	# - Line 8 -
	# IMAGE_ADDITIONAL_CREDITS (eg: ARMbian, Meveric)
	# - Line 9 - Group CPU's
	# G_HW_CPUID 0 Not set
	# G_HW_CPUID 1 H3
	# G_HW_CPUID 2 H5
	# - Line 10 - Onboard WiFi/BT Index
	# HW_ONBOARD_WIFI 0 Not set
	# HW_ONBOARD_WIFI 1 RPi3/ZeroW (BCM43438)
	# - Line 11 - (RPi only)
	# HW_REVISION_CODE
	# - Line 12 - (RPi only)
	# HW_RELEASE_DATE
	# - Line 13 - (RPi only)
	# HW_PCB_REVISION_CODE
	# - Line 14 - (RPi only)
	# HW_MEMORY_SIZE
	# - Line 15 - (RPi only)
	# HW_MANUFACTURER_NAME
	#////////////////////////////////////

	#Import DietPi-Globals ---------------------------------------------------------------
	#. /DietPi/dietpi/func/dietpi-globals
	#Import DietPi-Globals ---------------------------------------------------------------

	#Force en_GB Locale for whole script. Prevents incorrect parsing with non-english locales.
	setvar LANG = 'en_GB.UTF-8'

	#Ensure we are in users home dir: https://github.com/Fourdee/DietPi/issues/905#issuecomment-298223705
	cd $HOME

	#/////////////////////////////////////////////////////////////////////////////////////
	#Obtain Hardware Model index
	#/////////////////////////////////////////////////////////////////////////////////////

	setvar G_HW_MODEL = '0'
	setvar G_HW_MODEL_DESCRIPTION = ''Unknown Device''
	setvar FP_G_HW_MODEL_INDENTIFIER = ''/etc/.dietpi_hw_model_identifier''
	setvar G_DISTRO = '0'
	setvar HW_UUID = '0'
	setvar G_HW_ARCH = '0'
	setvar G_HW_ARCH_DESCRIPTION = ''unknown''
	setvar IMAGE_ADDITIONAL_CREDITS = ''''
	setvar G_HW_CPUID = '0'
	setvar HW_ONBOARD_WIFI = '0'

	setvar ROOTFS_DEVICE_PATH = $(df | grep -m1 '/$' | awk '{print $1}')

	#	RPi Extras
	setvar HW_REVISION_CODE = '0'
	setvar HW_RELEASE_DATE = ''Unknown''
	setvar HW_PCB_REVISION_CODE = ''Unknown''
	setvar HW_MEMORY_SIZE = '0'
	setvar HW_MANUFACTURER_NAME = ''Unknown''

	proc RPi_BoardInfo {

		#-----------------------------------------------------------------------------------
		#Obtain device info by revision number
		# *" because 10000002 then it indicates that your Raspberry Pi has been over-volted
		setvar HW_REVISION_CODE = $(cat /proc/cpuinfo | grep 'Revision' | awk '{print $3}')

		setvar G_HW_MODEL_DESCRIPTION = ''RPi ''

		if [[ "$HW_REVISION_CODE" = *"Beta" ]] {

			setvar HW_RELEASE_DATE = ''Q1 2012''
			setvar G_HW_MODEL_DESCRIPTION = ''Beta''
			setvar HW_PCB_REVISION_CODE = ''Unknown''
			setvar HW_MEMORY_SIZE = '256'
			setvar HW_MANUFACTURER_NAME = ''Unknown''
			setvar G_HW_MODEL = '0'

		} elif [[ "$HW_REVISION_CODE" = *"0002" ]] {

			setvar HW_RELEASE_DATE = ''Q1 2012''
			setvar G_HW_MODEL_DESCRIPTION = ''B''
			setvar HW_PCB_REVISION_CODE = ''1.0''
			setvar HW_MEMORY_SIZE = '256'
			setvar HW_MANUFACTURER_NAME = ''Unknown''
			setvar G_HW_MODEL = '0'

		} elif [[ "$HW_REVISION_CODE" = *"0003" ]] {

			setvar HW_RELEASE_DATE = ''Q3 2012''
			setvar G_HW_MODEL_DESCRIPTION = ''B (ECN0001)''
			setvar HW_PCB_REVISION_CODE = ''1.0''
			setvar HW_MEMORY_SIZE = '256'
			setvar HW_MANUFACTURER_NAME = ''Unknown''
			setvar G_HW_MODEL = '0'

		} elif [[ "$HW_REVISION_CODE" = *"0004" ]] {

			setvar HW_RELEASE_DATE = ''Q3 2012''
			setvar G_HW_MODEL_DESCRIPTION = ''B''
			setvar HW_PCB_REVISION_CODE = ''2.0''
			setvar HW_MEMORY_SIZE = '256'
			setvar HW_MANUFACTURER_NAME = ''Sony''
			setvar G_HW_MODEL = '0'

		} elif [[ "$HW_REVISION_CODE" = *"0005" ]] {

			setvar HW_RELEASE_DATE = ''Q4 2012''
			setvar G_HW_MODEL_DESCRIPTION = ''B''
			setvar HW_PCB_REVISION_CODE = ''2.0''
			setvar HW_MEMORY_SIZE = '256'
			setvar HW_MANUFACTURER_NAME = ''Qisda''
			setvar G_HW_MODEL = '0'

		} elif [[ "$HW_REVISION_CODE" = *"0006" ]] {

			setvar HW_RELEASE_DATE = ''Q4 2012''
			setvar G_HW_MODEL_DESCRIPTION = ''B''
			setvar HW_PCB_REVISION_CODE = ''2.0''
			setvar HW_MEMORY_SIZE = '256'
			setvar HW_MANUFACTURER_NAME = ''Egoman''
			setvar G_HW_MODEL = '0'

		} elif [[ "$HW_REVISION_CODE" = *"0007" ]] {

			setvar HW_RELEASE_DATE = ''Q1 2013''
			setvar G_HW_MODEL_DESCRIPTION = ''A''
			setvar HW_PCB_REVISION_CODE = ''2.0''
			setvar HW_MEMORY_SIZE = '256'
			setvar HW_MANUFACTURER_NAME = ''Egoman''
			setvar G_HW_MODEL = '0'

		} elif [[ "$HW_REVISION_CODE" = *"0008" ]] {

			setvar HW_RELEASE_DATE = ''Q1 2013''
			setvar G_HW_MODEL_DESCRIPTION = ''A''
			setvar HW_PCB_REVISION_CODE = ''2.0''
			setvar HW_MEMORY_SIZE = '256'
			setvar HW_MANUFACTURER_NAME = ''Sony''
			setvar G_HW_MODEL = '0'

		} elif [[ "$HW_REVISION_CODE" = *"0009" ]] {

			setvar HW_RELEASE_DATE = ''Q1 2013''
			setvar G_HW_MODEL_DESCRIPTION = ''A''
			setvar HW_PCB_REVISION_CODE = ''2.0''
			setvar HW_MEMORY_SIZE = '256'
			setvar HW_MANUFACTURER_NAME = ''Qisda''
			setvar G_HW_MODEL = '0'

		} elif [[ "$HW_REVISION_CODE" = *"000d" ]] {

			setvar HW_RELEASE_DATE = ''Q4 2012''
			setvar G_HW_MODEL_DESCRIPTION = ''B''
			setvar HW_PCB_REVISION_CODE = ''2.0''
			setvar HW_MEMORY_SIZE = '512'
			setvar HW_MANUFACTURER_NAME = ''Egoman''
			setvar G_HW_MODEL = '1'

		} elif [[ "$HW_REVISION_CODE" = *"000e" ]] {

			setvar HW_RELEASE_DATE = ''Q4 2012''
			setvar G_HW_MODEL_DESCRIPTION = ''B''
			setvar HW_PCB_REVISION_CODE = ''2.0''
			setvar HW_MEMORY_SIZE = '512'
			setvar HW_MANUFACTURER_NAME = ''Sony''
			setvar G_HW_MODEL = '1'

		} elif [[ "$HW_REVISION_CODE" = *"000f" ]] {

			setvar HW_RELEASE_DATE = ''Q4 2012''
			setvar G_HW_MODEL_DESCRIPTION = ''B''
			setvar HW_PCB_REVISION_CODE = ''2.0''
			setvar HW_MEMORY_SIZE = '512'
			setvar HW_MANUFACTURER_NAME = ''Qisda''
			setvar G_HW_MODEL = '1'

		} elif [[ "$HW_REVISION_CODE" = *"0010" ]] {

			setvar HW_RELEASE_DATE = ''Q3 2014''
			setvar G_HW_MODEL_DESCRIPTION = ''B+''
			setvar HW_PCB_REVISION_CODE = ''1.0''
			setvar HW_MEMORY_SIZE = '512'
			setvar HW_MANUFACTURER_NAME = ''Sony''
			setvar G_HW_MODEL = '1'

		} elif [[ "$HW_REVISION_CODE" = *"0011" ]] {

			setvar HW_RELEASE_DATE = ''Q2 2014''
			setvar G_HW_MODEL_DESCRIPTION = ''CM''
			setvar HW_PCB_REVISION_CODE = ''1.0''
			setvar HW_MEMORY_SIZE = '512'
			setvar HW_MANUFACTURER_NAME = ''Sony''
			setvar G_HW_MODEL = '1'

		} elif [[ "$HW_REVISION_CODE" = *"0012" ]] {

			setvar HW_RELEASE_DATE = ''Q4 2014''
			setvar G_HW_MODEL_DESCRIPTION = ''A+''
			setvar HW_PCB_REVISION_CODE = ''1.0''
			setvar HW_MEMORY_SIZE = '256'
			setvar HW_MANUFACTURER_NAME = ''Sony''
			setvar G_HW_MODEL = '0'

		} elif [[ "$HW_REVISION_CODE" = *"0013" ]] {

			setvar HW_RELEASE_DATE = ''Q1 2015''
			setvar G_HW_MODEL_DESCRIPTION = ''B+''
			setvar HW_PCB_REVISION_CODE = ''1.2''
			setvar HW_MEMORY_SIZE = '512'
			setvar HW_MANUFACTURER_NAME = ''Unknown''
			setvar G_HW_MODEL = '1'

		} elif [[ "$HW_REVISION_CODE" = *"a01041" ]] {

			setvar HW_RELEASE_DATE = ''Q1 2015''
			setvar G_HW_MODEL_DESCRIPTION = ''2 Model B''
			setvar HW_PCB_REVISION_CODE = ''1.1''
			setvar HW_MEMORY_SIZE = '1024'
			setvar HW_MANUFACTURER_NAME = ''Sony''
			setvar G_HW_MODEL = '2'

		} elif [[ "$HW_REVISION_CODE" = *"a020a0" ]] {

			setvar HW_RELEASE_DATE = ''Q1 2017''
			setvar G_HW_MODEL_DESCRIPTION = ''CM 3''
			setvar HW_PCB_REVISION_CODE = ''1.0''
			setvar HW_MEMORY_SIZE = '1024'
			setvar HW_MANUFACTURER_NAME = ''Sony''
			setvar G_HW_MODEL = '3'
			setvar HW_ONBOARD_WIFI = '1'

		} elif [[ "$HW_REVISION_CODE" = *"a21041" ]] {

			setvar HW_RELEASE_DATE = ''Q1 2015''
			setvar G_HW_MODEL_DESCRIPTION = ''2 Model B''
			setvar HW_PCB_REVISION_CODE = ''1.1''
			setvar HW_MEMORY_SIZE = '1024'
			setvar HW_MANUFACTURER_NAME = ''Embest, China''
			setvar G_HW_MODEL = '2'

		} elif [[ "$HW_REVISION_CODE" = *"a02082" ]] {

			setvar HW_RELEASE_DATE = ''Q1 2016''
			setvar G_HW_MODEL_DESCRIPTION = ''3 Model B''
			setvar HW_PCB_REVISION_CODE = ''1.2''
			setvar HW_MEMORY_SIZE = '1024'
			setvar HW_MANUFACTURER_NAME = ''Sony''
			setvar G_HW_MODEL = '3'
			setvar HW_ONBOARD_WIFI = '1'

		} elif [[ "$HW_REVISION_CODE" = *"a22082" ]] {

			setvar HW_RELEASE_DATE = ''Q1 2016''
			setvar G_HW_MODEL_DESCRIPTION = ''3 Model B''
			setvar HW_PCB_REVISION_CODE = ''1.2''
			setvar HW_MEMORY_SIZE = '1024'
			setvar HW_MANUFACTURER_NAME = ''Embest, China''
			setvar G_HW_MODEL = '3'
			setvar HW_ONBOARD_WIFI = '1'

		} elif [[ "$HW_REVISION_CODE" = *"a32082" ]] {

			setvar HW_RELEASE_DATE = ''Q4 2016''
			setvar G_HW_MODEL_DESCRIPTION = ''3 Model B''
			setvar HW_PCB_REVISION_CODE = ''1.2''
			setvar HW_MEMORY_SIZE = '1024'
			setvar HW_MANUFACTURER_NAME = ''Sony''
			setvar G_HW_MODEL = '3'
			setvar HW_ONBOARD_WIFI = '1'

		} elif [[ "$HW_REVISION_CODE" = *"900092" ]] {

			setvar HW_RELEASE_DATE = ''Q4 2015''
			setvar G_HW_MODEL_DESCRIPTION = ''Zero''
			setvar HW_PCB_REVISION_CODE = ''1.2''
			setvar HW_MEMORY_SIZE = '512'
			setvar HW_MANUFACTURER_NAME = ''Sony''
			setvar G_HW_MODEL = '1'

		} elif [[ "$HW_REVISION_CODE" = *"900093" ]] {

			setvar HW_RELEASE_DATE = ''Q2 2016''
			setvar G_HW_MODEL_DESCRIPTION = ''Zero''
			setvar HW_PCB_REVISION_CODE = ''1.3''
			setvar HW_MEMORY_SIZE = '512'
			setvar HW_MANUFACTURER_NAME = ''Sony''
			setvar G_HW_MODEL = '1'

		} elif [[ "$HW_REVISION_CODE" = *"9000c1" ]] {

			setvar HW_RELEASE_DATE = ''Q1 2017''
			setvar G_HW_MODEL_DESCRIPTION = ''Zero W''
			setvar HW_PCB_REVISION_CODE = ''1.1''
			setvar HW_MEMORY_SIZE = '512'
			setvar HW_MANUFACTURER_NAME = ''Sony''
			setvar G_HW_MODEL = '1'
			setvar HW_ONBOARD_WIFI = '1'

		}

	}

	proc Obtain_HW_Info {

		#Systems that use /etc/.dietpi_hw_model_identifier for G_HW_MODEL
		if test -f $FP_G_HW_MODEL_INDENTIFIER {

			setvar G_HW_MODEL = $(sed -n 1p "$FP_G_HW_MODEL_INDENTIFIER")

			#Beagle Bone Black
			if (( $G_HW_MODEL == 71 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''BBB''

			#Sparky SBC
			} elif (( $G_HW_MODEL == 70 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''Sparky SBC''

			#NanoPi M1 Plus
			} elif (( $G_HW_MODEL == 66 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''NanoPi M1 Plus''
				setvar IMAGE_ADDITIONAL_CREDITS = ''ARMbian''
				setvar G_HW_CPUID = '1'

			#NanoPi NEO 2
			} elif (( $G_HW_MODEL == 65 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''NanoPi NEO 2''
				setvar IMAGE_ADDITIONAL_CREDITS = ''ARMbian''
				setvar G_HW_CPUID = '2'

			#NanoPi NEO Air
			} elif (( $G_HW_MODEL == 64 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''NanoPi NEO Air''
				setvar IMAGE_ADDITIONAL_CREDITS = ''ARMbian''
				setvar G_HW_CPUID = '1'

			#NanoPi M1
			} elif (( $G_HW_MODEL == 63 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''NanoPi M1/T1''
				setvar IMAGE_ADDITIONAL_CREDITS = ''ARMbian''
				setvar G_HW_CPUID = '1'

			#NanoPi M3
			} elif (( $G_HW_MODEL == 62 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''NanoPi M3/T3''

			#NanoPi M2
			} elif (( $G_HW_MODEL == 61 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''NanoPi M2/T2''

			#NanoPi Neo
			} elif (( $G_HW_MODEL == 60 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''NanoPi Neo''
				setvar IMAGE_ADDITIONAL_CREDITS = ''ARMbian''
				setvar G_HW_CPUID = '1'

			#Asus Tinker Board
			} elif (( $G_HW_MODEL == 52 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''Asus Tinker Board''

			#BananaPi Pro
			} elif (( $G_HW_MODEL == 51 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''BananaPi Pro''
				setvar IMAGE_ADDITIONAL_CREDITS = ''ARMbian''

				#BananaPi M2+
			} elif (( $G_HW_MODEL == 50 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''BananaPi M2+''
				setvar IMAGE_ADDITIONAL_CREDITS = ''ARMbian''
				setvar G_HW_CPUID = '1'

			#Rock64
			} elif (( $G_HW_MODEL == 43 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''Rock64''
				setvar IMAGE_ADDITIONAL_CREDITS = ''Longsleep, Ayufan''

			#PineA64
			} elif (( $G_HW_MODEL == 40 )) {

				setvar IMAGE_ADDITIONAL_CREDITS = ''Longsleep, Rhkean''
				setvar G_HW_MODEL_DESCRIPTION = ''Pine A64''

			#OrangePi PC 2
			} elif (( $G_HW_MODEL == 38 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''OPi PC2''
				setvar IMAGE_ADDITIONAL_CREDITS = ''ARMbian''
				setvar G_HW_CPUID = '2'

			#OrangePi Prime
			} elif (( $G_HW_MODEL == 37 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''OPi Prime''
				setvar IMAGE_ADDITIONAL_CREDITS = ''ARMbian''
				setvar G_HW_CPUID = '2'

			#OrangePi Win
			} elif (( $G_HW_MODEL == 36 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''OPi Win''
				setvar IMAGE_ADDITIONAL_CREDITS = ''ARMbian''

			#OrangePi Zero Plus 2 (h3/h5)
			} elif (( $G_HW_MODEL == 35 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''OPi Zero 2 Plus''
				setvar IMAGE_ADDITIONAL_CREDITS = ''ARMbian''
				setvar G_HW_CPUID = '1'

			#OrangePi Plus
			} elif (( $G_HW_MODEL == 34 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''OrangePi Plus''
				setvar IMAGE_ADDITIONAL_CREDITS = ''ARMbian''
				setvar G_HW_CPUID = '1'

			#OrangePi Lite
			} elif (( $G_HW_MODEL == 33 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''OrangePi Lite''
				setvar IMAGE_ADDITIONAL_CREDITS = ''ARMbian''
				setvar G_HW_CPUID = '1'

			#OrangePi Zero
			} elif (( $G_HW_MODEL == 32 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''OrangePi Zero''
				setvar IMAGE_ADDITIONAL_CREDITS = ''ARMbian''
				#G_HW_CPUID=1 #H2+

			#OrangePi One
			} elif (( $G_HW_MODEL == 31 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''OrangePi One''
				setvar IMAGE_ADDITIONAL_CREDITS = ''ARMbian''
				setvar G_HW_CPUID = '1'

			#OrangePi Pc
			} elif (( $G_HW_MODEL == 30 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''OrangePi PC''
				setvar IMAGE_ADDITIONAL_CREDITS = ''ARMbian''
				setvar G_HW_CPUID = '1'

			#Generic device (eg: unknown to DietPi)
			} elif (( $G_HW_MODEL == 22 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''Generic Device''
				setvar IMAGE_ADDITIONAL_CREDITS = ''You!''

			#x86_64 native PC
			} elif (( $G_HW_MODEL == 21 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''Native PC''

			#VM
			} elif (( $G_HW_MODEL == 20 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''Virtual Machine''

			#oDroid U3
			} elif (( $G_HW_MODEL == 13 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''Odroid U3''
				#IMAGE_ADDITIONAL_CREDITS='Meveric'

			#Odroid C2
			} elif (( $G_HW_MODEL == 12 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''Odroid C2''
				setvar IMAGE_ADDITIONAL_CREDITS = ''Meveric''

			#Odroid XU3/XU4/HC1
			} elif (( $G_HW_MODEL == 11 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''Odroid XU3/4''
				setvar IMAGE_ADDITIONAL_CREDITS = ''Meveric''

			#Odroid C1
			} elif (( $G_HW_MODEL == 10 )) {

				setvar G_HW_MODEL_DESCRIPTION = ''Odroid C1''
				setvar IMAGE_ADDITIONAL_CREDITS = ''Meveric''

			}

		#RPi
		} elif (( $(grep -ci -m1 '^ID=raspbian' /etc/os-release) )) {

			#Grab hardware description from rpi_boardinfo
			RPi_BoardInfo

		}

		#Get Distro Index
		if (( $( grep -ci -m1 'jessie' /etc/os-release) )) {

			setvar G_DISTRO = '3'

		} elif (( $( grep -ci -m1 'stretch' /etc/os-release) )) {

			setvar G_DISTRO = '4'

		} elif (( $( grep -ci -m1 'buster' /etc/os-release) )) {

			setvar G_DISTRO = '5'

		}

		#Generate UUID if it does not exist
		if test ! -f /DietPi/dietpi/.hw_model {

			setvar HW_UUID = $(cat /proc/sys/kernel/random/uuid)

		} else {

			setvar HW_UUID = $(sed -n 5p /DietPi/dietpi/.hw_model)

		}

		#Obtain hardware cpu architecture
		setvar G_HW_ARCH_DESCRIPTION = $(uname -m)
		if test $G_HW_ARCH_DESCRIPTION = "armv6l" {

			setvar G_HW_ARCH = '1'

		} elif test $G_HW_ARCH_DESCRIPTION = "armv7l" {

			setvar G_HW_ARCH = '2'

		} elif test $G_HW_ARCH_DESCRIPTION = "aarch64" {

			setvar G_HW_ARCH = '3'

		} elif test $G_HW_ARCH_DESCRIPTION = "x86_64" {

			setvar G_HW_ARCH = '10'

		# - Unknown arch for DietPi, inform user by adding 'unknown'.
		} else {

			setvar G_HW_ARCH_DESCRIPTION = '' (Unknown)''

		}

		# - Add HW arch to HW desc
		setvar G_HW_MODEL_DESCRIPTION = "" ($G_HW_ARCH_DESCRIPTION)""

		#Save data
		cat <<< """ > /DietPi/dietpi/.hw_model
$G_HW_MODEL
$G_HW_MODEL_DESCRIPTION
$G_DISTRO
$ROOTFS_DEVICE_PATH
$HW_UUID
$G_HW_ARCH
$G_HW_ARCH_DESCRIPTION
$IMAGE_ADDITIONAL_CREDITS
$G_HW_CPUID
$HW_ONBOARD_WIFI
$HW_REVISION_CODE
$HW_RELEASE_DATE
$HW_PCB_REVISION_CODE
$HW_MEMORY_SIZE
$HW_MANUFACTURER_NAME
"""
> /DietPi/dietpi/.hw_model
$G_HW_MODEL
$G_HW_MODEL_DESCRIPTION
$G_DISTRO
$ROOTFS_DEVICE_PATH
$HW_UUID
$G_HW_ARCH
$G_HW_ARCH_DESCRIPTION
$IMAGE_ADDITIONAL_CREDITS
$G_HW_CPUID
$HW_ONBOARD_WIFI
$HW_REVISION_CODE
$HW_RELEASE_DATE
$HW_PCB_REVISION_CODE
$HW_MEMORY_SIZE
$HW_MANUFACTURER_NAME
_EOF_

	}

	#-----------------------------------------------------------------------------------
	#Main
	Obtain_HW_Info
	#-----------------------------------------------------------------------------------
	exit 0
	#-----------------------------------------------------------------------------------

}