# Patent

## Title
Method and apparatus for plug and play, networkable ISO 18000-7 connectivity

## Abstract

A device may comprise a Universal Serial Bus (USB) interface and a wireless interface operable to communicate in accordance with the ISO 18000-7 standard. The device may be operable to receive a command via the USB interface and transmit the command via the wireless interface. The device may be operable to receive data via the wireless interface and transmit the data via the USB interface. A form factor of the USB device may be such that it can be plugged directly into a USB port without any external cabling between the USB device and said USB port.

## Background
CLAIM OF PRIORITY
This patent application makes reference to, claims priority to and claims benefit from U.S. Provisional Patent Application Ser. No. 61/463,224 entitled “USB Device for Plug & Play, Networkable DASH7 Connectivity,” and filed on Feb. 15, 2011.
The above-referenced application is hereby incorporated herein by reference in its entirety.
INCORPORATION BY REFERENCE
This patent application also makes reference to:
U.S. Provisional Patent Application Ser. No. 61/464,376 entitled “Advanced Communication System for Wide-area Low Power Wireless Applications and Active RFID” and filed on Mar. 2, 2011;
U.S. patent application Ser. No. 13/267,640 entitled “Method and Apparatus for Adaptive Searching of Distributed Datasets” and filed Oct. 6, 2011;
U.S. patent application Ser. No. 13/270,802 entitled “Method and Apparatus for a Multi-band, Multi-mode Smartcard” and filed Oct. 11, 2011;
U.S. patent application Ser. No. 13/354,513 entitled “Method and Apparatus for Memory Management” and filed on Jan. 20, 2012; and
U.S. patent application Ser. No. 13/354,615 entitled “Method and Apparatus for Discovering People, Products, and Services via a Localized Wireless Network” and filed on Jan. 20, 2012.
Each of the above-referenced applications is hereby incorporated herein by reference in its entirety.


FIELD OF THE INVENTION
Certain embodiments of the invention relate to wireless networking. More specifically, certain embodiments of the invention relate to a method and apparatus for plug and play, networkable ISO 18000-7 connectivity.
BACKGROUND OF THE INVENTION
Existing methods and systems for ISO 18000-7 communications are of limited functionality and flexibility. Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with some aspects of the present invention as set forth in the remainder of the present application with reference to the drawings.
BRIEF SUMMARY OF THE INVENTION
A system and/or method is provided for plug and play, networkable ISO 18000-7 connectivity, substantially as illustrated by and/or described in connection with at least one of the figures, as set forth more completely in the claims.
These and other advantages, aspects and novel features of the present invention, as well as details of an illustrated embodiment thereof, will be more fully understood from the following description and drawings.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is block diagram of an exemplary USB device which enables communications in conformance with ISO 18000-7.
FIGS. 2A-2C depict exemplary form factors of a USB device which enables communications in conformance with ISO 18000-7.
FIG. 3 depicts an exemplary network switching and/or routing device operable to provide network connectivity to an ISO 18000-7 enabled USB device.
FIG. 4 is a flowchart illustrating exemplary steps for ISO 18000-7 communications via an ISO 18000-7 enabled USB device connected to a computing device.
FIG. 5 is another flowchart illustrating exemplary steps for ISO 18000-7 communications via an ISO 18000-7 enabled USB device connected to a computer.
FIG. 6A is a flowchart illustrating exemplary steps for ISO 18000-7 communications via an ISO 18000-7 enabled USB device connected to a network switch and/or router.
FIG. 6B is another flowchart illustrating exemplary steps for ISO 18000-7 communications via an ISO 18000-7 enabled USB device connected to a network switch and/or router.



