Configuration and management of electronic devices, particularly “headless” devices that do not include any user interfaces for direct user input and/or display, can be challenging to the end users and as well as the manufacturers. Typically, such devices are configured by attaching the device to a host such as a personal computer, which retrieves a device driver by downloading from a website or reading from a storage location such as a CD-ROM. The device driver is then installed on the host to facilitate the communication between the device, the host, and/or a third party system such as a remote server. Such an installation process can be complex and error prone.
One way to simplify the configuration procedure is to certify the device driver with the operating system vendors such as Microsoft® or Apple®. A successfully certified device driver is incorporated into the operating system, so that automatic detection and installation of the device driver can be carried out. The certification process can be onerous for the manufacturer, and different versions of device drivers must be produced for different operating systems.
Various embodiments of the invention are disclosed in the following detailed description and the accompanying drawings.
The invention can be implemented in numerous ways, including as a process; an apparatus; a system; a composition of matter; a computer program product embodied on a computer readable storage medium; and/or a processor, such as a processor configured to execute instructions stored on and/or provided by a memory coupled to the processor. In this specification, these implementations, or any other form that the invention may take, may be referred to as techniques. In general, the order of the steps of disclosed processes may be altered within the scope of the invention. Unless stated otherwise, a component such as a processor or a memory described as being configured to perform a task may be implemented as a general component that is temporarily configured to perform the task at a given time or a specific component that is manufactured to perform the task. As used herein, the term ‘processor’ refers to one or more devices, circuits, and/or processing cores configured to process data, such as computer program instructions.
A detailed description of one or more embodiments of the invention is provided below along with accompanying figures that illustrate the principles of the invention. The invention is described in connection with such embodiments, but the invention is not limited to any embodiment. The scope of the invention is limited only by the claims and the invention encompasses numerous alternatives, modifications and equivalents. Numerous specific details are set forth in the following description in order to provide a thorough understanding of the invention. These details are provided for the purpose of example and the invention may be practiced according to the claims without some or all of these specific details. For the purpose of clarity, technical material that is known in the technical fields related to the invention has not been described in detail so that the invention is not unnecessarily obscured.
A technique for communicating socket protocol based data over a storage protocol based interface is described. In some embodiments, in a transmit mode of a device having a storage protocol (e.g., Universal Serial Bus (USB)) based interface, socket based protocol (e.g., Internet Protocol (IP)) data is encapsulated into storage protocol based data. In response to a storage protocol based read request that is received over a storage protocol based interface, the storage protocol based data is sent. The recipient processes (e.g., decapsulates) the storage protocol based data to recover the socket protocol based data. In a receive mode, a storage protocol based write request encapsulating socket protocol based data is received. The write request is processed (e.g., decapsulated) to obtain the socket protocol based data. An action in response to the socket data is optionally performed.
Device 100 includes various subsystems as described below. In particular, device 100 includes at least one microprocessor subsystem (also referred to as a processor or a central processing unit (CPU)) 102. For example, processor 102 can be implemented by a single-chip processor or by multiple processors. In some embodiments, processor 102 is a general purpose digital processor that controls the operation of the computer system 100. Using instructions retrieved from memory 110, the processor 102 controls the reception and manipulation of input data and generates output data.
Processor 102 is coupled bi-directionally with memory 110, which can include a first primary storage, typically a random access memory (RAM), and a second primary storage area, typically a read-only memory (ROM). As is well known in the art, primary storage can be used as a general storage area and as scratch-pad memory, and can also be used to store input data and processed data. Primary storage can also store programming instructions and data, in the form of data objects and text objects, in addition to other data and instructions for processes operating on processor 102. Also as is well known in the art, primary storage typically includes basic operating instructions, program code, data and objects used by the processor 102 to perform its functions (e.g., programmed instructions). For example, memory 110 can include any suitable computer-readable storage media, described below, depending on whether, for example, data access needs to be bi-directional or uni-directional. For example, processor 102 can also directly and very rapidly retrieve and store frequently needed data in a cache memory (not shown).
A mass storage 112 provides additional data storage capacity for device 100, and is coupled bi-directionally (read/write) to processor 102. Examples of mass storage include USB flash drive, memory card, etc. Mass storage 112 can store additional programming instructions (e.g., a setup program), data, and the like. It will be appreciated that the information retained within mass storage 112 and 120 can be incorporated, if needed, in standard fashion as part of memory 110 (e.g., RAM) as virtual memory. As will be discussed in greater detail below, the mass storage and its associated mass storage protocols are used to facilitate the communication of socket protocol based data to and from device 100.
In addition to providing processor 102 access to storage subsystems, bus 114 can also be used to provide access to other subsystems and devices. As shown, these can include a network interface 122, a mass storage interface 124, and an auxiliary device interface 120.
Network interface 116 allows device 100 to be coupled to another computer, computer network, or telecommunications network using a network connection as shown. For example, through the network interface 116, the processor 102 can receive information (e.g., data objects or program instructions) from another network or output information to another network in the course of performing method/process steps. Information, often represented as a sequence of instructions to be executed on a processor, can be received from and output to another network. An interface card or similar device and appropriate software implemented by (e.g., executed/performed on) processor 102 can be used to connect device 100 to an external network and transfer data according to standard protocols.
Mass storage interface 124 allows device 100 to be coupled to an external device such as a host computer, using a mass storage protocol based connection. Details of how the external device communicates with device 100 via the mass storage interface are described below.
An auxiliary device interface 120 can be used in conjunction with computer system 100. The auxiliary I/O device interface can include general and customized interfaces that allow the processor 102 to send and, more typically, receive data from other devices such as microphones, transducer card readers, cameras, etc.
For purposes of illustration, a network interface that includes a Wi-Fi interface, a mass storage interface that includes a USB interface, and an auxiliary device interface that includes a video camera interface are discussed extensively in the examples below. Other types of interfaces may be used in other embodiments. For example, the network interface may include an Ethernet interface, a cellular or satellite telecommunication interface, etc.; the mass storage interface may include a Bluetooth interface, a FireWire interface, a Small Computer System Interface (SCSI), a Serial Advanced Technology Attachment (SATA) interface, etc.; and the auxiliary device interface may include a microphone interface, a card reader interface, etc.
In some embodiments, device 100 requires configuration and management. For example, in embodiments where the networking interface is a Wi-Fi based wireless networking interface, an appropriate network needs to be selected, and a password, if required, is supplied. Since device 100 is headless, a user is unable to directly interact with the device. A typical solution would be to connect the device to a host (such as a laptop), and run a configuration program on the host. A device driver is typically required to establish a way for the host to communicate with the device. Given the complexity of developing and installing a device driver, an alternative solution based on a storage protocol has been developed.
Initially, device 200 is not connected to server 206 via any network interface connection because the network interface on device 200 requires configuration. As described in
In most existing operating systems such as Windows™ or Mac™ OS, a USB mass storage driver is built-in and does not require additional device driver installation. The following configuration process takes advantage of this feature, letting the operating system on the host automatically detect the presence of any mass storage device.
Process 220 may be performed on the host. At the beginning of the process, at 222, the host is connected to the device via the mass storage interface, for example via a USB cable or a wireless USB connection between the device and the host. At 224, the operating system on the host automatically detects the mass storage drive that is a part of device 200, and prompts the user to open the file folder corresponding to the mass storage drive. In this example, a setup program is pre-stored on the mass storage drive. The user opens the file folder and invokes the setup program. At 226, the setup program is executed on the host. For example, user and device information may be collected. At 228, the host connects to server 206. The connection can be made by the setup program directly, or by invoking another application on the host (e.g., a web browser). In this case, the connection is a socket based connection.
Once a successful connection is established, at 230, the host acts as a proxy to facilitate the data exchange between the device and the server. In some embodiments, the server sends data intended for the device via the socket connection to the host. The data, which is socket protocol based, is translated by the host into storage protocol based data. Specifically, the socket protocol based data is divided into fixed-sized blocks, and appropriate header such as the overall length of data is added. The translated data is then sent to the device via the mass storage connection to be processed. The device sends data intended for the server via the mass storage connection to the host. This data, which is storage protocol based, is translated by the host into socket protocol based data. The translated data is sent to the server to be processed.
As used herein, a socket protocol refers to a communication protocol that allows read and write operations of data of any length. The protocol does not support the notion of index or address location, and data is read from or written to a stream. In other words, a piece of data is only received or sent once via the stream, and cannot be accessed again later via the stream itself (although the data can be buffered and the buffered data can be accessed). As used herein, a storage protocol refers to a communication protocol that allows read and write operations of fixed-length data only. Data is in read from or written to a specific index or address location. In other words, the protocol maintains a fixed area of storage and allows random access to the storage.
In some embodiments, the device implements an extended version of a storage based protocol (e.g., extended USB mass storage protocol) to allow two-way communication with the host. For example, a standard USB mass storage protocol gives the host exclusive access to the USB drive and prevents the device itself (or any other party) from writing to the USB drive. The extended USB mass storage protocol, on the other hand, allows both the device and the host to write to the USB drive, and coordinates the read/write operations to avoid any conflicts.
In some embodiments, the device has a transmit mode for transmitting data and a receive mode for receiving data.
In this example, the host polls the device by sending read requests periodically. The read requests are storage protocol based, and are sent via the mass storage interface. At 504, a storage protocol based read request is received. The read request, according to the extended mass storage protocol, is a non-cached read directed to the read area. At 506, in response to the read request, data that is available for transmission (in this case, storage protocol based data that encapsulates socket protocol based data) is sent via the mass storage interface to the host, to be further processed and forwarded on to the server. Although polling by the host is used in this example, a notification based scheme can be used in other embodiments, where the device notifies the host when data is ready for transmission.
In
Upon receiving a storage protocol based data 604, the host translates (e.g., decapsulates) the data back to socket protocol based data 602. Data 602 is transmitted by the host to the server via a standard network connection.
If the connection to the server is successfully made, the server will send an acknowledgement. Application code on the server generates a second socket protocol based data, specifically acknowledgement data 608, and sends it to the host for forwarding to the device. The host encapsulates data 608 into a storage protocol based, fixed sized write data block 610. Again, because the amount of data in 608 is less than the fixed size to block, the un-used portion of data block 608 is zero-padded. The host makes a write request to the device via the mass storage interface, directed to the write area. For example, a “write to index 1, 512 bytes” request can be made by the host to the device. The extended mass storage protocol code of the device handles the write request by decapsulating data block 610 to obtain original socket protocol based data 608. In this case, says the acknowledgement is a successful one, no further action is needed. Should the acknowledgment indicate a failure, the device may reconnect at a later time.
Once the connection is successfully established, the server and the device can commence communication. In
The device decapsulates 704 to obtain original socket protocol based data 702, processes data 702, and in response generates socket protocol based data 708. In this example, the payload of 708 lists two available connections. Data 708 is encapsulated into a storage protocol based, fixed sized data block 710, which is transmitted to and read by the host. The host decapsulates 710 and restores socket protocol based data 708. Data 708 is sent to the server, which in turn sends the list of available connections to a user interface application on the host, such as the browser, and asks the user to make a selection and enter a password if appropriate.
The configuration information (e.g., user selection and password) is received by the server, which formats the configuration information into socket protocol based data 714 and sends it to the host. The host encapsulates 714 into storage protocol based data 716, and transmits it to the device by sending a write request. The device decapsulates 716 and restores socket protocol based data 714. The device processes 714 and connects to the selected Wi-Fi network with the supplied password. If the connection is successful, the device can commence to communicate with the server via its network (e.g., Wi-Fi) interface and without requiring the host to act as a proxy.
In
Communication of socket protocol based data over a storage protocol based interface has been disclosed. The technique allows easy installation and management of devices, in particular headless devices, without requiring an additional driver to be installed on the host. In some embodiments, link layer software performs encapsulation and decapsulation, while higher layer software (e.g., software corresponding to transport layer or higher) generates socket protocol based data and performs data processing.
Although the foregoing embodiments have been described in some detail for purposes of clarity of understanding, the invention is not limited to the details provided. There are many alternative ways of implementing the invention. The disclosed embodiments are illustrative and not restrictive.
This application claims priority to U.S. Provisional Patent Application No. 61/583,992 entitled COMMUNICATION OF SOCKET PROTOCOL BASED DATA OVER A STORAGE PROTOCOL BASED INTERFACE filed Jan. 6, 2012 which is incorporated herein by reference for all purposes.
| Number | Name | Date | Kind |
|---|---|---|---|
| 2997935 | Hermann | Aug 1961 | A |
| 3782260 | Ettischer et al. | Jan 1974 | A |
| D349914 | Usui | Aug 1994 | S |
| D357267 | Yotsuya | Apr 1995 | S |
| D372490 | Sheffield et al. | Aug 1996 | S |
| D385571 | Abrams | Oct 1997 | S |
| 5862428 | An | Jan 1999 | A |
| 5963253 | Dwyer | Oct 1999 | A |
| 5978028 | Yamane | Nov 1999 | A |
| D429269 | Renkis | Aug 2000 | S |
| D429743 | Renkis | Aug 2000 | S |
| 6147701 | Tamura et al. | Nov 2000 | A |
| D445123 | Shen | Jul 2001 | S |
| 6268882 | Elberbaum | Jul 2001 | B1 |
| D446534 | Zimmer | Aug 2001 | S |
| D447758 | Lin et al. | Sep 2001 | S |
| D449630 | Rak et al. | Oct 2001 | S |
| D452259 | Choi | Dec 2001 | S |
| 6357936 | Elberbaum | Mar 2002 | B1 |
| D455164 | Tsang et al. | Apr 2002 | S |
| 6462781 | Arnold | Oct 2002 | B1 |
| D467952 | Nakamura | Dec 2002 | S |
| D469775 | Bradley | Feb 2003 | S |
| D470874 | Chiu | Feb 2003 | S |
| 6515275 | Hunter et al. | Feb 2003 | B1 |
| 6634804 | Toste et al. | Oct 2003 | B1 |
| 6650694 | Brown et al. | Nov 2003 | B1 |
| 6678001 | Elberbaum | Jan 2004 | B1 |
| 6727954 | Okada et al. | Apr 2004 | B1 |
| D489388 | Saito et al. | May 2004 | S |
| 6762790 | Matko et al. | Jul 2004 | B1 |
| D511352 | Oliver et al. | Nov 2005 | S |
| 7066664 | Sitoh et al. | Jun 2006 | B1 |
| 7076162 | Yamashita | Jul 2006 | B2 |
| D527755 | Wu | Sep 2006 | S |
| D534938 | Beasley et al. | Jan 2007 | S |
| D537097 | Freeman | Feb 2007 | S |
| D542320 | Cheng | May 2007 | S |
| D552649 | Logan et al. | Oct 2007 | S |
| D552659 | Stephens et al. | Oct 2007 | S |
| D555692 | Liu et al. | Nov 2007 | S |
| 7290740 | Joy et al. | Nov 2007 | B2 |
| D558250 | Hsia | Dec 2007 | S |
| D563446 | Stephens et al. | Mar 2008 | S |
| D575316 | Liu et al. | Aug 2008 | S |
| 7552340 | Ooi | Jun 2009 | B2 |
| 7586537 | Konishi et al. | Sep 2009 | B2 |
| D606105 | Hinkel | Dec 2009 | S |
| 7646425 | Bohaker et al. | Jan 2010 | B2 |
| D610601 | Melder | Feb 2010 | S |
| D614223 | Kim et al. | Apr 2010 | S |
| D627815 | Oba | Nov 2010 | S |
| 7930369 | Marriott et al. | Apr 2011 | B2 |
| D638461 | Kim et al. | May 2011 | S |
| 7986369 | Burns | Jul 2011 | B1 |
| D651229 | Tan et al. | Dec 2011 | S |
| D651230 | Tan et al. | Dec 2011 | S |
| 8072536 | Campbell | Dec 2011 | B1 |
| D651633 | Park et al. | Jan 2012 | S |
| 8139122 | Rolston | Mar 2012 | B2 |
| D657410 | Helaoui et al. | Apr 2012 | S |
| 8165146 | Melick et al. | Apr 2012 | B1 |
| 8174972 | Cernius | May 2012 | B2 |
| D678929 | Hancock | Mar 2013 | S |
| 8402145 | Holden et al. | Mar 2013 | B2 |
| 8504707 | Toebes | Aug 2013 | B2 |
| D694305 | Katori et al. | Nov 2013 | S |
| D697119 | Park et al. | Jan 2014 | S |
| 8625024 | Hsu | Jan 2014 | B2 |
| D719205 | Matsumoto | Dec 2014 | S |
| D729296 | Shelton | May 2015 | S |
| D730422 | Kim et al. | May 2015 | S |
| D733781 | Chen | Jul 2015 | S |
| D734801 | Yang | Jul 2015 | S |
| 9102055 | Konolige et al. | Aug 2015 | B1 |
| D740871 | Moon et al. | Oct 2015 | S |
| D742954 | Simonelli et al. | Nov 2015 | S |
| D743465 | Aglassinger et al. | Nov 2015 | S |
| D745916 | Oh | Dec 2015 | S |
| D746350 | Li | Dec 2015 | S |
| D748709 | Jeong | Feb 2016 | S |
| D755880 | Luo et al. | May 2016 | S |
| 9330307 | Litvak et al. | May 2016 | B2 |
| 20020107591 | Gabai et al. | Aug 2002 | A1 |
| 20020141418 | Ben-Dor | Oct 2002 | A1 |
| 20020186317 | Kayanuma | Dec 2002 | A1 |
| 20020191082 | Fujino et al. | Dec 2002 | A1 |
| 20030164881 | Ohe et al. | Sep 2003 | A1 |
| 20030169354 | Aotsuka | Sep 2003 | A1 |
| 20030193409 | Crank | Oct 2003 | A1 |
| 20030216151 | Kitano et al. | Nov 2003 | A1 |
| 20040132489 | Ryley et al. | Jul 2004 | A1 |
| 20040211868 | Holmes et al. | Oct 2004 | A1 |
| 20040247203 | Dell'Eva | Dec 2004 | A1 |
| 20050062720 | Rotzoll et al. | Mar 2005 | A1 |
| 20050128336 | Toledano et al. | Jun 2005 | A1 |
| 20050149213 | Guzak et al. | Jul 2005 | A1 |
| 20050151042 | Watson | Jul 2005 | A1 |
| 20050200751 | Weaver | Sep 2005 | A1 |
| 20050212958 | Su et al. | Sep 2005 | A1 |
| 20050227217 | Wilson | Oct 2005 | A1 |
| 20050230583 | Wu | Oct 2005 | A1 |
| 20050237425 | Lee et al. | Oct 2005 | A1 |
| 20050243022 | Negru | Nov 2005 | A1 |
| 20050243199 | Bohaker et al. | Nov 2005 | A1 |
| 20050275723 | Sablak et al. | Dec 2005 | A1 |
| 20060086871 | Joseph et al. | Apr 2006 | A1 |
| 20060109375 | Ho et al. | May 2006 | A1 |
| 20060109613 | Chen | May 2006 | A1 |
| 20060123129 | Toebes | Jun 2006 | A1 |
| 20060123166 | Toebes | Jun 2006 | A1 |
| 20060210259 | Matsumoto | Sep 2006 | A1 |
| 20060262194 | Swain | Nov 2006 | A1 |
| 20060282866 | Kuo | Dec 2006 | A1 |
| 20070001087 | Shyu et al. | Jan 2007 | A1 |
| 20070011375 | Kumar | Jan 2007 | A1 |
| 20070036539 | Martinez et al. | Feb 2007 | A1 |
| 20070083791 | Panesar et al. | Apr 2007 | A1 |
| 20070222888 | Xiao et al. | Sep 2007 | A1 |
| 20080001547 | Negru | Jan 2008 | A1 |
| 20080005432 | Kagawa | Jan 2008 | A1 |
| 20080074535 | Ohsuga | Mar 2008 | A1 |
| 20080151052 | Erel et al. | Jun 2008 | A1 |
| 20080186150 | Kao | Aug 2008 | A1 |
| 20080189352 | Mitchell et al. | Aug 2008 | A1 |
| 20080291260 | Dignan et al. | Nov 2008 | A1 |
| 20080309765 | Dayan et al. | Dec 2008 | A1 |
| 20090019187 | Okuma | Jan 2009 | A1 |
| 20090027570 | Fujinawa | Jan 2009 | A1 |
| 20090102715 | Lou et al. | Apr 2009 | A1 |
| 20090141918 | Chris et al. | Jun 2009 | A1 |
| 20090141939 | Chambers et al. | Jun 2009 | A1 |
| 20090195655 | Pandey | Aug 2009 | A1 |
| 20090245268 | Pugliese, IV | Oct 2009 | A1 |
| 20090248918 | Diab | Oct 2009 | A1 |
| 20090289921 | Mickelson et al. | Nov 2009 | A1 |
| 20090296735 | Cernius | Dec 2009 | A1 |
| 20090309969 | Wendler | Dec 2009 | A1 |
| 20100026811 | Palmer | Feb 2010 | A1 |
| 20100076600 | Cross et al. | Mar 2010 | A1 |
| 20100109878 | Desrosiers | May 2010 | A1 |
| 20100180012 | Heo et al. | Jul 2010 | A1 |
| 20100199157 | Takaoka et al. | Aug 2010 | A1 |
| 20100271503 | Safaee-Rad et al. | Oct 2010 | A1 |
| 20100306399 | Khosravi | Dec 2010 | A1 |
| 20100314508 | Bevirt et al. | Dec 2010 | A1 |
| 20100328475 | Thomas et al. | Dec 2010 | A1 |
| 20110007159 | Camp et al. | Jan 2011 | A1 |
| 20110102438 | Mathe et al. | May 2011 | A1 |
| 20110102588 | Trundle et al. | May 2011 | A1 |
| 20110134313 | Kato | Jun 2011 | A1 |
| 20110161076 | Davis et al. | Jun 2011 | A1 |
| 20110193964 | McLeod | Aug 2011 | A1 |
| 20110193967 | Matsumoto et al. | Aug 2011 | A1 |
| 20110205965 | Sprigg | Aug 2011 | A1 |
| 20110231903 | Springer | Sep 2011 | A1 |
| 20110234803 | Nakajima et al. | Sep 2011 | A1 |
| 20110267492 | Prentice et al. | Nov 2011 | A1 |
| 20110285813 | Girdzijauskas et al. | Nov 2011 | A1 |
| 20110293137 | Gurman et al. | Dec 2011 | A1 |
| 20110299728 | Markovic et al. | Dec 2011 | A1 |
| 20120081009 | Shteynberg | Apr 2012 | A1 |
| 20120105632 | Renkis | May 2012 | A1 |
| 20120127270 | Zhang et al. | May 2012 | A1 |
| 20120140068 | Monroe et al. | Jun 2012 | A1 |
| 20120162416 | Su et al. | Jun 2012 | A1 |
| 20120194650 | Izadi et al. | Aug 2012 | A1 |
| 20120236373 | Oyama | Sep 2012 | A1 |
| 20120246359 | Scragg, Jr. | Sep 2012 | A1 |
| 20120262575 | Champagne et al. | Oct 2012 | A1 |
| 20130053657 | Ziarno et al. | Feb 2013 | A1 |
| 20130156260 | Craig | Jun 2013 | A1 |
| 20130162629 | Huang et al. | Jun 2013 | A1 |
| 20130314544 | Ban | Nov 2013 | A1 |
| 20130321564 | Smith et al. | Dec 2013 | A1 |
| 20130342653 | McCloskey et al. | Dec 2013 | A1 |
| 20140032796 | Krause | Jan 2014 | A1 |
| 20140047143 | Bateman | Feb 2014 | A1 |
| 20140049609 | Wilson et al. | Feb 2014 | A1 |
| 20140119604 | Mai et al. | May 2014 | A1 |
| 20140168421 | Xu et al. | Jun 2014 | A1 |
| 20140241387 | Ortiz | Aug 2014 | A1 |
| 20140270387 | Hoof et al. | Sep 2014 | A1 |
| 20140333726 | Tokui et al. | Nov 2014 | A1 |
| 20140375635 | Johnson et al. | Dec 2014 | A1 |
| 20150052029 | Wu et al. | Feb 2015 | A1 |
| 20150120389 | Zhang | Apr 2015 | A1 |
| 20150154467 | Feng et al. | Jun 2015 | A1 |
| 20150170371 | Muninder et al. | Jun 2015 | A1 |
| 20150181198 | Baele et al. | Jun 2015 | A1 |
| 20150228114 | Shapira et al. | Aug 2015 | A1 |
| 20160012588 | Taguchi et al. | Jan 2016 | A1 |
| 20160022181 | Valsan et al. | Jan 2016 | A1 |
| 20160094763 | Patel | Mar 2016 | A1 |
| 20160094829 | Georgiev et al. | Mar 2016 | A1 |
| Entry |
|---|
| USB/IP Project, “USB Request Over IP Network”, Dec. 27, 2011, http://web.archive.org/web/20111227171215/http://usbip.sourceforge.net/. |
| FabulaTech, “What is USB for Remote Desktop”, Dec. 12, 2011, http://web.archive.org/web/20111212070644/http://www.usb-over-network.com/usb-for-remote-desktop.html. |
| FabulaTech, “What is USB over Network”, Dec. 17, 2011, http://web.archive.org/web/20111217080253/http://www.usb-over-network.com/usb-over-network.html. |
| Parent, Thierry, “Android USB Port Forwarding”, Dec. 26, 2011, http://www.codeproject.com/Articles/191930/Android-Usb-Port-Forwarding. |
| 0308 Brand USB 2.0 HD Night Vision Webcam Web Cam Camera Webcamera With Microphone Sucker Stand for PC Computer Laptop Notebook, Dec. 18, 2015, 13 pgs. |
| 720p TF Card IP Wireless Camera Indoor Built-In Microphone Support Two Way Intercom for Smart Home Life and Unique PIR Alarm, Dec. 18, 2015, 3 pgs. |
| Adipranata, Fast method for multiple human face segmentation in color image, 2008 Second Int'l Conference on Future Generation Communication and Networking, IEEE, 2008, 4 pgs. |
| Buy Svb Ladybird Tripod Webcam 4 Mega Pixel—4 Megapixel Web Cam Online, Best Prices in India: Rediff Shopping, Dec. 16, 2015, 3 pgs. |
| Drivers—Video Cam: Download Drivers for (Genius VideoCAM NB) Visual/Video Camera, Computer Question Help, Jul. 3, 2008, 2 pgs. |
| Ebay, Belkin F7D7601AU, Net Cam IP WIFI Baby Pet Monitor Camera Security Night Vision, Dec. 15, 2015, 5 pgs. |
| Ebay, Lot of 2 USB WebCam Web Cam Camera Logitech Quickcam HP Hewlett Packard, Dec. 16, 2015, 3 pgs. |
| Ebay, Motorola, MBP421 Digital Video & Sound Rechargeable Baby Monitor 1.8″ LCD Screen, Dec. 15, 2015, 5 pgs. |
| Ebay, New Smallest Mini Camera Camcorder Video Recorder DVR Spy Hidden Pinhole Web Cam, Dec. 2, 2015, 4 pgs. |
| Good in Stock PC Camera USB Plug and Play Free Driver Digital Webcam Stand Web Camera, Dec. 18, 2015, 12 pgs. |
| Hampapur, Smart Surveillance: applications, technologies and implications, Information Communications and Signal Processing 2, 2003, pp. 1133-1138. |
| Heo, Fusion of visual and thermal face recognition techniques: A Comparative study. Univ. of Tennessee, Knoxville, TN, 2003, 75 pgs. |
| Input Devies on Pintrest, Computers, Mice and Apples, Tanna Darty, Dec. 15, 2015, 1 pg. |
| Ion camera, The Home Pro Wi-Fi Wireless Cloud Video Monitoring Security Camera (Black): Camera & Photo, Dec. 15, 2015, 6 pgs. |
| Joel Johnson, Glowdoodle Turns Your Crappy Webcam in a Crappier Wecam (in a good way), webcam—Boing Boing, Dec. 16, 2015, 8 pgs. |
| John Lewis, Samsung SEB-1019RW Adds-On Night Vision Baby Monitor Camera, Dec. 15, 2015, 2 pgs. |
| KYO-TUX, IconArchive, Device WebCam Icon, Phuzion Inconset, Jun. 8, 2010, 3 pgs. |
| Linksys Wireless-N Internet Home Monitoring Camera: Home Security Systems: Camera & Photo, Amazon.com, Dec. 15, 2015, 7 pgs. |
| Logi Circle: Portable Home Surveillance Camera from Logitech (video), AppleApple.Top World News, Feb. 10, 2015, 5 pgs. |
| Mini Universal Tripod Stand for Digital Camera and Webcam A33—in Tripods from Consumer Electronics on Aliexpress.com, Alibaba Group, Store: Angel One-Stop Shopping Center, Dec. 16, 2015, 3 pgs. |
| Restore.Solutions, Numus Software, USB/VID, Syntek Web Cam Device Drivers, Dec. 12, 2015, 10 pgs. |
| Silberman, Indoor Segmentation and Support Ingerence from RGBD Images, Computer Vision—ECCV 2012, Springer Berlin Heidelbert, Oct. 2012, pp. 746-780. |
| SIV AI-BALL Very Small Hidden IP Network Camera battery Powered Wireless IP Camera, Alibaba.com. 1999-2015, 7 pgs. |
| TechAllianz, How to Pick The Right Webcam, Satyakam, Jan. 22, 2013, 4 pgs. |
| TREK Ai-Ball Mini WiFi Spy Cam IP Wireless Camera for Iphone / Android /Ipad, Tmart, www.tmart.com, Dec. 18, 2015, 6 pgs. |
| Tripod Support for QuickCam (or other webcam), Instructables, 2015, 3 pgs. |
| Web Camera 6 Stock Photo, Dreamstime, Dec. 16, 2015, 2 pgs. |
| Number | Date | Country | |
|---|---|---|---|
| 61583992 | Jan 2012 | US |