Recently I am working on some encryption work on Tx1, which require an unique machine ID of tx1 to generate the authorize license. Currently, I can only get the MAC address of the tx1, which can be easily modified. I want to get an unique hardware ID which cannot be modified, any one have some idea about this? As far as I know, on PC, usually we can use the BIOS identifier, disk driver id or motherboard ID combined to generate the machine ID…
Thank your for your opinion. I have download the kernel source code, but I don’t know how to use it. When I include the header in my code, there are some errors that cannot find some other kernel headers. Do I need to compile the full kernel to use this function? Besides, I only need this single one function in my project, is it possible to compile this function to a lib and use it in my code?
Once you’ll be able to run your own kernel, the easiest way might be to add a sysfs node that you would just read from userland as a file and the read would provide the string. The node is just like a file, you could access it from shell with cat.
You may find many examples of adding a sysfs node in kernel from the web.
On read (by a user application), the kernel would call kernel function tegra_chip_uid(), and convert result from kernel space to userland into read buffer.
[EDIT: It is also convenient in recent L4T versions to use sysfs.]