DETAILED DESCRIPTION OF THE INVENTION
As utilized herein the terms “circuits” and “circuitry” refer to physical electronic components (i.e. hardware) and any software and/or firmware (“code”) which may configure the hardware, be executed by the hardware, and or otherwise be associated with the hardware. As utilized herein, “and/or” means any one or more of the items in the list joined by “and/or”. As an example, “x and/or y” means any element of the three-element set {(x), (y), (x, y)}. As another example, “x, y, and/or z” means any element of the seven-element set {(x), (y), (z), (x, y), (x, z), (y, z), (x, y, z)}. As utilized herein, the terms “block” and “module” refer to functions than can be implemented in hardware, software, firmware, or any combination of one or more thereof. As utilized herein, the term “exemplary” means serving as a non-limiting example, instance, or illustration. As utilized herein, the terms “e.g.,” and “for example,” introduce a list of one or more non-limiting examples, instances, or illustrations.
FIG. 1 is block diagram of an exemplary USB device which enables communications in conformance with ISO 18000-7. The USB device 102 comprises a clock 104, a USB interface 106, a CPU 108, a memory 110, and a wireless interface 112 comprising a processor 114, an analog front end (AFE) 116, and an antenna 118.
The clock 104 may be operable to generate one or more oscillating signals which may be utilized to control synchronous circuitry of the USB device 102. The clock 104 may comprise, for example, one or more crystal oscillators, phase-locked loops, and/or direct digital synthesizers.
The USB interface 106 may be operable to receive information via the bus 120, process the information to generate one or more USB packets, and transmit the USB packets onto a USB bus. Similarly, the USB interface 106 may be operable to receive USB packets, process the packets recover received information, and output the information on the bus 120.
The CPU 108 may be operable to control operation of the device 102. The CPU 108 may, for example, execute instructions and perform arithmetic and/or logic operations in response to the executed instructions. The CPU 108 may generate one or more control signals for controlling the operation of the device 102.
The memory module 110 may comprise volatile memory operable to store runtime data and/or non-volatile memory operable to store data that is persistent over multiple power cycles of the device 102. The memory module 110 may comprise addressing/control logic which implements read and write operations in response to read and write commands issued to the memory module 110. In an exemplary embodiment, the memory may be managed as described in the above-incorporated U.S. patent application Ser. No. 13/354,513. In an exemplary embodiment, the memory module 110 may store data arranged as a Universal Data Block (UDB) as, for example, described in the above-incorporated U.S. patent application Ser. No. 13/354,615. In an exemplary embodiment, the memory module 110 may store device, configuration, interface, and/or endpoint descriptors associated with a USB Device Class to which the device 102 belongs. The descriptors for the various USB Device Classes are set forth in the USB Device Class Definitions maintained by the USB Implementer's Forum (USB-IF).
The wireless interface 112 may be operable to communicate wirelessly in accordance with, for example, protocols specified in ISO 18000-7, and/or protocols described in the above-incorporated U.S. Provisional Patent Application 61/464,376 filed on Mar. 2, 2011 (collectively referred to herein as ISO 18000-7). The invention is not necessarily limited in regard to the frequencies on which the wireless interface 112 may communicate.
The processor 114 may comprise circuitry operable to interface with the AFE 116 to receive and transmit data, and to process received and to-be-transmitted data. For transmission, the processor 114 may be operable to receive data via the bus 120, packetize and/or otherwise process the data to prepare it for transmission in accordance with the wireless protocol(s) in use, and output the data to the AFE 116 for transmission. For reception, the processor 114 may be operable to receive data via the AFE 116, process the received data in accordance with the wireless protocol(s) in use, and output received data onto the bus 120. Although FIG. 1 depicts the antenna 118 as being integrated with the device 102, as shown in FIGS. 2A-2C, various USB devices may have internal antennas, external but affixed antennas, and/or a connector for connecting to a removable external antenna.
Upon the device 102 being connected to a USB bus (e.g., plugged into a USB port of a computing device), the USB interface 106 may participate in enumeration of the device 102 in accordance with USB specifications. Enumeration may comprise descriptors being sent by the device 102. In an exemplary embodiment, the descriptors stored in, and transmitted by the device 102 during enumeration, may be as set forth in the USB Device Class Definition for Printing Devices, for example. In such an embodiment, after setup of the USB connection, the messages exchanged over the USB bus, and the manner in which the messages are exchanged, may be in accordance with the USB Device Class Definition for Printing Devices, for example. In other exemplary embodiments, the device 102 may use a different USB device class definition such as, for example, the device class definition for mass storage devices or the device class definition for human-interface devices.
During operation, the device 102 may perform actions in response to USB packets received via the USB interface 106. The USB packets may, for example, comprise an instruction in accordance with an application programming interface (API) of the device 102. For example, in response to such an instruction, the device 102 may generate and transmit one or more ISO 18000-7 commands via the wireless interface 112. Additionally or alternatively, the USB packets may, for example, comprise data to be transmitted via the wireless interface 112. The data may be, for example, data retrieved from memory in response to a previously-received ISO 18000-7 command. In such instances, the data may be extracted from the USB packets by the USB interface 106 and/or the CPU 108, and then conveyed to the wireless interface 112 where it may be processed (e.g., packetized, encoded, etc.) and transmitted in accordance with ISO 18000-7.
During operation, the device 102 may also perform actions in response to ISO 18000-7 commands received via the wireless interface 112. For example, in response to a command received via the wireless interface 112, the device 102 may perform a search of the memory 110 and may generate and transmit one or more response packets via the wireless interface 112. Additionally or alternatively, the device 102 may generate one or more USB packets in response to such a command. A USB host device receiving such USB packets may perform a search of its memory and communicate the search results back to the device 102, which may then communicate the search results via the wireless interface 112.
In an exemplary embodiment, the device 102 may be operable to generate a log of a status of the device 102 and/or events occurring in the device 102. For example, a description of commands generated and/or received and responses generated and/or received by the device 102 may be logged in a text file. The text file may be stored in the memory 110 and/or may be output via the USB interface 106 for storage to a device having greater memory resources.
In an embodiment of the invention, the memory 110 may be utilized to store more recent and/or important data and older and/or less important data may be output via the USB interface 106 for storage in a memory that is external to the device 102.
In an exemplary embodiment, the device 102 may transmit search requests and/or receive, perform, and respond to search requests as is described in the above-incorporated U.S. patent application Ser. No. 13/267,640.
In an exemplary embodiment, the device 102 may be an embodiment of the smartcard described in the above-incorporated U.S. patent application Ser. No. 13/270,802 and may comprise circuitry and/or functionality described therein.
FIGS. 2A-2B depict exemplary form factors of an exemplary USB device which enables communications in conformance with ISO 18000-7. The USB device 102A comprises a connector 118 for connecting to an external antenna and a male USB connector for plugging into a USB port. The USB device 102B comprises an affixed and movable antenna 120 and a male USB connector for plugging into a USB port. The USB device 102C comprises an internal antenna (not shown) and a male USB connector for plugging into a USB port. Each of the devices shown in FIGS. 2A-2B may, for example, have length, width, and height dimensions on the order of centimeters.
FIG. 3 depicts an exemplary network switching and/or routing device operable to provide network connectivity to an ISO 18000-7 enabled USB device. The switching and/or routing device 302 comprises antennas 304a and 304b, USB ports 306a-306d, power port 308, and wired networking port 310.
The antennas 304a and 304b may enable the device 302 to transmit and receive signals in accordance with one or more wireless protocols. For example, the antennas 304a and 304b may enable the device 302 to communicate in conformance with IEE 802.11 standards.
The USB ports 306a-306d may enable the device 302 to communicate with other devices via one or more USB busses. The device 302 may also be operable to supply power to other devices via the USB ports 306a-306d. 
The device 302 may be operable to receive DC and/or AC power via the power port 308. The power port 308 may, for example, connect to an AC/DC converter which, in turn, connects to a 120VAC wall outlet.
The wired networking port 310 may enable the device 302 to connect to a wired network such as, for example, an Ethernet network, a DOCSIS network, a DSL network, a MoCA network, etc.
In operation, circuitry of the device 302 may be operable to switch (e.g., at OSI layer 2) and/or route (e.g., at OSI layer 3) packets between a wireless network (via the antennas 304a and 304b), a wired network (via the port 310), and one or more USB busses (via the USB ports 306a-306d).
In an exemplary embodiment, each of the USB ports 306a-306d may be assigned a layer 2 address (e.g., a MAC) and/or a layer 3 address (e.g., an IP address). Accordingly, a remote device coupled to the device 302 via the antennas 304a and 304b or via the port 310 may be enabled to send data to a particular one of USB ports 306a-306d by sending one or more packets to the layer 2 and/or layer 3 address associated with that particular USB port. For example, with the ISO 18000-7 device connected to USB port 306c as shown in FIG. 3, network devices may send messages to the USB device 102 by sending the messages to the layer 2 and/or layer 3 address associated with the USB port 306c. 
In an exemplary embodiment, the device 302 may be operable to associate one or more of the USB ports 306a-306d with a destination layer 2 and/or layer 3 address. That is, packets received via a particular one of the USB ports 306a-306d may be automatically forwarded to the layer 2 and/or layer 3 address(es) associated with that particular USB port. Additionally and/or alternatively, the device 302 may be operable to parse USB packets received via the USB ports 306a-306d to extract a destination layer 2 and/or layer 3 address(es) from the packets, and then forward the packets to that layer 2 and/or layer 3 address(es). Accordingly, a device coupled to a particular one of the USB ports 306a-306d may be enabled to send messages to remote devices via a wired and/or wireless network. For example, with the ISO 18000-7 device connected to USB port 306c as shown in FIG. 3, the device 102 may output USB packets to the device 302 which may then forward the contents of the USB packets to the address that is associated with the USB port 306c and/or that is indicated in the USB packets.
FIG. 4 is a flowchart illustrating exemplary steps for ISO 18000-7 communications via an ISO 18000-7 enabled USB device connected to a computing device. The exemplary steps begin with step 402 in which an ISO 18000-7 enabled USB device 102 is connected to a USB port of a computing device (e.g., a laptop, tablet, smartphone, etc.).
In step 404, the USB device 102 and the computing device exchange control messages to identify and enumerate the USB device 102.
In step 406, an application running on the computing device (e.g., an application which has a user interface such as, for example, is described in the above-incorporated U.S. patent application Ser. No. 13/267,640) outputs data intended to trigger transmission of an ISO 18000-7 command. For example, the combination of the computing device and the USB device 102 may operate as an ISO 18000-7 interrogator and the message may be a command to interrogate ISO 18000-7 tags within range of the wireless interface 112.
In step 408, a USB bus adaptor of the computing device encapsulates the data output by the application into one or USB packets and transmits the packets to the device 102 via the USB bus.
In step 410, the USB device 102 receives the USB packets via the USB interface 106. The USB interface 106 and/or the CPU 108 processes the received packets to detect the data output by the application in step 406.
In step 412, the device 102 generates an ISO 18000-7 command based on the data received from the computing device. The ISO 18000-7 command is transmitted via the wireless interface 112.
In step 414, the device 102 receives one or more ISO 18000-7 responses via the wireless interface 112. The responses may have been transmitted by, for example, one or more ISO 18000-7 tags within communication range of the wireless interface 112.
In step 416, the device 102 processes the received response(s). For example, the device 102 may remove headers and/or other fields to recover the response data.
In step 418, the device 102 generates one or more USB packets based on the received responses. For example, the response data from the ISO 18000-7 responses may be encapsulated in the USB packet(s). The USB packet(s) are sent to the computing device via the USB interface 106.
In step 420, the computing device processes the received USB packet(s). For example, the headers of the USB packet(s) may be removed to recover the response data.
In step 422, the data recovered from the USB packets is conveyed to the application and the application presents the response(s) to a user.
FIG. 5 is another flowchart illustrating exemplary steps for ISO 18000-7 communications via an ISO 18000-7 enabled USB device connected to a computer. The exemplary steps begin with step 502 in which an ISO 18000-7 enabled USB device 102 is connected to a USB port of a computing device (e.g., laptop, tablet, smartphone, etc.).
In step 504, the USB device 102 and the computing device exchange control messages to identify and enumerate the USB device 102.
In step 506, the USB device 102 receives an ISO 18000-7 command via the wireless interface 112. For example, the USB device 102 may operate as an ISO 18000-7 tag and receive a command from an ISO 18000-7 interrogator.
In step 508, the memory 110 of the USB device 102 is searched in response to the command received in step 506. For example, the memory 110 may be searched for a match of character, string, and/or number contained in the received command.
In step 510, it is determined whether a match was found in the memory 110. If a match was found, then in step 512, a response indicating that a match was found, and possibly containing addition response data, is generated and transmitted via the wireless interface 112.
Returning to step 510, if no match was found in the memory 110, then in step 514 the device 102 generates and sends one or more USB packet(s) to the computing device. The USB packet(s) may indicate the ISO 18000-7 command that was received in step 506.
In step 516, memory of the computing device is searched in response to the ISO 18000-7 command communicated in the USB packet(s). For example, the memory 110 may be searched for a match of character, string, and/or number contained in the received command.
In step 518, it is determined whether a match was found in the memory of the computing device. If a match was found, then, in step 520, a response indicating that a match was found, and possibly containing addition response data, is communicated to the USB device 102 in the form of one or more USB packets.
In step 522, the response data received from the computing device in step 520 is transmitted via the wireless interface 112 in the form of one or more ISO 18000-7 response packets.
Returning to step 518, if no match was found in the memory of the computing device, then, in step 524, the computing device sends one or more USB packets indicating such to the USB device 102.
In step 526, the USB device 102 may send an ISO 18000-7 response indicating that a match was not found. The USB device 102 may not send such a response if, for example, the command received in step 506 is one which requires a response only if a match was found.
FIG. 6A is a flowchart illustrating exemplary steps for ISO 18000-7 communications via an ISO 18000-7 enabled USB device connected to a network switch and/or router. The exemplary steps begin with step 602 in which the ISO 18000-7 enabled USB device 102 is connected to the USB port 306c of the switch/router 302.
In step 604, the USB device 102 and the switch/router 302 exchange control messages to identify and enumerate the USB device 102.
In step 606, the switch/router 302 may assign a network address (e.g., a MAC address and/or an IP address) to the USB device 102. The assignment may comprise, for example, associating the port 306c and the network address in a routing and/or switching table (e.g., in the case of an IP address) of the device 302. In other embodiments, a network address of the USB port 306c may be static. During step 606, the switch/router 302 may notify other devices that an ISO 18000-7 device is connected to the USB port 306c. 
In step 608, an application running on a computing device that is connected to the switch/router 302 via a wired or wireless connection outputs data to trigger the transmission of an ISO 18000-7 command.
In step 610, the end system packetizes the command into one or more USB packets and then conveys the USB packets to a network adaptor of the end system.
In step 612, the network adaptor of the end system packetizes the USB packets into one or more network packets and transmits the network packets in accordance with whatever networking protocol(s) is/are in use (e.g., WiFi, wired Ethernet, etc.). The destination of the packets is the network address associated with USB port 306c 
In step 614, the switch/router receives, via the antennas 304a and 304b or the port 310, the packets transmitted by the end system in step 612.
In step 616, the switch/router 302 decapsulates the received packets to recover the USB packets generated by the end system in step 610.
In step 618, the switch/router 302 conveys the USB packets to the USB device 102 via the USB port 306c. 
In step 620, the device 102 decapsulates the USB packets to recover the data generated by the application in step 608.
In step 622, the device 102 generates one or more ISO 18000-7 commands based on the received data and transmits the commands via the wireless interface 112.
FIG. 6B is a flowchart illustrating exemplary steps for ISO 18000-7 communications via an ISO 18000-7 enabled USB device connected to a network switch and/or router. The exemplary steps begin with step 630 in which the ISO 18000-7 enabled USB device 102 is connected to the USB port 306c of the switch/router 302 operable to perform network switching and/or routing operations (e.g., Ethernet-based switching and/or IP-based routing).
In step 632, the USB device 102 and the switch/router 302 exchange control messages to identify and enumerate the USB device 102.
In step 634, a network address (e.g., a MAC address and/or an IP address) may be assigned to the USB port 306c of the switch/router 302. The assignment may comprise, for example, associating the port 306c and the network address in a routing and/or switching table (e.g., in the case of an IP address) of the device 302. In other embodiments, a network address of the USB port 306c may be static. During step 606, the switch/router 302 may notify other devices that an ISO 18000-7 device is connected to the USB port 306c. 
In step 636, the switch/router 302 may be configured to pair the USB port 306c with a network address assigned to an end system (e.g., laptop, tablet, smartphone, server, etc.) connected to the switch/router 302. In this manner, packets received by the switch/router 302 via the USB port 306c may be automatically forwarded to the paired network address without the USB device 102 having to concern itself with network addresses. That is, the switching/routing may be transparent to the USB device 102 such that it thinks it is connected directly to the end system via a USB bus. In another exemplary embodiment, USB packets received via the port 306c may contain destination network addresses which the switch/router 302 may inspect to determine which address to send the packets to.
In step 638, the device 102 transmits an ISO 18000-7 command.
In step 640, the device 102 receives one or more ISO 18000-7 responses via the wireless interface 112. The responses may have been transmitted by, for example, one or more ISO 18000-7 tags within communication range of the wireless interface 112.
In step 642, the device 102 processes the received response(s). For example, the device 102 may remove headers and/or other fields to recover the response data.
In step 644, the device 102 generates one or more USB packets in based on the received responses. For example, the response data from the ISO 18000-7 responses may be encapsulated in the USB packet(s). The USB packet(s) may be sent to the switch/router via the USB port 306c. 
In step 646, the switch/router 302 packetizes and transmits the received USB packet(s) via the antennas 304a and 304b or the port 310 in accordance with the network protocol(s) being used (e.g., WiFi or Ethernet). The network packet(s) are transmitted to the network address paired with the USB port 306c in step 636.
In step 648, the end system receives the packets via the wired or wireless network.
In step 650, the end system process the received packets to recover the ISO 18000-7 response data. For example, the end system removes the formatting of the network protocol(s) in use (e.g., WiFi, Ethernet, etc.) and then decapsulates the USB packet(s) to recover the response data.
In step 652, the response data may be conveyed to the application, which may present the response(s) to a user of the end system.
In accordance with an exemplary embodiment of the invention, the circuitry of the device 102 comprises a Universal Serial Bus (USB) interface 106 and a wireless interface 112 operable to communicate in accordance with the ISO 18000-7 standard. The device 102 may be operable to receive a command via the USB interface 106 and transmit the command via the wireless interface 112. A form factor of the USB device 102 may be such that it can be plugged directly into a USB port without any external cabling between the USB device and said USB port (i.e., may have a form factor similar of a “USB stick” or a “thumb drive”). During enumeration of the USB device 102, it may communicate one or more descriptors according to the USB Device Class Definition for Printing Devices and the command may be received via a Bulk OUT pipe of the USB bus.
The device 102 may comprise a memory 110 in which a filesystem resides. The device 102 may be operable to search the filesystem in response to the command received via the USB interface 106 and/or in response to a command received via the wireless interface 112. The one or more circuits may be operable to output results of the search via the wireless interface 112 and/or the USB interface 106. The device 102 may be operable to read data from the memory 110 and output the data via the USB interface 106 and/or the wireless interface 112. The device 102 may be operable to receive data via the USB interface 106 and/or the wireless interface and write the received data to the memory 110. The one or more circuits may be operable to generate log data of activities and/or events occurring in the USB device 102 and output the log data via the USB interface 106.
The USB device 102 may be connected to a network switch and/or router 302 via the USB interface 106 and a USB port 306c of the network switch and/or router 302. The USB port 306c may be assigned a network address by the network switch and/or router 302. The network switch and/or router may be operable to receive network packets destined for the assigned network address and convey contents of the received network packets to the USB device 102 via the USB interface 106 and the USB port 306c. 
The USB device 102 may be a client device connected to the network switch and/or router 302 via the USB interface 106. The network switch and/or router 302 may be operable to associate the client USB device 102 with a network address of a host USB device (e.g., a computing device connected to the network switch and/or router via a wired connection to port 310). The network switch and/or router 302 may be operable to receive data from the client USB device 102 via the USB interface 106. The network switch and/or router 302 may be operable to transmit the received data to the network address of the host USB device (e.g., via the port 310).
Other embodiments of the invention may provide a non-transitory computer readable medium and/or storage medium, and/or a non-transitory machine readable medium and/or storage medium, having stored thereon, a machine code and/or a computer program having at least one code section executable by a machine and/or a computer, thereby causing the machine and/or computer to perform the steps as described herein for plug and play, networkable ISO 18000-7 connectivity.
Accordingly, the present invention may be realized in hardware, software, or a combination of hardware and software. The present invention may be realized in a centralized fashion in at least one computing system, or in a distributed fashion where different elements are spread across several interconnected computing systems. Any kind of computing system or other apparatus adapted for carrying out the methods described herein is suited. A typical combination of hardware and software may be a general-purpose computing system with a program or other code that, when being loaded and executed, controls the computing system such that it carries out the methods described herein. Another typical implementation may comprise an application specific integrated circuit or chip.
The present invention may also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which when loaded in a computer system is able to carry out these methods. Computer program in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: a) conversion to another language, code or notation; b) reproduction in a different material form.
While the present invention has been described with reference to certain embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted without departing from the scope of the present invention. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the present invention without departing from its scope. Therefore, it is intended that the present invention not be limited to the particular embodiment disclosed, but that the present invention will include all embodiments falling within the scope of the appended claims.

