Dear all,
This series of patches introduces WebSocket to USB/IP.
0. Version info
V2)
# Formatted patches from linux-next.
# Fixed change log word wrapping.
# Removed SSL patches.
# Fixed a bug that vendor and product names are not shown by usbws list
-l because usbip_names_init() was not called in libusbip.la.
1. Why WebSocket?
It allows to use USB/IP in internet. WebSocket is widely used to
encapsulate packets in HTTP and to carry them through firewall using
HTTP port numbers.
Assumed use case is a system that service in internet serves
distributes devices in home or office networks. Service may be called
as cloud and devices as ubiquitous.
Home/SOHO/Intranet Internet
+--------+ +--------+
+------+ +------+ |Router, | |Internet|
+|device|---|Linux |-----|proxy, |------------|service |
|+------+ +------+ |firewall| |on Linux|
+------+ controller +--------+ +--------+
ex)
Device Service
sensors ................................... environment analysis
cameras ................................... monitoring, recording
ID/biometric readers ...................... authentication
2. Features included
It also includes some independent features effective in themselves.
1) Exporting devices
Export request and response PDU had been defined in a header but not
been used.
Now it works!
Also, it supports senarios, for example, connect ubiquetous devices to
a Linux based cloud service.
In this senario, it's needed to establish connection from a device
inside of firewall to a service outside. Exporting is suit for the
senario.
2) User space transmission
USB/IP transfer URBs in kernel space. It's better for performance but
difficult to introduce application protocols.
Like fuse for file systems, it allows to transfer URBs in user space.
When usbip_ux.ko is loaded, it replaces kernel_sendmsg() and
kernel_recvmsg() with user spcace interface. When USB/IP utilities find
usbip_ux.ko, they start threads to read/write PDUs from/to usbip_ux.ko
and send/recv them.
3) Replaceable protocols
Both transmission(send/receive) and connection establishment are
replaceable.
4) a WebSocket implementation
It's made with Poco C++. DNS and proxy are supported.
I published scripts I used while developed the patches.
http://linux-usbip-additions.blogspot.jp/2015/03/scripts-to-patch-and-ma
ke-locally.html
http://linux-usbip-additions.blogspot.jp/2015/03/test-scripts.html
Thank you,
Nobuo Iwata <[email protected]>
//
*** BLURB HERE ***
Nobuo Iwata (11):
usbip: exporting devices
usbip: readme and manuals about exporting devices
usbip: safe completion against usb_kill_urb()
usbip: kernel module for userspace URBs transmission
usbip: tools for userspace URBs transmission
usbip: readme about user space URBs transmission
usbip: letting send and receive replaceable
usbip: letting connection establishment replaceable
usbip: deriving functions as libraries
usbip: added const qualifier to arguments of some functions
usbip: USB over WebSocket
drivers/usb/usbip/Kconfig | 10 +
drivers/usb/usbip/Makefile | 3 +
drivers/usb/usbip/stub_dev.c | 16 +-
drivers/usb/usbip/stub_rx.c | 3 +-
drivers/usb/usbip/stub_tx.c | 9 +-
drivers/usb/usbip/usbip_common.c | 79 ++-
drivers/usb/usbip/usbip_common.h | 29 +-
drivers/usb/usbip/usbip_ux.c | 602 ++++++++++++++++++
drivers/usb/usbip/usbip_ux.h | 82 +++
drivers/usb/usbip/vhci_hcd.c | 9 +-
drivers/usb/usbip/vhci_rx.c | 3 +-
drivers/usb/usbip/vhci_sysfs.c | 40 +-
drivers/usb/usbip/vhci_tx.c | 6 +-
include/uapi/linux/usbip_ux.h | 39 ++
tools/usb/usbip/Makefile.am | 2 +-
tools/usb/usbip/README | 92 ++-
tools/usb/usbip/doc/usbip.8 | 74 ++-
tools/usb/usbip/doc/usbipa.8 | 77 +++
tools/usb/usbip/doc/usbipd.8 | 29 +-
tools/usb/usbip/libsrc/Makefile.am | 11 +-
tools/usb/usbip/libsrc/list.h | 24 +-
tools/usb/usbip/libsrc/usbip_common.c | 38 +-
tools/usb/usbip/libsrc/usbip_common.h | 27 +-
tools/usb/usbip/libsrc/usbip_host_driver.c | 24 +-
tools/usb/usbip/libsrc/usbip_host_driver.h | 1 +
tools/usb/usbip/libsrc/usbip_ux.c | 256 ++++++++
tools/usb/usbip/libsrc/usbip_ux.h | 30 +
tools/usb/usbip/libsrc/vhci_driver.c | 141 +++-
tools/usb/usbip/libsrc/vhci_driver.h | 10 +-
tools/usb/usbip/src/Makefile.am | 28 +-
tools/usb/usbip/src/usbip.c | 18 +-
tools/usb/usbip/src/usbip.h | 20 +-
tools/usb/usbip/src/usbip_attach.c | 111 ++--
tools/usb/usbip/src/usbip_bind.c | 17 +-
tools/usb/usbip/src/usbip_connect.c | 236 +++++++
tools/usb/usbip/src/usbip_detach.c | 26 +-
tools/usb/usbip/src/usbip_disconnect.c | 212 ++++++
tools/usb/usbip/src/usbip_list.c | 99 +--
tools/usb/usbip/src/usbip_netconn.c | 133 ++++
tools/usb/usbip/src/usbip_network.c | 100 +--
tools/usb/usbip/src/usbip_network.h | 15 +-
tools/usb/usbip/src/usbip_port.c | 17 +-
tools/usb/usbip/src/usbip_unbind.c | 13 +-
tools/usb/usbip/src/usbipd.c | 234 +------
tools/usb/usbip/src/usbipd.h | 38 ++
tools/usb/usbip/src/usbipd_app.c | 256 ++++++++
tools/usb/usbip/src/usbipd_dev.c | 266 ++++++++
tools/usb/usbip/src/utils.c | 2 +-
tools/usb/usbip/src/utils.h | 2 +-
tools/usb/usbip/websocket/AUTHORS | 1 +
tools/usb/usbip/websocket/COPYING | 340 ++++++++++
tools/usb/usbip/websocket/INSTALL | 237 +++++++
tools/usb/usbip/websocket/Makefile.am | 3 +
tools/usb/usbip/websocket/README | 184 ++++++
tools/usb/usbip/websocket/autogen.sh | 9 +
tools/usb/usbip/websocket/cleanup.sh | 12 +
tools/usb/usbip/websocket/configure.ac | 61 ++
tools/usb/usbip/websocket/doc/usbws.8 | 192 ++++++
tools/usb/usbip/websocket/doc/usbwsa.8 | 101 +++
tools/usb/usbip/websocket/doc/usbwsd.8 | 109 ++++
tools/usb/usbip/websocket/poco/Makefile.am | 18 +
.../usb/usbip/websocket/poco/USBWSCommand.cpp | 410 ++++++++++++
tools/usb/usbip/websocket/poco/USBWSCommand.h | 99 +++
.../usb/usbip/websocket/poco/USBWSDaemon.cpp | 228 +++++++
tools/usb/usbip/websocket/poco/USBWSDaemon.h | 80 +++
.../websocket/poco/USBWSRequestHandler.cpp | 90 +++
.../websocket/poco/USBWSRequestHandler.h | 49 ++
.../poco/USBWSRequestHandlerFactory.cpp | 47 ++
.../poco/USBWSRequestHandlerFactory.h | 48 ++
tools/usb/usbip/websocket/poco/USBWSUtil.h | 52 ++
.../usbip/websocket/poco/USBWSWebSocket.cpp | 201 ++++++
.../usb/usbip/websocket/poco/USBWSWebSocket.h | 69 ++
72 files changed, 5673 insertions(+), 576 deletions(-)
create mode 100644 drivers/usb/usbip/usbip_ux.c
create mode 100644 drivers/usb/usbip/usbip_ux.h
create mode 100644 include/uapi/linux/usbip_ux.h
create mode 100644 tools/usb/usbip/doc/usbipa.8
create mode 100644 tools/usb/usbip/libsrc/usbip_ux.c
create mode 100644 tools/usb/usbip/libsrc/usbip_ux.h
create mode 100644 tools/usb/usbip/src/usbip_connect.c
create mode 100644 tools/usb/usbip/src/usbip_disconnect.c
create mode 100644 tools/usb/usbip/src/usbip_netconn.c
create mode 100644 tools/usb/usbip/src/usbipd.h
create mode 100644 tools/usb/usbip/src/usbipd_app.c
create mode 100644 tools/usb/usbip/src/usbipd_dev.c
create mode 100644 tools/usb/usbip/websocket/AUTHORS
create mode 100644 tools/usb/usbip/websocket/COPYING
create mode 100644 tools/usb/usbip/websocket/INSTALL
create mode 100644 tools/usb/usbip/websocket/Makefile.am
create mode 100644 tools/usb/usbip/websocket/README
create mode 100755 tools/usb/usbip/websocket/autogen.sh
create mode 100755 tools/usb/usbip/websocket/cleanup.sh
create mode 100644 tools/usb/usbip/websocket/configure.ac
create mode 100644 tools/usb/usbip/websocket/doc/usbws.8
create mode 100644 tools/usb/usbip/websocket/doc/usbwsa.8
create mode 100644 tools/usb/usbip/websocket/doc/usbwsd.8
create mode 100644 tools/usb/usbip/websocket/poco/Makefile.am
create mode 100644 tools/usb/usbip/websocket/poco/USBWSCommand.cpp
create mode 100644 tools/usb/usbip/websocket/poco/USBWSCommand.h
create mode 100644 tools/usb/usbip/websocket/poco/USBWSDaemon.cpp
create mode 100644 tools/usb/usbip/websocket/poco/USBWSDaemon.h
create mode 100644
tools/usb/usbip/websocket/poco/USBWSRequestHandler.cpp
create mode 100644 tools/usb/usbip/websocket/poco/USBWSRequestHandler.h
create mode 100644
tools/usb/usbip/websocket/poco/USBWSRequestHandlerFactory.cpp
create mode 100644
tools/usb/usbip/websocket/poco/USBWSRequestHandlerFactory.h
create mode 100644 tools/usb/usbip/websocket/poco/USBWSUtil.h
create mode 100644 tools/usb/usbip/websocket/poco/USBWSWebSocket.cpp
create mode 100644 tools/usb/usbip/websocket/poco/USBWSWebSocket.h
--
2.1.0
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html