当前位置:   article > 正文

cm11修改wifi_mac地址_cm311-5-zg mac地址修改

cm311-5-zg mac地址修改

说明

应该是2016年之前的记录,之前没有写文档记录的习惯,都是随手记录的txt文件,所以没有图片、格式等。甚至现在看来有些地方逻辑不通(可能还因为年少轻狂,有些偏颇的话语),但是这些与现在的我不重要了,所以也不打算再复现、推理,重新编辑等,仅仅是在旧硬盘中发现,删除之前觉得可能还有点价值,记录下来吧。

参考find5的部分源码https://github.com/CyanogenMod/android_device_oppo_apq8064-common/tree/cm-11.0/wcnss_oppo

大概原理就是从自己指定的文件中获取mac地址,E:\cm11.0\hardware\qcom\wlan\wcnss-service目录下是wcnss-service这个可执行文件
在init.aries.rc中
service wcnss-service /system/bin/wcnss_service
class main
user system
group system wifi radio
oneshot

wcnss_oppo_client.c其实就是wcnss_qmi_client.c的覆盖,生成的动态库libwcnss_qmi中wcnss_qmi_get_wlan_address函数就可以
修改mac地址。
libqminvapi这个库文件是小米官方库,有个qmi_nv_read_wlan_mac(unsigned char** mac);函数获取真实的mac地址。

Android.mk和wcnss_oppo_client.c内容如下。

1:Android.mk
ifeq ( ( B O A R D V E N D O R ) , o p p o ) i f e q ( (BOARD_VENDOR),oppo) ifeq ( (BOARDVENDOR),oppo)ifeq((TARGET_BOARD_PLATFORM),msm8960)

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES := wcnss_oppo_client.c

LOCAL_C_INCLUDES += hardware/qcom/wlan/wcnss_service
LOCAL_CFLAGS += -Wall

LOCAL_SHARED_LIBRARIES := libc libcutils libutils liblog

LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := libwcnss_qmi

include $(BUILD_SHARED_LIBRARY)

endif
endif


2:wcnss_oppo_client.c

//#define LOG_NDEBUG 0

#define LOG_TAG “wcnss_oppo”

#define SUCCESS 0
#define FAILED -1

#define MAC_ADDR_PATH “/data/opponvitems/4678”
#define MAC_ADDR_SIZE 6
#define MAX_WAIT_COUNT 5
#define WAIT_TIME 500000

#include <cutils/log.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>

int wcnss_init_qmi(void)
{
/* empty */
return SUCCESS;
}

int wcnss_qmi_get_wlan_address(unsigned char *pBdAddr)
{
int fd, ret, i;
char buf[MAC_ADDR_SIZE];
struct stat mac_stat;

do {
    usleep(WAIT_TIME);
} while (stat(MAC_ADDR_PATH, &mac_stat) && i < MAX_WAIT_COUNT);

if (i == MAX_WAIT_COUNT) {
    ALOGE("Failed to obtain MAC address from NV\n");
    return FAILED;
}

fd = open(MAC_ADDR_PATH, O_RDONLY);
if (fd < 0) {
    ALOGE("Failure opening MAC path: %d\n", errno);
    return FAILED;
}

ret = read(fd, buf, MAC_ADDR_SIZE);
if (ret < 0) {
    ALOGE("Failure to read MAC data: %d\n", errno);
    close(fd);
    return FAILED;
}

/* swap bytes */
for (i = 0; i < MAC_ADDR_SIZE; i++) {
    pBdAddr[i] = buf[MAC_ADDR_SIZE - 1 - i];
}

ALOGI("Found MAC address: %02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx\n",
        pBdAddr[0],
        pBdAddr[1],
        pBdAddr[2],
        pBdAddr[3],
        pBdAddr[4],
        pBdAddr[5]);

close(fd);

return SUCCESS;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

}

void wcnss_qmi_deinit(void)
{
/* empty */
}


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/318689
推荐阅读
相关标签
  

闽ICP备14008679号