如何检查Linux中是否启用了USB3.0 UASP(USB附加SCSI协议)模式?

 USB 3.0 在数据量较多且零碎传输时,效能的表现会较差,主要原因是在于传输技术所造成的状况。

USB 采用半双工传输模式与 BOT (Bluk Only Transfer) 传输协议,半双工传输模式就像是再讲对讲机一样,一方说完另一方才能继续对话,也就是说数据的传输方向仅有单向传输功能。

BOT 传输协议则是一种单线程的传输架构,这个架构就像马路上只能行使一台车子,不管路有多宽,都必须等待这量车子行驶过后下一部车子才能继续通行。

USB 的加速方式
提升为全双工模式

当 USB 升级到 USB 3.0 时,将原来的半双工传输模式,改为全双工模式,并且提升十倍的带宽,不过其架构还是在 BOT 之下。

BOT 加速模式

 这个方式虽然还是在 BOT 的架构之下,但是是将原来在路上行使的轿车,换一台更大一点的公交车,将一次传送的数据量加大,就可以减少来回的次数,来达到加速的目的。

UASP 加速模式

BOT加速模式虽然可以有效的增加传输速度,不过还是没有在根本上解决无法多任务处理的问题,所以 USB-IF (USB Implementers Forum) 一个为开发 USB 规格的企业共同成立的非营利性机构,为了让传输效能更好,制定了UASP(USB Attached SCSI Protocol)传输架构,让 USB3.0 也能像 SCSI 传输协议的方式传输数据,不需等待上一笔数据传输完成后再进行传输数据的动作,并改善了在 CPU 的使用率、数据延迟及等待时间。

要达到 UASP 加速功能,请先确认您计算机端是否同样有支持 UASP 功能。
目前支持 UASP 的系统有 WIN 8 、Mac OS 8 & 9 ,除了以上系统,您也可以询问您购买的计算机公司,是否有提供相关的驱动程序。

继续阅读如何检查Linux中是否启用了USB3.0 UASP(USB附加SCSI协议)模式?

usbip--ubuntu 16.04(USB局域网共享)

usbip的目的是为了开发一个在局域网内共享的USB设备,也就是说你可以直接访问局域网内其他计算机的USB设备。

下面我们看一下如何在ubuntu 16.04跟树莓派(raspberry pi)以及树莓派之间实现USB设备在局域网的共享。

树莓派端配置为服务端,我们把USB设备接入到树莓派上,服务端的树莓派上执行如下操作:

# 升级内核以及附属驱动模块
$ sudo rpi-update

$ sudo apt-get install usbip

# 加载驱动模块
$ sudo modprobe usbip-core

$ sudo modprobe vhci-hcd

$ sudo modprobe usbip_host

# 打开监听服务接收来自其他机器的请求
$ sudo usbipd -D

# 列出本机的USB设备列表
$ sudo usbip list -l

# 通知底层驱动,绑定设备,远端可看到我们绑定过的设备,我们的设备ID为1-1.3
$ sudo usbip --debug bind -b 1-1.3

客户端的树莓派或者ubuntu 16.04,执行如下操作查看以及操作服务端的设备。

树莓派

$ sudo apt-get install usbip

# 'sudo usbip version' usbip (usbip-utils 2.0) raspberry pi
# 服务器IP地址 192.168.1.201 ,列出服务端的设备列表
$ sudo usbip list -r 192.168.1.201 --debug

# 服务器IP地址 192.168.1.201 ,设备ID 1-1.3
$ sudo usbip attach -r 192.168.1.201 -b 1-1.3

ubuntu 16.04

$ sudo apt-get install linux-tools-`uname -r` 

# 'sudo /usr/lib/linux-tools/`uname -r`/usbip version' usbip (usbip-utils 2.0) raspberry pi
# 服务器IP地址 192.168.1.201 ,列出服务端的设备列表
$ sudo /usr/lib/linux-tools/`uname -r`/usbip list -r 192.168.1.201 --debug

# 服务器IP地址 192.168.1.201 ,设备ID 1-1.3
$ sudo /usr/lib/linux-tools/`uname -r`/usbip attach -r 192.168.1.201 -b 1-1.3

