=========Board Identification =======
To differentiate each C2 board, you can use 16-digit S/N or MAC that are written on C2 manufacturing line.
===== Ubuntu =====
Your kernel version should be 3.14.29-35 or higher to get the full 16 digit of unique ID.
==== Board Identification using usid ====
Using the following node, you can get the 16-digit board ID.
cat /sys/class/efuse/usid
odroid@odroid64:~$ cat /sys/class/efuse/usid
HKC2123456789ABC
== Simple test example ==
$ gcc -o get_usid get_usid.c
odroid@odroid64:~$ ./get_usid
S/N is 'HKC2123456789ABC'
#include
#include
#include
#define SYSFS_CLASS_USID "/sys/class/efuse/usid"
#define USID_LEN 16
int main(int argc, char *argv[])
{
int fd, len;
char buf[USID_LEN];
fd = open(SYSFS_CLASS_USID, O_RDONLY);
if (fd < 0)
printf("Open error! \n");
read(fd, buf, USID_LEN);
printf("S/N is '%s'\n", buf);
close(fd);
return 0;
}
==== Board Identification using MAC ====
Or the unique MAC can be used to define your board.
odroid@odroid64:~$ ip add | grep link/ether
link/ether 00:12:34:56:78:9A brd ff:ff:ff:ff:ff:ff
==== S/N and MAC information on booting console ====
If you need to confirm if the value that you read is right one, check booting log message on console.
U-Boot 2015.01-00076-gbeda694 (Mar 01 2016 - 10:35:37), Build: jenkins-s905_and8
DRAM: 2 GiB
Relocation Offset is: 76f41000
-------------------------------------------------------------------------------------
* Welcome to Hardkernel's ODROID-C2
-------------------------------------------------------------------------------------
CPU : AMLogic S905
S/N : HKC2123456789ABC
MAC : 00:12:34:56:78:9A
BID : HKC2123456
-------------------------------------------------------------------------------------
===== Android =====
==== Board Identification using usid ====
On Android platform, you can use Property to get board ID with 'ro.serialno' or 'ro.boot.serialno'.
shell@odroidc2:/ $ getprop ro.serialno
HKC2123456789ABC
shell@odroidc2:/ $ getprop ro.boot.serialno
HKC2123456789ABC
The native property_get method from a java app using jni can be a general and easy way.
#include
void get_serialno(void) {
char serialno[16];
perperty_get("ro.serialno", serialno, "");
// or
perperty_get("ro.bootserialno", serialno, "");
.....
}