Android USB名称修改系列(转载)

原文出处:

         CSDNhttp://www.csdn.net
         雨季o莫忧离:http://blog.csdn.net/luckkof

正文:


为什么参考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//autoconfig/kconfig/platform
            
打开CONFIG_MTK_USB_UNIQUE_SERIAL可设置每只手机的SN号码唯一。




USB PTP功能在pc端 “我的电脑” 盘符卷标字符串客制化

[SOLUTION]
以下两种方式采用其中一种即可:
a) 修改/alps/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”);
之后rebuild project
b) 修改ro.product.model的值
在alps/build/tools/buildinfo.sh 中查找ro.product.model对应的宏的名称,此处为PRODUCT_MODEL;
在alps/build/target/product/.mk文件中添加或修改该宏的定义,如:
PRODUCT_MODEL := mylabelname
注意不能有空格。






MTP功能在PC端盘符名称显示如何修改?
以下两种方式采用其中一种即可:
a) 修改/Alps/frameworks/base/media/Java/Android/mtp/MtpDatabase.java
private int getDeviceProperty(int property, long[] outIntValue, char[] outStringValue) {
String deviceName;
deviceName = SystemProperties.get(“ro.product.name”);
deviceName = “yournamehere”;
int lengthDeviceName = deviceName.length();
b) 修改ro.product.name的值
在alps/build/tools/buildinfo.sh 中查找ro.product.name对应的宏的名称,此处为PRODUCT_NAME;
在alps/build/target/product/.mk文件中添加或修改该宏的定义,如:
PRODUCT_NAME := mylabelname
注意不能有空格。







[DESCRIPTION]:
要修改MTP在PC端显示的制造商信息:

[SOLUTION]:
修改方法:
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






[Description]
插入USB线连接PC,电脑右下方会弹出提示找到新硬件"MT65xx Android Phone"。如何修改"MT65xx Android Phone"的显示?
[Keyword]
"MT65xx Android Phone"
[Solution]
修改alps/kernel/drivers/usb/gadget/Android.c中,PRODUCT_STRING宏的内容为对应名称:
#define PRODUCT_STRING "MT65xx Android Phone"





修改UMS在设备管理器中DiskDrive下的名称

修改F_mass_storage.c中fsg_common_init()的此处代码:
snprintf(common->inquiry_string, sizeof common->inquiry_string,
"%-8s%-16s%04x", cfg->vendor_name ?: "Linux",
/* Assume product name dependent on the first LUN */
cfg->product_name ?: (common->luns->cdrom
? "File-Stor Gadget"
: "File-CD Gadget"), i);




preloader阶段的vcom口在windows右下角的提示框的字符串显示

修改mediatek/custom//preloader/inc/cust_usb.h

#define USBD_PRODUCT_NAME "your name here"

然后在pc端,在设备管理器中卸载preloader的vcom口驱动。




[DESCRIPTION]
修改MTP在windows弹出的自动播放提示框标题
[SOLUTION]
参考
【USB名称修改系列】第2项-如何修改PTP在PC"我的电脑"中显示的label名称
修改ro.product.device
即本文第二项



修改mtp设备在设备管理器中的”Portable Devices”下的名称
请参考
【USB名称修改系列】第2项-如何修改PTP在PC"我的电脑"中显示的label名称




[DESCRIPTION]
修改PTP设备在PC上弹出的对话框的标题
[SOLUTION]
请参考【USB名称修改系列】第2项-如何修改PTP在PC"我的电脑"中显示的label名称




[Description]

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

[Keyword]

USB 磁盘名称 存储设备名称 存储模式 内置SD

[Solution]

修改步骤

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

1. /system/vold/Fat.cpp 

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

     Fat::format(const char *fsPath, unsigned int numSectors, bool isInternalSd)

     修改新增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

......

2. /system/vold/Fat.h

    添加新增format函数的定义

3. /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]

PS:

BLOCK_COUNT的大小可以通过如下获得
# cat/proc/emmc
# cat/proc/partitions






修改pc端設備管理器中"Android Phone"目錄下的設備名
[SOLUTION]
在pc端的adb驱动的android_winusb.inf文件中修改:CompositeAdbInterface = "Android Composite ADB Interface" 的字符串,即對應到設備名。





USB设备在win7等平台上,在控制面板中看到的名称,怎么修改
可以在 kernel\drivers\usb\gadget\Android.c 中修改如下红色字段为所需显示的字段
#define PRODUCT_STRING "MT65xx Android Phone"






你可能感兴趣的:(android)