活动介绍
file-type

全志A33安卓Linux平台MAC地址固定补丁发布

ZIP文件

下载需积分: 9 | 741KB | 更新于2025-03-05 | 94 浏览量 | 15 下载量 举报 收藏
download 立即下载
根据提供的文件信息,我们可以解析出以下知识点: ### 标题知识点 - **A33固定MAC地址补丁.zip**: - “A33”很可能指的是全志科技(Allwinner Technology)所生产的一种处理器芯片型号。全志科技是中国的一家集成电路设计公司,专注于移动计算平台和智能应用处理器的设计和销售。 - “固定MAC地址补丁”意味着该补丁文件被设计用于修改或设置特定硬件(在此情况下为全志A33处理器相关设备)的MAC地址,并使之在设备重启后保持不变。MAC地址是网络中每个网络接口的唯一标识符。 ### 描述知识点 - **全志A33固定MAC补丁**: - 补丁用于固定全志A33芯片的MAC地址,暗示在没有该补丁的情况下,该设备的MAC地址可能会变化,这可能是由于其固件或操作系统的某些特性所导致。 - 通常,固定MAC地址对于网络设备来说很重要,尤其是当网络设备需要被网络管理系统识别或当其配置在需要静态MAC地址的网络环境中时。 - 描述中提到需要区分全志和A33,这意味着在寻找此类补丁时,用户需要确保下载的是适用于特定硬件和固件版本的正确补丁。 ### 标签知识点 - **安卓**: - 标签中的“安卓”意味着该补丁可能是为基于Android操作系统的设备所设计,因为全志A33芯片被广泛用于各种Android平板电脑和智能设备中。 - 安卓系统设备通常需要在启动时获取网络信息,包括MAC地址,因此针对这类设备开发的补丁通常用于修改底层网络配置或固件,以保证网络连接的稳定性和安全性。 - **Linux**: - 考虑到全志A33是一个基于ARM架构的芯片,它可能支持运行Linux操作系统,该标签表明补丁可能与Linux系统相关。 - 在Linux环境下,网络接口的MAC地址通常存储在系统的网络配置文件中,或者固化在设备的非易失性存储器内。该补丁可能修改了与网络配置相关的文件或参数。 - **A33**: - 如前所述,“A33”指的是全志科技的一个处理器型号。针对该型号的补丁表明其可能有独特的硬件或软件需求,需要专门的解决方案来固定其MAC地址。 ### 压缩包子文件的文件名称列表知识点 - **A33固定MAC地址补丁**: - 这一文件名表明补丁的具体作用是“固定MAC地址”,而且明确指出是针对“A33”芯片的补丁。 - 文件名中的“补丁”一词暗示这是一个软件更新或修复程序,用以解决某些问题或提高设备的功能性。 总结以上知识点,这个补丁文件是为了解决全志A33芯片在某些情况下不能维持静态MAC地址的问题而设计的。用户在使用该补丁时需要特别注意其兼容性,确保它适合自己的设备型号和操作系统。此外,它突出了安卓和Linux操作系统中网络配置管理和硬件设备标识的灵活性与复杂性。了解这些知识点可以帮助IT专业人员、设备开发者或高级用户更好地管理和配置其全志A33芯片设备的网络连接。

相关推荐

