USB名称

文章原始出处:(感谢原创作者)
CSDN:http://www.csdn.net
雨季o莫忧离:http://blog.csdn.net/luckkof

USB名称修改系列

一、如何修改MTP/PTP在PC”我的电脑”中显示的label名称

以下两种方式采用其中一种即可:

a. 修改 /framework/av/media/mtp/MtpServer.cpp 中:

MtpResponseCode MtpServer::doGetDeviceInfo() {
   property_get("ro.product.model", prop_value, "MTP Device");
   //此处添加修改prop_value数组的值的code,值即为要客制化的字符串
   string.set(prop_value);//或者直接修改此句code为 string.set(“label name”)

b. 修改ro.product.model的值 在/build/tools/buildinfo.sh 中查找ro.product.model对应的宏的名称,此处为PRODUCT_MODEL
alps/build/target/product/<project>.mk文件中添加或修改该宏的定义,如:
PRODUCT_MODEL := mylabelname 注意不能有空格

二、如何修改MTP/PTP在PC设备管理器中制造商的名称

修改方法:

1.修改build/tools/buildinfo.sh中的 ro.product.manufacturer
2.修改frameworks\av\media\mtp\MtpServer.cpp

doGetDeviceInfo() {
    property_get("ro.product.manufacturer", prop_value, "unknown manufacturer"); 
    string.set(prop_value); 
    //修改此处的prop_value
}

三、如何修改手机在PC桌面右下角弹出的“xx Android Phone”提示框

插入USB线连接PC,电脑右下方会弹出提示找到新硬件”xx Android Phone”。
修改方法:

修改/kernel/drivers/usb/gadget/Android.c中,PRODUCT_STRING宏的内容为对应

#define PRODUCT_STRING "xx Android Phone"

四、如何修改MTP在windows弹出的自动播放提示框标题

修改方法:

修改ro.product.device的值 在/build/tools/buildinfo.sh 中查找ro.product.device对应的宏的名称,此处为PRODUCT_DEVICE
/build/target/product/<project>.mk文件中添加或修改该宏的定义,如:
PRODUCT_DEVICE := mydevicename 注意不能有空格

五、如何修改USB存储在PC”我的电脑”中显示的label名称

USB 磁盘名称 存储设备名称 存储模式 内置SD
修改步骤:

主要是在format时去指定 “–L” 的参数值,并给出label name。具体修改涉及三个文件:

/system/vold/Fat.cpp 

添加一个新的format函数,第三个参数为bool isInternalSd:

Fat::format(const char *fsPath, unsigned int numSectors, bool isInternalSd)
  1. 修改新增format函数的实现:
#ifdef MTK_FORMAT_NOT_PARAM_CLUSTER
    args[1] = "-O";
    args[2] = "android";
    close(fd);
   if(numSectors)
 {
    char tmp[32];
    snprintf(tmp,sizeof(tmp),"%u",numSectors);
    const char *size = tmp;
    args[3] = "-s";
    args[4] = size;
    args[5] = fsPath;
    args[6]= NULL;
    rc = logwrap(7,args,1); 
 }
 else
 {
    if(isInternalSd)
    {
        args[3] = "-L";
        args[4] = "YOUR LABEL NAME";       // 修改内置T卡的label,注意长度不能超过11个字符
        args[5] = fsPath;
        args[6]= NULL; 

       SLOGD("[LabelTest1]%s %s %s %s %s %s", args[0], args[1], args[2], args[3], args[4], args[5]);
        rc = logwrap(7,args,1); 
     }
    else
    {

        args[3] = "-L";
        args[4] = "YOUR LABEL NAME";       // 修改外置T卡的label,注意长度不能超过11个字符
        args[5] = fsPath;
        args[6] = NULL;
        SLOGD("[LabelTest2]%s %s %s %s %s %s", args[0], args[1], args[2], args[3], args[4], args[5]);
        rc = logwrap(7, args, 1);
    }
 }

#else

......

 if(numSectors)
 {
    char tmp[32];
    snprintf(tmp,sizeof(tmp),"%u",numSectors);
    const char *size = tmp;
    args[7] = "-s";
    args[8] = size;
    args[9] = fsPath;
    args[10]= NULL;
    rc = logwrap(11,args,1); 
 }
 else
 {
    if(isInternalSd)
    {
        args[7] = "-L";
        args[8] = "YOUR LABEL NAME";       // 修改内置T卡的label,注意长度不能超过11个字符
        args[9] = fsPath;
        args[10]= NULL;

       SLOGD("[LabelTest3]%s %s %s %s %s %s %s %s", args[0], args[1], args[2], args[3], args[4], args[5], args[8], args[9]);
        rc = logwrap(11,args,1); 
     }
     else
     {

        args[7] = "-L";
        args[8] = "YOUR LABEL NAME";       // 修改外置T卡的label,注意长度不能超过11个字符
        args[9] = fsPath;
        args[10] = NULL;

         SLOGD("[LabelTest4]%s %s %s %s %s %s %s %s", args[0], args[1], args[2], args[3], args[4], args[5], args[8], args[9]);
        rc = logwrap(11,args,1); 
    }
 }
#endif

......
  1. /system/vold/Fat.h

    添加新增format函数的定义

  2. /system/vold/Volume.cpp

    在调用Fat::format函数的地方,增加第三个参数IsEmmcStorage()

    Fat::format(devicePath, 0, IsEmmcStorage())

注意:

  1. VolumeManger.cpp里面调用Fat::format() 的地方不需要修改

  2. 下载image时,需要进行格式化下载

  3. 要修改外置T卡的盘符,需要在手机上格式化SD卡,盘符设置才会起效(请注意)

  4. 需要打开大容量存储(即连接电脑之后,打开UMS功能),修改的盘符才会显示出来。

  5. 支持大小写切换:Modify the function mklabel () in file /system/core/toolbox/newfs_msdos.c.

static void mklabel(u_int8_t *dest, const char *src) {
    int c, i;
    for (i = 0; i < 11; i++) {
    //c = *src ? toupper(*src++) : ' ';
    c = *src ? (*src++) : ‘ ’;
    *dest++ = !i && c == '\xe5' ? 5 : c;
    }
}

另外需要注意的是:
若软件有内置的fat_sparse.img,那么用上面的修改方法不会成功,因为用软件fat_sparse.img的情况下,第一次开机并不会format内置t card。需要用以下方法修改:
在制作fat.img时,使用下面这个命令:

mkfs.vfat -n volume_name -v -C fat.img [block-count]

六、为什么参考FAQ修改名称后却无效

这是因为在windows系统中会记录以前插入过的手机的信息,否则每一次插入手机都需要重新安装驱动。

  • Step 1:清除注册表信息:

    设备管理器中查看设备的属性中vid pid信息,在windows注册表的以下路径 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB 找到包含设备vid pid的键,对每一个键项,右击修改权限,选择允许完全控制,确定。再右击删除该键项。

  • Step 2:修改手机端的Sn序列号:

方法1:手机连接pc,在adb shell中,切换目录到
    cd sys/class/android_usb/android0/
    echo 0123456789123456 > iSerial   
    修改一个与之前的手机不同的Sn号,之后重新插拔手机。
    注意:此种方法重启手机后,序列号会还原。
方法2:永久性修改使每一只手机SN号码唯一
    修改mediate/config/<chip>/autoconfig/kconfig/platform
    打开CONFIG_MTK_USB_UNIQUE_SERIAL可设置每只手机的SN号码唯一。

猜你喜欢

转载自blog.csdn.net/xiao_shiyi128/article/details/79678108
usb