virtualbox连接usb设备

环境:Ubuntu 7.10 Gutsy, VirtualBox 1.5.6

网上虽然已经有很多介绍的文章了,但我还是遇到了一点小问题,别人好像没有说到。

首先就是得使用virtualbox的闭源版本,也就是非ose版本,如果你细心上[virtualbox的开源、闭源版本区别页面](http://www.virtualbox.org/wiki/Editions)去看看的话,可以清楚的看到ose版本是没有包含usb设备支持的,怪不得我的vb窗口右下角没有usb图标呢。

其次就是不用加什么usbfs组,只要在/etc/fstab中添加一句:

none /proc/bus/usb usbfs devgid=1002,devmode=664 0 0

其中1002用你机器上真实的vboxusers组的id替换,然后sudo mount -a就可以正常使用了。

参考

  • [Host: Ubuntu 7.10 64-bit | Guest: WinXP 32-bit | USB Error?](http://forums.virtualbox.org/viewtopic.php?t=4635&highlight=usb) – 这里说了三种方法,前两种都太复杂了。
  • [usb not working in Innotek VB on ubuntu710](http://ubuntuforums.org/showthread.php?t=598390&highlight=virtualbox+usb) – 这里说的很明确,fstab中添加一行就搞定了。
  • [ubuntu 与 bluetooth蓝牙手机相互绑定,传送文件,全图形界面下操作](http://forum.ubuntu.org.cn/viewtopic.php?t=61426&highlight=) – 蓝牙,我没用,在Nokia 6120c上设定数据传输模式,连接后ubuntu就自动当Usb存储设备识别出来了。

顺便再多说一句,virtualbox支持网络要想设置成桥接(结果是client就像局域网中正常的另外一台电脑一样)好像是麻烦了些,其实我觉得nat模式挺好挺够用的,虽然通讯上要麻烦一些,但client中的winxp就像是运行在一个“纯净”的网络环境当中一样,非常安全,杀毒软件什么的一概不用装,很好。

再补充

又遇波折,usb设备已经能够正常识别了,Nokia 6120c插上也能够被winxp识别出来,但pc套件就是找不到设备,到virtualbox的论坛上查了一下,发现很多人使用1.5以后的版本都是这样,降级(卸载再安装)到[1.4](http://www.virtualbox.org/download/1.4.0/virtualbox_1.4.0-21864_Ubuntu_feisty_i386.deb)就没事了。

降级之后默认1.5的虚拟机无法启动,根据错误提示删掉几行1.5添加的专用属性就可以了,比较简单:

Could not load the settings file '/home/fwolf/.VirtualBox/Machines/WinXP/WinXP.xml' (VERR_OPEN_FAILED).
FATAL ERROR: Unknown element 'Uart'
Location: '/home/fwolf/.VirtualBox/Machines/WinXP/WinXP.xml', line 45, column 15.

另外,还需要usb 2.0 ?? 找了一台usb 2.0接口的电脑试了还不行,没有办法了,关掉virtualbox,用vmware一连接就ok了,郁闷至极。

用obex连接Nokia 6120c

首先,把电话的控制权限赋予当前用户,通过dialout用户组,编辑/etc/udev/rules.d/40-permissions.rules文件,在最后添加上:

# NOKIA 6120
BUS=="usb", SYSFS{idVendor}=="0421", SYSFS{idProduct}=="002f", GROUP="dialout"

其中的0421和002f是手机设备的供应商和产品号,可以用lsusb看:

$ lsusb
Bus 005 Device 014: ID 0421:002f Nokia Mobile Phones 

然后将当前用户加入dialout组:

$ sudo adduser fwolf dialout

最后重启udev:

$ sudo /etc/init.d/udev restart

第二步,安装obex相关程序:

$ sudo aptitude install openobex-apps obexftp obextool

根据环境不同,可能还会要求装一些其他的包,比如bwidget, tablelist什么的。装好以后,启动obextool:

$ obextool --obexcmd "obexftp -t /dev/ttyACM0 -u 1"

等待一会儿,会提示错误:

It seems, that your device does not support the memory status feature.
Memory status will be disabled

/etc/obextools/obextool.cfg中找到下列内容:

###
### Enable memory status display - only works with Siemens :-(
###
set ObexConfig(config,memstatus) 1
# set ObexConfig(config,memstatus) 0

###
### Enable file move command - only works with Siemens :-(
###
set ObexConfig(config,filemove) 1
# set ObexConfig(config,filemove) 0

看到没有,这两项只对西门子有效,所以要把设置值改为0。上传文件的时候还有错误提示:

FIle '/path/to/upload/file' could not be uploaded to '/'!
Please check your file permissions.

还是在/etc/obextools/obextool.cfg中,有如下内容:

### Nokia 6670 requires the trailing slash on all directory names
# set ObexConfig(config,dir_slash) 1
set ObexConfig(config,dir_slash) 0

如果是Nokia手机,还是设置为0,但是。。。但是始终无法连接上手机,很不情愿的放弃了。参考:

  • [Nokia PC Suite for Linux with ObexTool on Ubuntu Gutsy](http://www.smokinglinux.com/tutorials/nokia-pc-suite-for-linux-with-obextool-on-ubuntu-gutsy)

闲话

又搜寻了很久,目前没有软件能在Linux下实现Nokia pc suite的全部功能,大部分都只解决了文件传送问题,二我所想要的却是电话本、短信、日历同步功能。

恼啊,Nokia的pc suite巨慢还不说,连Linux版也没有。又从网上找了很多参考以后,我决定搞一种自助、土点儿的通讯录同步方法(这个是最重要的,短信、日历没准儿也可以照葫芦画瓢一样搞定):

  1. 备份通讯录:打开名片夹->选项->全部标记->复制->至存储卡。
  2. 准备数据:用php写一个小程序,同步abook数据和存储卡中的vcf文件,usb数据通讯模式还是很好用的,同步的处理得智能一些,让手机和abook里的更新都有效。
  3. 恢复通讯录:打开名片夹->选项->复制->从存储卡。

短信输出使用[MsgExport_v1.00汉化版](http://bbs.dospy.com/viewthread.php?tid=1151802&highlight=),感觉还不错,剩下的就是需要正则表达式发威了。

Leave a Reply

Your email address will not be published. Required fields are marked *