Skip to main content

Vendor SN 读写

这里说明 Neardi Pi 3 如何在 Linux 系统下读取和写入 Rockchip Vendor Storage 里的 SN 号。

Rockchip Windows 工具 RKDevInfoWriteTool 写入的 SN 就保存在 Vendor Storage 里。RK3576 Linux 系统下,也可以通过 rktoolkit 在板端读写同一块数据。

警告

SN 号通常用于量产、售后和设备追踪。客户设备上的 SN 不建议随意覆盖。

下载 Demo​

先下载 rktoolkit demo:

git clone http://git.neardi.com/app/linux/rockchip/rktoolkit -b neardi-rk3576-linux-6.1-stan-rkr6
cd rktoolkit

SN 读写 demo 文件在:

sample/read_vendor_sn.c
sample/write_vendor_sn.c

Vendor Storage 相关接口在:

vendor_storage.h
vendor_storage.c

基本原理​

SN 在 Vendor Storage 中使用的 vendor item ID 是 1:

#define VENDOR_SN_ID 1

程序访问的设备节点是:

/dev/vendor_storage

读写时调用:

rkvendor_read(VENDOR_SN_ID, ...)
rkvendor_write(VENDOR_SN_ID, ...)

普通用户通常没有 /dev/vendor_storage 的访问权限,所以下面的命令默认使用 sudo。

板端编译​

如果系统里没有编译工具,先安装:

sudo apt update
sudo apt install -y gcc make

编译读取工具:

gcc -DBUILD_LIB_VENDOR_STORAGE -I. \
sample/read_vendor_sn.c vendor_storage.c \
-o read_vendor_sn

编译写入工具:

gcc -DBUILD_LIB_VENDOR_STORAGE -I. \
sample/write_vendor_sn.c vendor_storage.c \
-o write_vendor_sn

确认程序有执行权限:

chmod 755 read_vendor_sn write_vendor_sn

不要对可执行程序使用 chmod 666。666 会去掉执行权限,后面运行时会报 Permission denied。

读取 SN​

执行:

sudo ./read_vendor_sn

示例输出:

nearditest20260604001

如果不加 sudo,可能会看到:

vendor_storage open fail
failed to read SN from /dev/vendor_storage

写入 SN​

写入新的 SN:

sudo ./write_vendor_sn nearditest20260604002

示例输出:

write SN ok: nearditest20260604002

再读一次确认:

sudo ./read_vendor_sn

示例输出:

nearditest20260604002

PC 端通过 ADB 读写​

PC 通过 Type-C 连接开发板 OTG/Device 口后,先确认设备连接正常:

adb devices

PC 端读取 SN:

adb shell "sudo /home/neardi/rktoolkit/read_vendor_sn"

PC 端写入 SN:

adb shell "sudo /home/neardi/rktoolkit/write_vendor_sn nearditest20260604003"

再次读取确认:

adb shell "sudo /home/neardi/rktoolkit/read_vendor_sn"

示例结果:

nearditest20260604002
write SN ok: nearditest20260604003
nearditest20260604003

权限说明​

如果只是临时测试,可以修改设备节点权限:

sudo chmod 666 /dev/vendor_storage

之后可以不加 sudo 执行:

./read_vendor_sn
./write_vendor_sn nearditest20260604004

这个权限修改重启后通常会失效。正式产品中建议通过系统服务、udev 规则,或 root 权限程序来访问 Vendor Storage。