platform:RK3399
OS:Android 7.1
参考:
1.比特人生 https://blog.csdn.net/ielife/article/details/86719313
2.KrisFei https://blog.csdn.net/kris_fei/article/details/79447343?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158883304619726869022990%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=158883304619726869022990&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v2~rank_v25-4

1. 概述

对于一台运行Android系统的终端设备,一般会有许多出厂就已经确定的属性,这些属性唯一且具有特殊的作用。其中SN,MAC,IMEI(有通信模块)是最基础的几个属性,这些属性一般在出厂之前就会使用工具写到设备中,和设备绑定。

1.1 SN号

SN码是Serial Number的缩写,有时也叫SerialNo,也就是产品序列号,产品序列是为了验证“产品的合法身份”而引入的一个概念,它是用来保障用户的正版权益,享受合法服务的;一套正版的产品只对应一组产品序列号。SN码别称:机器码、认证码、注册申请码等。

SN号可以根据产品要求或者公司统一的编码规范进行编码,但是Android仍然对SN号有一定的限制要求,具体要求如下:

1. 英文字符和数字(a~z,A~Z,0~9)
2. 6~20个字符

1.2 mac地址

MAC地址是一个用来确认网络设备位置的位址。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC位址 。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。

网络设备制造商生产时烧录在网卡(Network lnterface Card)的EPROM中,所以如果网络设备制造商已经烧录好了MAC地址,那么我们就不需要再次烧录。如果没有提前烧录,那就需要采购MAC地址池并在生产时将MAC地址烧录到设备中。一般OEM工厂可以提供MAC地址。

终端设备常见的MAC地址有:WIFI MAC,LAN MAC,BT MAC;这个需要根据产品具体确定,比如有的产品就可能没有LAN MAC.相应的也不需要烧录LAN MAC。

2. 烧录及测试

瑞芯微提供写号工具,请联系FAE获取最新的写号工具,SDK旧版本的工具可能存在问题.

2.1 烧录

2.1.1 设备方式

两种设备模式: maskrom 和 loader 模式
maskrom 进入方式:短接 FLASH CLK 引脚,在该模式下面写号,必须要选择正确的
MiniLoaderAll.bin。
loader 进入方式:开机时候按住“音量+”或者 adb reboot loader 命令,在该模式下面写号,
设备必须是已经有烧写过固件。

2.1.2 写号模式


如果不清楚使用那种模式,可以逐一尝试.注意错误勾选可能导致写号失败.

2.1.3 配置

1.代码配置

diff --git a/drmservice/drmservice.c b/drmservice/drmservice.c
index 86c8e32..f2f25ba 100644
--- a/drmservice/drmservice.c
+++ b/drmservice/drmservice.c
@@ -81,7 +81,7 @@ typedef               unsigned char       uint8;#define DEBUG_LOG 0   //open debug info-#define SERIALNO_FROM_IDB 0  //if 1 read sn from idb3;  if 0 generate sn auto
+#define SERIALNO_FROM_IDB 1  //if 1 read sn from idb3;  if 0 generate sn auto#define SET_IFACE_DELAY                 300000#define SET_IFACE_POLLING_LOOP          20

2.软件配置


写号工具支持同时写入 7 个项,其中五个是预定义的(ID 是固定的,不能修改),剩下两个
用户可以通过修改 ID 自定义写入。 uboot、内核是通过 ID 来区别用户写入的内容的。用户可以
选择三种输入方式写号:

  1. 手动模式
    直接在主界面从键盘或者扫描枪输入要写入的数据项。
  2. 自增模式
    用户设定起始项,前缀和后缀,按十进制,或者十六进制递增生成写入数据项。
  3. 文件模式
    从文件获取写入的数据项,如果勾选“Bin 文件”,则会把整个文件写入;不勾选的话,则把选
    择的文件当做文本文件,一次写入一行.

2.1.4 烧录

配置完成后,在首页点击写入,等待设备写入成功即可.

2.2 查看

有多种方式查看是否写入成功.