出错信息

如果出错信息如下:

pi@raspberrypi:~ $ sudo usbip port
usbip: error: failed to open /usr/share/hwdata//usb.ids
libusbip: error: udev_device_new_from_subsystem_sysname failed
usbip: error: open vhci_driver
usbip: error: list imported devices

出错的原因为内核驱动没有正确加载,解决方法为:

# 加载驱动模块 
$ sudo modprobe usbip-core 

$ sudo modprobe vhci-hcd

如果出错信息如下(比如ubuntu 16.04):

$ sudo usbip --list 192.168.1.201 --debug
usbip dbg: usbip_network.c: 221 (tcp_connect ) trying 192.168.1.201 port 3240

usbip dbg: usbip_network.c: 241 (tcp_connect ) connected to 192.168.1.201:3240
- 192.168.1.201
usbip err: usbip_network.c: 119 (usbip_recv_op_common) recv op_common, -1
usbip err: vhci_attach.c: 202 (query_exported_devices) recv op_common
usbip err: vhci_attach.c: 417 (show_exported_devices) query

此时查看软件版本,可以看到如下:

$ sudo usbip -v
usbip 0.1.7 ($Id: vhci_attach.c 42 2007-09-07 12:07:51Z hirofuchi $)

这个原因是由于软件安装的是很早的一个版本,无法跟现在最新的版本进行通信。

这个驱动很早就以及整合进入了Linux内核,控制软件也是内核提供。使用如下命令安装跟当前内核匹配的版本:

$ sudo apt-get install linux-tools-`uname -r` 

$ sudo /usr/lib/linux-tools/`uname -r`/usbip list -r 192.168.1.201 --debug

如果出错信息如下:

$ sudo usbip --debug bind -b 1-1.3
usbip: debug: usbip.c:141:[run_command] running command: `bind'
usbip: debug: sysfs_utils.c:18:[write_sysfs_attribute] error opening attribute /sys/bus/usb/drivers/usbip-host/match_busid
usbip: debug: utils.c:50:[modify_match_busid] failed to write match_busid: No such file or directory
usbip: error: unable to bind device on 1-1.3

原因为usbip_host.ko这个内核驱动没有加载,使用如下命令加载驱动:

$ sudo modprobe usbip_host

参考链接


ubuntu 16.04下安装RTL8192EU(天猫魔盘)

最近需要使用无线网卡,恰好手头有一枚RTL8192EU(天猫魔盘)的无线网卡,使用如下方式安装驱动:

$ sudo apt-get install git linux-headers-generic build-essential dkms

$ sudo apt-get install libelf-dev

$ git clone https://github.com/wangqiang1588/rtl8192eu-linux-driver.git

$ cd rtl8192eu-linux-driver

$ make

$ sudo make install

$ sudo dkms remove rtl8192eu/1.0 --all

$ sudo dkms add .

$ sudo dkms install rtl8192eu/1.0

$ sudo reboot

如果下载代码存在困难,可以从本站下载一份代码拷贝 点击这里下载rtl8192eu-linux-driver

参考链接


Ubuntu 16.04.3系统VirtualBox-5.0.40使用USB设备

Ubuntu版本:16.04.3

Oracle VirtualBox版本:5.0.40

问题:

USB 2.0 is currently enabled for this virtual machine. However, this requires the Oracle VM VirtualBox Extension Pack to be installed.Please install the Extension Pack from the VirtualBox download site. After this you will be able to re- enable USB 2.0. It will be disabled in the meantime unless you cancel the current settings changes.

这是在设置启用USB时提示的错误。关于如何启用UbuntuOracle VM VirtualBoxUSB功能 (Oracle VM VirtualBox设置USB启用USB控制器启用USB 2.0 ECHI控制器)--如果你没有安 装Oracle VM VirtualBox Extension Pack的话,那么这时就会弹出一个提示框,提示上面给出的那段英文提示。

继续阅读Ubuntu 16.04.3系统VirtualBox-5.0.40使用USB设备