文章原始出处:(感谢原创作者)
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)
- 修改新增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
......
/system/vold/Fat.h
添加新增format函数的定义
/system/vold/Volume.cpp
在调用Fat::format函数的地方,增加第三个参数IsEmmcStorage()
Fat::format(devicePath, 0, IsEmmcStorage())
注意:
VolumeManger.cpp里面调用Fat::format() 的地方不需要修改
下载image时,需要进行格式化下载
要修改外置T卡的盘符,需要在手机上格式化SD卡,盘符设置才会起效(请注意)
需要打开大容量存储(即连接电脑之后,打开UMS功能),修改的盘符才会显示出来。
支持大小写切换: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号码唯一。