方式一:使用上面的写号软件读取.

方式二:使用串口抓取开机log

#Boot ver: 0000-00-00#0.00
12345678 //SN号
normal boot.
checkKey

方法三:传给Kernel的启动参数

mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00002000@0x00004000(trust),0x00002000@0x00006000(uboot_ro),0x00002000@0x00008000(trust_ro),0x00002000@0x0000A000(misc),0x00008000@0x0000C000(resource),0x0000C000@0x00014000(kernel),0x00010000@0x00020000(boot),0x00020000@0x00030000(recovery),0x00038000@0x00050000(backup),0x00040000@0x00088000(cache),0x00600000@0x000C8000(system),0x00008000@0x006C8000(metadata),0x00000040@0x006D0000(verity_mode),0x00002000@0x006D0040(reserved),0x00000400@0x006D2040(frp),-@0x006D2440(userdata) storagemedia=emmc androidboot.oem_unlocked=0 uboot_logo=0x02000000@0x7dc00000 loader.timestamp=2020-04-24_12:20:44 SecureBootCheckOk=0 androidboot.serialno=12345678

方法四:使用adb

#adb devices
12345678 device

方法五:查看系统属性

getprop ro.serialno
getprop ro.boot.serialno

2.3 有效情况

在不擦除flash的情况下,SN号均有效,具体场景见下表.

操作 SN有效情况
单分区烧录 有效
整包烧录 无效
OTA差分升级 有效
OTA整包升级 有效
擦除Flash后烧录 无效
恢复出厂设置 有效

3. 获取串号(SN)

APK:

android.os.Build.SERIAL

ro.boot.serialno:

/system/core/init/init.cpp:

