diff --git a/device.mk b/device.mk index 07bf4ec..cf6a40a 100644 --- a/device.mk +++ b/device.mk @@ -553,7 +553,7 @@ PRODUCT_PACKAGES += \ libwpa_client \ libwifi-hal-ctrl \ libwifi-hal-qcom \ - wifi-mac-generator \ + wifi-mac-generator-dre \ WifiResCommon \ wpa_supplicant \ wpa_supplicant.conf diff --git a/sepolicy/vendor/file_contexts b/sepolicy/vendor/file_contexts index 8aa0724..baacf0c 100644 --- a/sepolicy/vendor/file_contexts +++ b/sepolicy/vendor/file_contexts @@ -1,6 +1,6 @@ # Binaries /(vendor|system/vendor)/bin/opf-service u:object_r:opf_exec:s0 -/(vendor|system/vendor)/bin/wifi-mac-generator u:object_r:wifi-mac-generator_exec:s0 +/(vendor|system/vendor)/bin/wifi-mac-generator-dre u:object_r:wifi-mac-generator_exec:s0 # Block devices /dev/block/platform/soc/4804000\.ufshc/by-name/fw_ufs1_[ab] u:object_r:vendor_custom_ab_block_device:s0 diff --git a/wifi-mac-generator/Android.bp b/wifi-mac-generator/Android.bp new file mode 100644 index 0000000..cf239de --- /dev/null +++ b/wifi-mac-generator/Android.bp @@ -0,0 +1,6 @@ +sh_binary { + name: "wifi-mac-generator-dre", + init_rc: ["wifi-mac-generator.rc"], + src: "wifi-mac-generator.sh", + vendor: true, +} diff --git a/wifi-mac-generator/wifi-mac-generator.rc b/wifi-mac-generator/wifi-mac-generator.rc new file mode 100644 index 0000000..409de07 --- /dev/null +++ b/wifi-mac-generator/wifi-mac-generator.rc @@ -0,0 +1,9 @@ +service vendor.wifi-mac-generator /vendor/bin/wifi-mac-generator-dre + class main + user wifi + group wifi + oneshot + disabled + +on post-fs-data + start vendor.wifi-mac-generator diff --git a/wifi-mac-generator/wifi-mac-generator.sh b/wifi-mac-generator/wifi-mac-generator.sh new file mode 100644 index 0000000..2961318 --- /dev/null +++ b/wifi-mac-generator/wifi-mac-generator.sh @@ -0,0 +1,43 @@ +#!/vendor/bin/sh +WLAN_MAC_VENDOR_PREFIX="C0EEFB" +WLAN_MAC_PERSIST_PATH="/mnt/vendor/persist/wlan_mac.bin" + +function wait_for_file() { + retries=0 + + while [ ! -f "${1}" ]; do + retries=$((retries + 1)) + + if [ "${retries}" -eq 10 ]; then + return 1 + fi + + sleep 1 + done + + return 0 +} + +if [[ ! -f "${WLAN_MAC_PERSIST_PATH}" ]] || [[ ! -s "${WLAN_MAC_PERSIST_PATH}" ]]; then + MAC_0_PATH="/data/vendor/oemnvitems/4678_0" + + if ! wait_for_file "${MAC_0_PATH}"; then + MAC_0="${WLAN_MAC_VENDOR_PREFIX}`xxd -l 3 -p /dev/urandom | tr '[:lower:]' '[:upper:]'`" + else + MAC_0=`xxd -p "${MAC_0_PATH}" | grep -o '..' | tac | tr -d '\n' | tr '[:lower:]' '[:upper:]'` + fi + + #MAC_1_PATH="/data/vendor/oemnvitems/4678_1" + + #if ! wait_for_file "${MAC_1_PATH}"; then + # MAC_1="${WLAN_MAC_VENDOR_PREFIX}`xxd -l 3 -p /dev/urandom | tr '[:lower:]' '[:upper:]'`" + #else + # MAC_1=`xxd -p "${MAC_1_PATH}" | grep -o '..' | tac | tr -d '\n' | tr '[:lower:]' '[:upper:]'` + #fi + + echo "Intf0MacAddress=${MAC_0}" > "${WLAN_MAC_PERSIST_PATH}" + echo "Intf1MacAddress=000AF58989FE" >> "${WLAN_MAC_PERSIST_PATH}" + echo "Intf2MacAddress=000AF58989FD" >> "${WLAN_MAC_PERSIST_PATH}" + echo "Intf3MacAddress=000AF58989FC" >> "${WLAN_MAC_PERSIST_PATH}" + echo "END" >> "${WLAN_MAC_PERSIST_PATH}" +fi