## Claims

1. A USB device comprising:
one or more circuits comprising a Universal Serial Bus (USB) interface, a first memory in which a filesystem resides, and a wireless interface, said one or more circuits being operable to:
receive a command via said USB interface;
transmit said command via said wireless interface; and
search said filesystem in response to said command received via said USB interface and/or in response to a command received via said wireless interface; and

wherein:
said search is for a character, string, and/or number contained in said command received via said wireless interface;
said one or more circuits are coupled, via said USB interface, to a computing device which comprises a second memory in which a filesystem resides; and
said one or more circuits are operable to:
perform a search of said filesystem of first memory for said character, string, and/or number;
if said search of said filesystem of said first memory does locate said character, string, and/or number, transmit a response, via said wireless interface, indicating that said character, string, and/or number was found;
if said search of said filesystem of said first memory does not locate said character, string, and/or number, send, via said USB interface, one or more USB packets to said computing device to trigger a search of said filesystem of said second memory for said character, string, and/or number;
if said search of said filesystem of said second memory does locate said character, string, and/or number, transmit a response, via said wireless interface, indicating that said character, string, and/or number was found; and
if said search of said filesystem of said second memory does not locate said character, string, and/or number, transmit a response, via said wireless interface, indicating that said character, string, and/or number was not found.

