本帖最后由 qingfeng623 于 2018-4-19 10:41 编辑
这几天领导让修改下产品序列号,开启了各种百度。看到的序列号有这么几个情况:
1,查看cpuinfo 最后一行。
cat /proc/cpuinfo | busybox tail
我这里得到的结果是:Serial : ab5084299c78f3ef
2,查看cmdline中有没有serial值
cat /proc/cmdline | grep -i serial
我的cmdline里没有这个值。结果为空。
3,adb devices -l 看到的结果
adb devices -l
我这里得到的结果是:OUGRYS28NA device usb:3-1.3 product:rk3288 model:rk3288 device:rk3288
4,在android设备上,开机后进入setting->about devices->status->Serial number.
我这里得到的结果是:INITC748LINE.
这个结果,是我修改了system/core/init/init.c +748,得到的结果。
{ “ro.boot.serialno”, “ro.serialno”, “INITC748LINE”, },
5,查看iSerial文件内容:cat sys/class/android_usb/android0/iSerial
结果与adb所得到的结果一致。OUGRYS28NA。
网上有介绍过方法5的,修改iSerial后,去看了3中,序列号并没有被改,而且4中的,也没有被改。
我认为4和5应该是保持一致的。我要达到的目标是,4中,实际用户看到的序列号,是唯一的,与我有没有更新固件没有关系。当然,我是可以修改的,我要按照一定的规则生成。
谁有这方面的经验,给提点一下。
1,修改drmservice.c
system/core/drmservice/drmservice.c
#define SERIALNO_FROM_IDB 1 //if 1 read sn from idb3; if 0 generate sn auto
read sn from idb3,接下来,就是怎么改这个问题了。
2,idb3
按照我的理解,idb3应该是指,idblock的sector3的意思。
在机器开机时,boot会打印出sn号,sn:XXXXXXXX
这里的sn号,就是boot读取了sector3的数据得到的。
在以下文件中有描述:
u-boot/board/rockchip/common/rkloader/idblock.c +617
以下文件中有更多SDM_Read的信息,读取到全局变量gIdDataBuf中。
u-boot/board/rockchip/common/mediaboot/sdmmcBoot.c +114
3,关于序列号的读写功能,有rk提供的工具。
UpgradeDllTool_Release_v1.35。
工具地址点:[http://developer.t-firefly.com/forum.php?mod=viewthread&tid=11194 ](UpgradeDllTool_Release_v1.35,序列号,MAC地址,wifi地址, 蓝牙地址,IMEI,等 [url) (出处: Firefly开源社区)]传送门[/url]
另外
kernel/drivers/mtd/rknand/rknand_base_ko.c +321 这里有描述kernel获取sn号的方式
zhansb
November 25, 2016, 1:07am
3
/proc/cpuinfo的序列号是读取烧写在RK3288 EFUSE上的唯一性编号信息
楼主可以把IDB或者efuse上的信息写进ro.serialno,设置里面的应该就可以显示对应的序列号信息
zhansb 发表于 2016-11-25 09:07
/proc/cpuinfo的序列号是读取烧写在RK3288 EFUSE上的唯一性编号信息
楼主可以把IDB或者efuse上的信息写进r …
怎么把IDB或者efuse上的信息写进ro.serialno?这是要写在system/core/init/init.c +748中吗?
另外,请教一下,怎么一下读出来idb上的所以二进制数据?还有就是从哪可以获取到efuse信息?
你好,我用的是RK3399,但是这个/system/core/xxx.c什么的怎么改,没看到core这个目录啊?
_luMyU
January 20, 2020, 2:28am
12
rk有专门的写号工具,使用写号工具对设备序列号进行修改。
qingfeng623 发表于 2016-11-23 16:47
1,修改drmservice.c
system/core/drmservice/drmservice.c
#define SERIALNO_FROM_IDB 1 //if 1 read sn …
你好,我是用的WNpctool_Setup_V1.1.5_0802这个工具写的,但是写进去成功,工具读取成功,但是机器里的跟工具读出来的不一致,这是为啥?请帮忙回复写,非常感谢!