filetype
全志A80的以太网使用固定MAC地址.txt 2015/12/3 16:09 开发板:美睿的商业开发板 OS:android4.4.2(美睿提供) linux:3.4.39 发现全志平台的A80的以太网的MAC地址是变化的,由于需要做MAC地址和IP绑定的问题。 问了一些人,可以通过外挂EEPROM。外挂器件硬件不同意。(改版或者面积占用的问题) 当然在其它平台:比如freescale平台可以将eMMC分一个私有分区保存数据,在 恢复出厂设置 的时候,不会被擦除,感觉全志平台也应该有(只找到A80的,A80的没有找到)。 http://bbs.elecfans.com/jishu_427503_1_1.html [Android问答] 关于全志A20的分区问题(sys_partition.fex) ; keydata = 1 ; //私有数据分区,重新量产数据将不丢失 http://blog.csdn.net/memechashang/article/details/23999857 http://yobin.sinaapp.com/topic/2780/android%E7%9A%84deviceid%E7%9A%84%E6%B7%BB%E5%8A%A0 Android的DeviceID的添加 找了好久,可以看见文件:/proc/cpuinfo中的CPU的ID号是唯一的。 测试:先刷美睿的系统,然后再刷原生的系统(支持4K录像,但是美睿没有移植驱动的系统),发现序列号没变。 序列号查看的方法:设置→关于平板电脑→状态信息→序列号:38608c0010503dd3d65c 中看到。 shell@kylin-merrii:/ $ cat /proc/cpuinfo Processor : ARMv7 Processor rev 5 (v7l) processor : 0 BogoMIPS : 4800.00 Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc07 CPU revision : 5 Hardware : sun9i Revision : 0000 Serial : 38608c0010503dd3d65c shell@kylin-merrii:/ $ 换了一台机器,序列号:38608 c0010 501dd 3560e 感觉序列号应该是唯一的!^_这里不做担保。 思路:于是想办法读取序列号,取后12位作为MAC地址! MAC地址的有效性: http://blog.csdn.net/skyflying2012/article/details/40322563 MAC地址格式小结 在IPv4的环境中,区分单播和组播地址就是校检最低位的二进制数字,0代表单播地址,1代表组播地址。 也就是说第二个数字一定是0、2、4、6、8、A、C、E其中的一个。 全志A80的BSP中的有效性验证: Z:\wyb\finish_a80_4k_bsp\meirrii_merrii_a80_merrii\lichee\linux-3.4\include\linux\etherdevice.h Z:\wyb\finish_a80_4k_bsp\meirrii_merrii_a80_merrii\lichee\linux-3.4\drivers\net\ethernet\sunxi\eth\sunxi_geth.c addr [0] &= 0xfe; /* clear multicast bit */ addr [0] |= 0x02; /* set local assignment bit (IEEE802) */ 感觉要么就是全志的BUG,要么就是全志的设置更加严格,这样下来第二个数字一定是2、6、A、E(不能是0、4、8、C)其中的一个。 实现原理: 曾经研究过内核中如何生成随机的MAC地址,android层中的setting如何获取序列号,然后准备在framework中拦截,走不通了。 http://bbs.csdn.net/topics/360240853 android 获取平板电脑序列号 http://blog.csdn.net/zhanghao_hulk/article/details/8286916 [置顶] android平台获取手机IMSI,IMEI ,序列号,和 手机号的方法 http://www.cnblogs.com/Amandaliu/archive/2012/12/04/2802322.html 【Android】获取Mac地址【2】 后来想起来,调试 以太网卡驱动的时候,曾经出现过手工加载 insmod /system/vendor/modules/sunxi_gmac.ko 就可以获取MAC地址上网。 既然这样,就在init.rc的服务中启动一个C程序来获取序列号,然后配置在模块 sunxi_gmac.ko 中。 Z:\wyb\finish_a80_4k_bsp\meirrii_merrii_a80_merrii\android4.4\device\softwinner\kylin-merrii\init.sun9i.rc 关闭init.rc中的以太网卡驱动的加载, # insmod network insmod /system/vendor/modules/bcmdhd.ko insmod /system/vendor/modules/bcm_btlpm.ko insmod /system/vendor/modules/usbnet.ko insmod /system/vendor/modules/asix.ko insmod /system/vendor/modules/qf9700.ko insmod /system/vendor/modules/mcs7830.ko insmod /system/vendor/modules/rtl8150.ko insmod /system/vendor/modules/cdc_ether.ko # insmod /system/vendor/modules/sunxi_gmac.ko 然后在 init.rc 的最后面做一个服务,在系统启动的时候, #2015/12/3 11:49 edit the ethernet's MAC address!!!! service wenyuanbo /system/bin/chip_id_as_mac class main user root group root oneshot 文件名:Android.mk LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOCAL_MODULE = chip_id_as_mac # LOCAL_SRC_FILES := $(call all-subdir-c-files) LOCAL_SRC_FILES := chip_id_as_mac.c include $(BUILD_EXECUTABLE) 文件名:chip_id_as_mac.c // http://blog.csdn.net/21cnbao/article/details/7919055 // Z:\wyb\finish_a80_4k_bsp\meirrii_merrii_a80_merrii\android4.4\system\core\init #include #include #include #include #include #include #include #include #include #include #include #include static int get_chip_id(char *buf, size_t size) { char *path = "/proc/cpuinfo"; FILE *fd; char data[128]; char *key, *value, *end; int len = -1; fd = fopen(path, "r"); if (fd == NULL) { printf("****wyb %s:%d/%s()! ERROR !!!! cannot open %s\n", __FILE__, __LINE__, __func__, path); return -1; } while (fgets(data, sizeof(data), fd)) { key = data; value = strchr(key, ':'); if (value == 0) continue; *value++ = 0; if (strncmp(key, "Serial", 6)) continue; while (isspace(*value)) value++; end = strchr(value, '\n'); *end = 0; len = snprintf(buf, size, "%s", value); // printf("****wyb %s:%d/%s()! buf=%s len=%d\n", __FILE__, __LINE__, __func__, buf, len); break; } fclose(fd); return 0; } int main(int argc, char **argv) { int ret; char buf[32] = {0}; char buf2[32] = {0}; int i = 0; // unsigned char ucTemp = 0; char ucTemp = 0; char path[200] = "insmod /system/vendor/modules/sunxi_gmac.ko mac_str=\""; if (get_chip_id(buf, sizeof(buf)) < 0) { printf("****wyb %s:%d/%s()! ERROR!!!!\n", __FILE__, __LINE__, __func__); } else { printf("****wyb %s:%d/%s()! 2015/12/2 16:51 get_chip_id=%s sizeof(buf)=%d\n", __FILE__, __LINE__, __func__, buf, sizeof(buf)); // for(i=0; i<6; i++) for(i=0; iadb push chip_id_as_mac /system/bin/ C:\Users\wenyb>adb remount remount succeeded C:\Users\wenyb>adb shell root@kylin-merrii:/ # cd /system/bin cd /system/bin root@kylin-merrii:/system/bin # chmod 777 chip_id_as_mac chmod 777 chip_id_as_mac root@kylin-merrii:/system/bin # ll chip* ll chip* -rwxrwxrwx root root 5368 2015-12-03 15:23 chip_id_as_mac root@kylin-merrii:/system/bin # sync sync root@kylin-merrii:/system/bin # reboot 困惑,下面这个程序的执行之后,MAC地址就成为了:1F:50:3d:d3:d6:5c。找了好久也找不到原因。 // http://blog.csdn.net/21cnbao/article/details/7919055 // Z:\wyb\finish_a80_4k_bsp\meirrii_merrii_a80_merrii\android4.4\system\core\init #include #include #include #include #include #include #include #include #include #include #include #include static int get_chip_id(char *buf, size_t size) { char *path = "/proc/cpuinfo"; FILE *fd; char data[128]; char *key, *value, *end; int len = -1; fd = fopen(path, "r"); if (fd == NULL) { printf("****wyb %s:%d/%s()! ERROR !!!! cannot open %s\n", __FILE__, __LINE__, __func__, path); return -1; } while (fgets(data, sizeof(data), fd)) { key = data; value = strchr(key, ':'); if (value == 0) continue; *value++ = 0; if (strncmp(key, "Serial", 6)) continue; while (isspace(*value)) value++; end = strchr(value, '\n'); *end = 0; len = snprintf(buf, size, "%s", value); // printf("****wyb %s:%d/%s()! buf=%s len=%d\n", __FILE__, __LINE__, __func__, buf, len); break; } fclose(fd); return 0; } int main(int argc, char **argv) { int ret; char buf[32] = {0}; char buf2[32] = {0}; int i = 0; // unsigned char ucTemp = 0; char ucTemp = 0; char path[200] = "insmod /system/vendor/modules/sunxi_gmac.ko mac_str=\""; if (get_chip_id(buf, sizeof(buf)) < 0) { printf("****wyb %s:%d/%s()! ERROR!!!!\n", __FILE__, __LINE__, __func__); } else { printf("****wyb %s:%d/%s()! 2015/12/2 16:51 get_chip_id=%s sizeof(buf)=%d\n", __FILE__, __LINE__, __func__, buf, sizeof(buf)); // for(i=0; i<6; i++) for(i=0; i='a') && (ucTemp='A') && (ucTemp='0') && (ucTemp9) { ucTemp = (ucTemp-10) + 'A'; } else { ucTemp += '0'; } buf2[1] = ucTemp; printf("****wyb %s:%d/%s()! 2015/12/2 17:13 get_chip_id/buf2=%s sizeof(buf2)=%d\n", __FILE__, __LINE__, __func__, buf2, sizeof(buf2)); // strcat(d,s); // strcat(path, buf2); strncat(path, buf2, 17); strcat(path, "\""); printf("****wyb %s:%d/%s()! 2015/12/3 15:11 get_chip_id/buf2=%s sizeof(buf2)=%d path=%s\n", __FILE__, __LINE__, __func__, buf2, sizeof(buf2), path); system(path); } return 0; }
li815900542
  • 粉丝: 228
上传资源 快速赚钱