2. The system of claim 1, wherein a form factor of said USB device is such that it can be plugged directly into a USB port without any external cabling between said USB device and said USB port.

3. The system of claim 1, wherein, during enumeration of said USB device, said one or more circuits communicate one or more descriptors according to the USB Device Class Definition for Printing Devices.

4. The system of claim 3, wherein said command is received via a Bulk OUT pipe of said USB bus.

5. The system of claim 1, wherein said one or more circuits are operable to output results of said search via said wireless interface and/or said USB interface.

6. The system of claim 1, wherein said one or more circuits are operable to read data from said memory and output said data via said USB interface and/or said wireless interface.

7. The system of claim 1, wherein said one or more circuits are operable to receive data via said USB interface and/or said wireless interface and write said received data to said memory.

8. The system of claim 1, wherein said one or more circuits are operable to generate log data of activities and/or events occurring in said USB device and output said log data via said USB bus.

9. The system of claim 1, wherein:
said USB device is connected to a network switch and/or router via said USB interface and a USB port of said network switch and/or router;
said USB port is assigned a network address by said network switch and/or router;
said network switch and/or router is operable to receive network packets destined for said assigned network address and convey contents of said received network packets to said USB device via said USB interface and said USB port.

10. The system of claim 1, wherein:
said USB device is a client device connected to a network switch and/or router via said USB interface;
said network switch and/or router is operable to associate said client USB device with a network address of a host USB device;
said network switch and/or router is operable to receive data from said client USB device via said USB interface; and
said network switch and/or router is operable to transmit said received data to said network address of said host USB device.

