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。