【FAQ】全志R329 多台设备的adb device id相同,无法指定设备,如何指定设备的adb device id?
-
问题背景
系统平台:R329 + Tina
问题描述
多块R329开发板连接电脑后的adb device id相同,均为一串0,同时连接时无法通过adb -s [device id] shell指定设备连接,需要给每个设备指定不同的device id。
问题分析
一串0的长度与chip id的长度相似,猜测默认是将chip id 作为device id,但是这几块开发板没有烧码导致device id相同;
cat /sys/class/sunxi_info/sys_info查看sunxi_serial确实是一串0。
解决方法
Tina_Linux_USB_开发指南.pdf中有配置USB序列号的介绍,其中是在uboot将chip id作为androidboot.serialno,由adbd脚本读取该值,写入节点/sys/kernel/config/usb_gadget/g1/strings/0x409/serialnumber
读取serialnumber的代码如下:
get_serialnumber() { str=`cat /proc/cmdline |tr ' ' '\n' | grep 'androidboot.serialno' | awk -F "=" '{print $2}'` [ -z $str ] || SERIALNUMBER=$str }
这里我直接修改脚本而不去修改dts:
修改/etc/rc.d/K99adbd中的get_serialnumber函数为:
get_serialnumber(){ SERIALNUMBER="12345678" }
其中的12345678即为指定的device id。
也可以读取将指定文件内容作为serialnumber,文件不存在时随机生成并保存为文件:
ADB_SERIAL_CONF="/etc/adb_serial.conf" get_serialnumber() { if [ ! -f $ADB_SERIAL_CONF ];then rand_var=$(head -200 /dev/urandom | cksum | cut -f1 -d " ") if [ -n "$rand_var" ];then SERIALNUMBER=$(printf %010d $rand_var) echo $SERIALNUMBER > $ADB_SERIAL_CONF fi else SERIALNUMBER=$(cat $ADB_SERIAL_CONF) fi }
-
-
-
-
-
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号