11. A USB device comprising:
one or more circuits comprising a Universal Serial Bus (USB) interface, a first memory in which a filesystem resides, and a wireless interface, said one or more circuits being operable to:
receive data via said wireless interface;
transmit said data via a USB interface; and
search said filesystem in response to said command received via said USB interface and/or in response to a command received via said wireless interface; and

wherein:
said search is for a character, string, and/or number contained in said command received via said wireless interface;
said one or more circuits are coupled, via said USB interface, to a computing device which comprises a second memory in which a filesystem resides; and
said one or more circuits are operable to:
perform a search of said filesystem of first memory for said character, string, and/or number;
if said search of said filesystem of said first memory does locate said character, string, and/or number, transmit a response, via said wireless interface, indicating that said character, string, and/or number was found;
if said search of said filesystem of said first memory does not locate said character, string, and/or number, send, via said USB interface, one or more USB packets to said computing device to trigger a search of said filesystem of said second memory for said character, string, and/or number;
if said search of said filesystem of said second memory does locate said character, string, and/or number, transmit a response, via said wireless interface, indicating that said character, string, and/or number was found; and
if said search of said filesystem of said second memory does not locate said character, string, and/or number, transmit a response, via said wireless interface, indicating that said character, string, and/or number was not found.

12. The system of claim 11, wherein a form factor of said USB device is such that it can be plugged directly into a USB port without any external cabling between said USB device and said USB port.

