[RK3288][Android6.0] 除錯筆記 --- 快取檔案引起的serialno值相同
阿新 • • 發佈:2019-02-12
Platform: RK3288
OS: Android 6.0
Kernel: 3.10.92
現象:
第三方應用需要根據serialno來產生license, 但是遇到不同板子有相同serialno值的問題。
原因:
serialno對應的檔案被快取在了data分割槽,當核心板和主機板即rk3288 cpu和wifi晶片不在同一塊板子上是,如果有出現交換的情況。舉例:
A核心板在A主機板上刷機,然後A核心板被放到了B主機板,B核心板被放到了A主機板上然後執行了刷機動作。那麼此時A和B的核心板的serialno就一樣了。
解決方法:
diff --git a/drmservice/drmservice.c b/drmservice/drmservice.c index 6a648f7..6b4a28e 100755 --- a/drmservice/drmservice.c +++ b/drmservice/drmservice.c @@ -579,6 +579,8 @@ int store_serialno(char* serialno) int get_serialno_cached(char * result,int len) { //不去讀serialno快取檔案 +/*Kris, 180820, Fix sn repeatable issue if core board is resued on other mainboard. {*/ +#if 0 int fd,readlen; char buf[32]; fd = open(DEVICE_SERIALNO, O_RDONLY); @@ -599,6 +601,10 @@ int get_serialno_cached(char * result,int len) buf[readlen]='\0'; close(fd); return 0; +#else + return -1; +#endif +/*Kris, 180820, Fix sn repeatable issue if core board is resued on other mainboard. }*/ } void calc_seed_by_mac(char*mac,unsigned int * seed) @@ -671,8 +677,10 @@ void generate_device_serialno(int len,char*result) return; } +#if 0 //Kris, read mac directly from /sys/class/net/wlan0/address //MAC地址也有快取 if(check_wlan_mac()<0)//not buffered in data,do it { +#endif fd = open(WIFI_MAC_FILENAME, O_RDONLY);//read form buffered file if(fd<0) { @@ -717,7 +725,9 @@ void generate_device_serialno(int len,char*result) set_iface("wlan0", 1); store_wlan_mac();//buffer mac to data set_iface("wlan0", 0); +#if 0 //Kris, read mac directly from /sys/class/net/wlan0/address } +#endif fd = open(WLAN_MAC_FILE, O_RDONLY);