static void import_kernel_nv(const std::string& key, const std::string& value, bool for_emulator) {if (key.empty()) return;if (for_emulator) {// In the emulator, export any kernel option with the "ro.kernel." prefix.property_set(android::base::StringPrintf("ro.kernel.%s", key.c_str()).c_str(), value.c_str());return;}if (key == "qemu") {strlcpy(qemu, value.c_str(), sizeof(qemu));} else if (android::base::StartsWith(key, "androidboot.")) {property_set(android::base::StringPrintf("ro.boot.%s", key.c_str() + 12).c_str(),value.c_str());}
}

通过cmdline获取串号ro.boot.serialno,cmdline见上一小节方法三:

androidboot.serialno=12345678

sys.serialno:

system/core/drmservice/drmservice.c

       if(SERIALNO_FROM_IDB)//read serialno form idb{vendor_storage_read_sn();property_set("sys.serialno", sn_buf_idb[0] ? sn_buf_idb : "12345678");write_serialno2kernel(sn_buf_idb[0] ? sn_buf_idb : "12345678");SLOGE("get serialno from idb,serialno = %s",sn_buf_idb);}

由于是写入的SN,所以从idb中获取SN.

ro.serialno:

init.rk30board.rc:

//运行drmservice
service drmservice /system/bin/drmserviceclass mainoneshot# set ro.serialno
on property:sys.serialno=*setprop ro.serialno ${sys.serialno}

SN及Mac地址烧录相关推荐

  1. Mac os区别_SN及Mac地址烧录

    platform:RK3399 OS:Android 7.1 参考: 1.比特人生 https://blog.csdn.net/ielife/article/details/86719313 2.Kr ...

  2. 黑群晖找不到设备_黑群晖洗白算号器SN、MAC地址

    可算DX3615xs及DS3617xs SN号与MAC号 运行程序 每次执行生成20组SN号,选其中一个即可.祝你好运!!! 生成DS3615xs SN序列号: [1] 生成DS3617xs SN序列 ...

  3. [RK3568 Android11] 教程之使用RKDevInfoWriteTool工具烧录SN和MAC地址等

    目录 前言 一.RKDevInfoWriteTool工具 二.SN序列号填写和烧录 三.LAN MAC地址填写和烧录

  4. 如何在黑群晖中修改服务器名字,如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号...

    现在网上购买的很多装好系统的黑群晖的Mac地址和Sn系列号都是一样的,如果你在同一个局域网使用2个有相同Mac地址和Sn系列号的黑群晖,会出现以下情况 1.synology assistant 群晖 ...

  5. Android Studio的代码笔记--SN序列号、MAC地址、IP地址学习

    关于获取设备SN序列号.MAC地址.IP地址的学习代码 SN序列号 获取SN序列号 MAC地址 获取MAC地址 IP.wlanIP.wlanMAC.网络.ping 获取以太网的IP地址 获取设备wla ...

  6. mac地址修改_优酷路由宝救砖时MAC和无线参数及SN恢复方法

    科普:成砖和救砖 路由器刷机时如果中途断电或者其他特殊情况,可能导致路由器无法启动,也就是俗称成砖.这时候就需要用编程器直接对路由器闪存进行读写,重新刷入固件称为救砖. 一般的救砖办法是,用编程器写入 ...

  7. 启明云端分享|sigmastar SSD201/ssd202核心板升级参考,可实现开机自动从 SD 卡升级固件或开机自动从 SD 卡烧录 MAC 地址

    实现功能 1.开机自动从 SD 卡升级固件: 2.开机自动从 SD 卡烧录 MAC 地址: 一.实现方法 自动升级固件 示例:# vi project/image/configs/i2m/script ...

  8. 启明云端分享|SSD201_自动升级固件与烧录MAC地址

    实现功能 1.开机自动从SD卡升级固件: 2.开机自动从SD卡烧录MAC地址: 实现方法 自动升级固件 vi project/image/configs/i2m/script_nand.mk @ech ...

  9. 启明云端分享|SSD20X_烧录mac地址文档参考

    注:以下是针对单网口且MAC地址连续(一般批量MAC都是连续的)的情况,如果是双网口,请参考最后双网口的配置. 烧录原理 1.SSD20X平台的MAC地址保存于"ethaddr"这 ...

最新文章

  1. ELK+Kafka集群日志分析系统
  2. 7.3图的遍历(深度优先)-理论
  3. deian   授权用户 sudo权限
  4. C++中 栈的简单封装
  5. C89 和 C99的标准比较
  6. mysql回表慢sql_MySQL 的覆盖索引与回表
  7. alisql mysql_AliSQL · 特性介绍 · 动态加字段
  8. 基于G8032标准的ERPS工业以太网交换机管理型千兆4光4电工业级以太网交换机支持环网+WEB管理+SNMP+VLAN
  9. python中的写入文件
  10. 头条号如何提高文章推荐量和阅读量,头条号提高文章阅读量和推荐量的方法
  11. vue2使用 relation-graph 展示关系图谱
  12. 创新的原则(《创新与企业家精神》彼得·德鲁克)
  13. 篮球c语言程序,源程序C代码:篮球比赛应用系统
  14. 微信小程序picker默认请选择
  15. 计算机网络层次结构特点,网络层次结构
  16. 第一篇 香橙派刷机和开发环境准备(Armbian版)
  17. 【Python 打开Raw data】
  18. 车船税业务知识--天津(三)
  19. 爬取酷狗音乐TOP榜所有的歌曲信息
  20. DRL for Online Computation Offloading in Wireless Powered Mobile-Edge Computing Networks

热门文章

  1. excel实现一列或者一行数据递增
  2. 全球及中国锂离子UPS系统行业市场供求分析与投资战略规划研究报告2022-2028年
  3. 微信小程序邀请好友增加积分
  4. 带进位循环右移c语言,带进位循环右移指令.PPT
  5. 盘点那些令人闻风丧胆的DDoS攻击事件
  6. .sqc文件代码审计
  7. 2.2 SIMPLE系列算法 | 2.3 PISO算法(OpenFOAM理论笔记系列)
  8. 学奥数对数学究竟有没有帮助?浅谈本人亲身经验
  9. 基于8086的电子秒表
  10. IntelliJ IDEA快捷键最全整理