13. The system of claim 11, wherein, during enumeration of said USB device, said one or more circuits communicate one or more descriptors according to the USB Device Class Definition for Printing Devices.

14. The system of claim 13, wherein said data is transmitted via a Bulk IN pipe of said USB bus.

15. The system of claim 11, wherein said one or more circuits are operable to output results of said search via said wireless interface and/or said USB interface.

16. The system of claim 11, wherein said one or more circuits are operable to read data from said memory and output said data via said USB interface and/or said wireless interface.

17. The system of claim 11, wherein said one or more circuits are operable to write said received data to said memory.

18. The system of claim 11, wherein said one or more circuits are operable to generate log data of activities and/or events occurring in said USB device and output said log data via said USB bus.

19. The system of claim 11, wherein:
said USB device is connected to a network switch and/or router via said USB interface and a USB port of said network switch and/or router;
said USB port is assigned network address by said network switch and/or router;
said network switch and/or router is operable to receive network packets destined for said assigned network address and convey contents of said received network packets to said USB device via said USB interface and said USB port.

20. The system of claim 11, wherein:
said USB device is a client device connected to a network switch and/or router via said USB interface;
said network switch and/or router is operable to associate said client USB device with a network address of a host USB device;
said network switch and/or router is operable to receive data from said client USB device via said USB interface; and
said network switch and/or router is operable to transmit said received data to said network address of said host USB device.