CROSS-REFERENCE TO RELATED APPLICATIONSThis application claims the benefit from U.S. Provisional Patent Application No. 62/039,367, entitled “FLASH DRIVE SHAPED TO UTILIZE SPACE BEHIND A MOBILE DEVICE”, and filed on Aug. 19, 2014. The contents of which is incorporated herein by reference in its entirety.
BACKGROUNDFlash drives are devices that contain flash memory, which is a non-volatile memory, and that can be connected to computing devices, such as personal computers, smartphones, tablet computers, etc., via a standard connector. After connecting a flash drive to a first computing device via a standard interface, such as to a desktop computer via a full size Universal Serial Bus (USB) connector, a user can transfer data from the desktop computer to the flash drive using a set of standard protocols, such as for a USB mass storage device class. Because the data is stored in the non-volatile flash memory, the flash drive retains the data even when not connected to any computing device and not receiving any power. The flash drive can be connected to a second computing device that has the same standard connector and supports the same protocols, such as a laptop computer with a full size USB connector, and the data can be transferred from the flash memory of the flash drive to the laptop computer.
SUMMARYIntroduced herein is technology to enable a flash drive to utilize the space behind a mobile device. Flash drive users connect their flash drives to a variety of mobile devices, such as smart phones, tablet computers, portable music devices, etc. The users utilize their flash drives to transfer data between devices, backup data on their devices, synchronize their devices, etc. Many flash drives have an elongated rectangular shape. When connected to a mobile device, such as when connected to a connector on the bottom edge of a smart phone, the flash drive can extend from the mobile device in the elongated dimension. A flash drive can extend a distance from the bottom edge of the smart phone.
The further an accessory, such as a flash drive, extends out past a mobile device, the greater the chances are that the flash drive will experience unexpected force. Such an unexpected force can possibly damage the flash drive or the connection port of the mobile device. For example, the flash drive can act as a lever. A force applied at the end of the flash drive that extends from the mobile device can be amplified by the lever, and can create a significant amount of force on the connection port. This force can possibly cause damage to the connection port of the smart phone, or the connector of the flash drive.
While observing people as part of developing this technology, it was noticed that, when holding their smart phones vertically in their hand, users often held their phones between the base of their fingertips and the inner side of the hand. When holding a smart phone in this way, it was further noticed that many smart phone users would move their pinky finger to the bottom of the phone to stabilize it. When a user holds a smart phone in this way, and slides his pinky finger to the bottom of the phone to stabilize the phone, it was noticed that an empty space is created between the back of the phone and the palm of the user's hand.
In one embodiment, a flash drive has a J-shape, and has connectors on both ends of the J-shape. An Apple™ Lightning™ connector extends from the short end of the J-shape, and a full size Universal Serial Bus (USB) connector extends from the long end of the J-shape. A user inserts the Lightning connector of the flash drive into a compatible connection port of an Apple iPhone™, which is located on the bottom edge of the iPhone. When the user inserts the Lightning connector of the flash drive into the connection port, the long J-shaped end of the flash drive can wrap around to the back side of the iPhone. Thus, the USB connector and a portion of the long J-shaped end of the flash drive can be located behind the iPhone.
When a user holds the smart phone and creates the empty space between his palm and the smart phone as described above, the portion of the flash drive that is located behind the smart phone can fit in this empty space. When users similarly hold some other mobile devices, a similar empty space can be formed between the mobile device and the user's hand, and the long end of the J-shaped flash drive can similarly fit in this empty space.
Many users purchase cases for their smart phones and other mobile devices. These cases are placed over the mobile device to protect the mobile device. Such cases typically have holes in them that align with certain points on the mobile device. For example, one hole may align with a connector port, and a second hold may align with a earphone jack. These holes vary in size based on the case and the case manufacturer, with some cases having holes that are only slightly larger than the connector port opening.
As a result, connecting a flash drive to a phone encapsulated within a case can be difficult, as the connector end of the flash drive may be too large to fit in a smaller case hole. The size of the connector end of a flash drive may need to be sufficiently large to accommodate a printed circuit board (PCB) that includes, for example, a flash memory integrated circuit (IC) and one or more controller ICs, as well as other components. Such a PCB may cause the size of the connector end of the flash drive to be large enough to cause problems fitting in some of the smaller case holes.
In some embodiments, a PCB that includes the various ICs and components is located in the long end of a J-shaped flash drive. Because the short end of the J-shaped flash drive does not include this PCB, it can be made more narrow than the end of, for example, a rectangular shaped flash drive. Resultantly, the J-shaped flash drive can be reliably connected to a mobile device with a case, as the narrow short end of the J-shaped flash drive enables the flash drive to fit in the above discussed smaller case holes.
Users connect flash drives to a variety of mobile devices with a variety of thicknesses. When a J-shaped flash drive is connected to one mobile device, the back of the device may be located, e.g., 2 millimeters (mm) from the device connector. When connected to a second mobile device, the back of the device may be located 4 mm from the device connector. Further, cases can add to the thicknesses of these devices, so the 4 mm space of the second device may increase to 5 mm due to the thickness of the added case.
To enable the flash drive to connect to and accommodate a variety of device thicknesses, in some embodiments, the U-shaped intermediate portion of the J-shaped flash drive is flexible. Due to this flexibility, the distance between the two ends of the J-shaped flash drive can be increased by pulling apart the two ends. The flexibility of the U-shaped intermediate portion enables the U-shaped intermediate portion to bend, when enables the two ends to separate enough to accommodate a thicker mobile device. This enables the long end of the J-shaped flash drive to wrap around and fit behind thicker devices, as well as narrower devices.
BRIEF DESCRIPTION OF THE DRAWINGSOne or more embodiments are illustrated by way of example in the figures of the accompanying drawings, in which like references indicate similar elements.
FIG. 1 is an environment diagram illustrating an environment in which a flash drive is used, consistent with various embodiments.
FIG. 2 is a block diagram illustrating an example of a flash drive that utilizes two controller modules for two sets of functionality, consistent with various embodiments.
FIG. 3 is a block diagram illustrating an example of a flash drive that integrates the two sets of functionality using one controller module, consistent with various embodiments.
FIG. 4 is a block diagram illustrating an example of a flash drive that integrates the two sets of functionality via customization of the IC design of a storage controller, consistent with various embodiments.
FIG. 5 is an activity diagram illustrating the use of a flash drive to copy data from a non-iPhone Operating System (iOS) computing device to an iOS computing device, consistent with various embodiments.
FIG. 6 is a block diagram illustrating an example of a flash drive with two controller modules that enables current to be passed from a source device to a mobile device, consistent with various embodiments.
FIG. 7 is a block diagram illustrating an example of a flash drive with an integrated controller module that enables current to be passed from a source device to a mobile device, consistent with various embodiments.
FIG. 8 is a block diagram illustrating an example of a flash drive with a power management module that enables current to be passed from a source device to a mobile device, consistent with various embodiments.
FIG. 9 is an activity diagram illustrating the use of a flash drive to pass current from a source device to a mobile device, consistent with various embodiments.
FIG. 10 is a diagram illustrating a space that is formed between a smart phone and a user's hand when the user holds the smart phone, consistent with various embodiments.
FIG. 11 is a diagram illustrating a user's pinky finger being placed on the bottom edge of a smart phone to stabilize the smart phone, consistent with various embodiments.
FIG. 12 is a diagram illustrating a flash drive that is shaped to utilize the space behind a mobile device, consistent with various embodiments, and as viewed from three different angles.
FIG. 13 is a diagram illustrating a front-view of a flash drive that is connected to a smart phone and is utilizing the space behind the smart phone, consistent with various embodiments.
FIG. 14 is a diagram illustrating a side-view of a flash drive that is connected to a smart phone and is utilizing the space behind the smart phone, consistent with various embodiments.
FIG. 15 is a diagram illustrating a back-view of a flash drive that is connected to a smart phone and is utilizing the space behind the smart phone, consistent with various embodiments.
FIG. 16 is a diagram illustrating a bottom-view of a flash drive utilizing the space between a smart phone and a user's hand, consistent with various embodiments.
FIG. 17 is a diagram illustrating a front-view of a flash drive utilizing the space between the smart phone and the user's hand, consistent with various embodiments.
FIG. 18 is a diagram illustrating a flash drive with one connector that is shaped to utilize the space behind a mobile device, consistent with various embodiments, and as viewed from two different angles.
FIG. 19 is a diagram illustrating a flash drive that can bend to accommodate mobile devices of varying thicknesses, consistent with various embodiments.
FIG. 20 is a diagram illustrating an exploded view of a flash drive, including a cap, that is shaped to utilize the space behind a mobile device, consistent with various embodiments.
FIG. 21 is a block diagram illustrating an example of a processing system in which at least some operations described herein can be implemented, consistent with various embodiments.
DETAILED DESCRIPTIONIn this description, references to “an embodiment,” “one embodiment,” “an implementation,” or the like, mean that the particular feature, function, structure or characteristic being described is included in at least one embodiment of the technique introduced here. Occurrences of such phrases in this specification do not necessarily all refer to the same embodiment. On the other hand, the embodiments referred to also are not necessarily mutually exclusive. Additionally, the term “module” refers broadly to software, hardware, or firmware (or any combination thereof) components. Modules are typically functional components that can generate useful data or other output using specified input(s). A module may or may not be self-contained. An application program (also called an “application”) may include one or more modules, or a module can include one or more application programs.
Further, the term “cause” and variations thereof refer to either direct causation or indirect causation. For example, a computer system can “cause” an action by sending a message to a second computer system in order to command, request, or prompt the second computer system to perform the action. Any number of intermediary devices may examine and/or relay the message during this process. In this regard, a device can “cause” an action even though it may not be known to the device whether the action will ultimately be executed.
Additionally, a protocol, such as the USB protocol, may include any of a set of protocols, may include any of various versions of the protocols, may include any of various classes of devices, etc., as would be appreciated by a person of ordinary skill in the art. For example, the USB protocol may include any of the USB mass storage device class, the USB human interface device class, etc., may include any of USB version 1.0, USB version 2.0, USB version 3.0, etc. Further, supporting the protocol may include supporting only a portion of the protocol. For example, supporting the protocol may include supporting only a portion of the set of protocols, only a portion of the various versions of the protocol, only a portion of the classes of devices, etc., or even supporting only a portion of one of the set of protocols.
FIG. 1 is an environment diagram illustrating an environment in which a flash drive is used, consistent with various embodiments. In the embodiment ofenvironment100,user105 hasflash drive110 and desires to transfer data fromlaptop115 tosmartphone120. In this embodiment,laptop115 runs the Microsoft Windows operating system (Windows), includes a standard full size USB port, and supports the USB protocol. In various embodiments,laptop115 and/orsmartphone120 can be any computer system that runs an operating system that supports a USB mass storage protocol, such as Android, iOS, MacOS, OS X, Unix, HP-UX, Solaris, BSD, Linux, etc. The operating system can be a real-time operating system, such as LynxOS, RTLinux, VxWorks, Windows CE, FreeRTOS, etc. Returning to the embodiment ofFIG. 1,user105 can plugUSB connector125 into the USB port oflaptop115. Once connected,laptop115 recognizesflash drive110 as a USB device, and establishes communication.User105, using the Windows interface, initiates a copy command to copy some data, such as a movie, from the hard disk oflaptop115 toflash drive110.
After the movie is copied to the flash drive,user105 removesUSB connector125 from the USB port oflaptop115, and plugsLightning connector130, which is a standard Apple Computer™ (Apple) connector, intosmartphone120, which is an Apple device that runs iOS. Once connected,smartphone120 recognizesflash drive110 as an Apple compatible device, and establishes communication.User105, using the iOS interface, initiates a copy command to copy the movie fromflash drive125 tosmartphone120.
FIG. 2 is a block diagram illustrating an example of a flash drive that utilizes two controller modules for two sets of functionality, consistent with various embodiments.Flash drive200 includesfirst connector205,second connector210,mux215,latch220,Security IC225,iOS interface controller230,storage controller235, andflash memory240.Storage controller235 is utilized for a first set of functionality that includes handling the USB protocol and managing communication withflash memory240.iOS interface controller230 is utilized for a second set of functionality that includes Apple iOS specific processing and communicating with a security IC or module. In the embodiment ofFIG. 2,first connector205,second connector210,mux215,latch220,Security IC225,iOS interface controller230,storage controller235, andflash memory240 are each separate components that are connected to a printed circuit board (PCB, not shown), and the PCB electrically connects the connection points, also referred to as pins, of the various components. Further,Security IC225,iOS interface controller230,storage controller235, andflash memory240 are each integrated circuits (ICs). While225-240 are separate ICs in this embodiment, in other embodiments, any and/or all of225-240, as well asmux215 andlatch220, can be integrated into one or more ICs.
In the embodiment ofFIG. 2,first connector205 is a standard Apple connector, such as an Apple Lightning connector, an Apple 30-pin connector, or an Apple Thunderbolt connector, and can be used to connect to a computing device that runs iOS.Second connector210 is a standard connector for a non-iOS computing device (i.e. a computing device running an operating system other than any version of iOS), such as a full size USB connector, a standard USB connector, a standard A-type USB connector, a B-type USB connector, a mini USB connector, a mini USB A-type connector, a mini USB B-type connector, a micro USB connector, a micro USB A-type connector, a micro USB B-type connector, or a UC-E6 connector.Second connector210 can be used to connect to a non-iOS computing device, and, in some embodiments, can be used to connect to a computing device that runs iOS. A standard connector can be an above described standard Apple connector, or an above described standard connector for a non-iOS computing device, or any other industry standard connector. In various embodiments,first connector205 is a first type of standard connector, andsecond connector210 is a second type of standard connector.
Returning to the example ofFIG. 1,Lightning connector130 can befirst connector205, andUSB connector125 can besecond connector210. Using the example ofFIG. 1,user105 can plugsecond connector210 into the USB port oflaptop115. Once connected, a power pin ofsecond connector210 is electrically connected to the 5.5V power supply oflaptop115, and the power pin transmits the 5.5V to latch220.
At this point, the power pins offirst connector205 are unconnected.Latch220, which can be a cross-coupled NAND latch, detects that the 5.5V power pin fromsecond connector210 is active, and that the 3.3V power pin fromfirst connector205 is inactive.Latch220 is set to a second value to indicate thatsecond connector210 is active (i.e. to indicate that reads and writes of the flash drive will go through this connector). The output oflatch220 is electrically connected to the select input ofmux215, and when the select input is set to the second value, the mux selects the data pins ofsecond connector210 to send toiOS interface controller230. The output oflatch220 is also electrically connected toiOS interface controller230 andstorage controller235. When the output oflatch220 is set to the second value,iOS interface controller230 andstorage controller235 can sample the output oflatch220 to determine whethersecond connector210 is active.
Components215-240 can be powered by the appropriate power supply pin (e.g. the 3.3V power pin offirst connector205, the 5.5V power pin ofsecond connector210, by a combination of the two power pins, by a different power pin offirst connector205 orsecond connector210, etc.). Once components215-240 are powered up, the components go through a reset sequence, which initializes the components and begins the execution of an application program that is stored inflash memory240 to effectively “boot” the flash drive into a ready state.
At some point after the flash drive is in the ready state,laptop115 sends a USB protocol message toflash drive200 to initiate communication. The USB protocol message passes throughmux215 toiOS interface controller230, which relates the USB protocol message tostorage controller235.Storage controller235 is configured, via customization of the IC design ofstorage controller235, and/or via software thatstorage controller235 executes, to communicate using the USB protocol.Storage controller235 receives and recognizes the USB commands, and acts accordingly to establish a communication channel betweenlaptop115 andflash drive200.User105, using the Windows interface, initiates a copy command to copy some data, such as a movie, from the hard disk oflaptop115 toflash drive110.Laptop115, utilizing a series of USB commands, sends the movie viasecond connector210 andmux215 toiOS interface controller230, which forwards the data tostorage controller235, which acts according to the USB commands and writes the movie toflash memory240.
Storage controller235 is also configured, via customization of the IC design ofstorage controller235, and/or via software thatstorage controller235 executes, to manage communications withflash memory240.Storage controller235 can be a module that is optimized to manage communications with a flash memory, which includes managing the reading of data from, the writing of data to, and the erasing of data at the flash memory. Managing communications with a flash memory can require certain capabilities, such as the ability to manage the data of the flash memory in order to properly handle “erase blocks.” Flash memory, such asflash memory240, can be NAND or NOR flash, and can have “erase blocks”, an erase block being the smallest unit of flash memory that can be erased at a time. Erase blocks are substantially larger than the smallest unit of memory that can be read or written. For example, NAND flash memory can be read or written in a random access fashion in units typically sized in the range of 2 KB to 4 KB. However, an erase block may be on the order of 128 KB or 256 KB or even larger.
As a result, when getting ready to erase data or commands fromflash memory240,storage controller235 needs to be capable of ensuring that only data that is intended to be erased is actually erased.Storage controller235 can ensure this by managing the data so that the erase block offlash memory240 to be erased contains exclusively data to be erased.Storage controller235 can also ensure this by reading the data or commands that are in the erase block to be erased, but are not intended to be erased, and storing the data or commands in temporary storage memory, which can be part ofstorage controller235 or can be part of another module.Storage controller235 can then safely erase the erase block containing the mix of to be erased and not to be erased data/commands. Once the erase block is erased, the data/commands that are not intended to be erased can be read from temporary storage memory and written back toflash memory240.
After the movie is copied toflash drive200,user105 unplugsflash drive200 fromlaptop115. At this point there is no power connected to any of components205-240. However, being a non-volatile memory,flash memory240 retains the data that was written to it.
Later,first connector205 is connected tosmartphone120 and the power pin offirst connector205 is electrically connected to the 3.3V power supply ofsmartphone120. At this point, the power pins ofsecond connector210 are unconnected.Latch220 detects that the 3.3V power pin fromfirst connector205 is active, and that the 5.5V power pin fromsecond connector210 is inactive, and latch220 is set to a first value to indicate thatfirst connector205 is active.Mux215, based on the mux select being set to the first value, selects the data pins offirst connector205 to send toiOS interface controller230.iOS interface controller230 andstorage controller235, based on the output oflatch220, can determine whetherfirst connector205 is active. The flash drive “boots” as previously described. At some point after the flash drive is in the ready state,smartphone120 sends a Peripheral Protocol message toflash drive200 to initiate communication.
A Peripheral Protocol is a protocol and/or set of commands that enables a peripheral device, such asflash drive200, to communicate with an iOS device. An iOS device is a computing device that runs any version of iOS. Even when two devices have physically compatible connectors, the two devices may not be compatible, for example, due to incompatible communication protocols. For example, while an Apple computing device running iOS may have a full size USB connector, the Apple computing device may have an incompatible communication protocol. When a user plugs the flash drive into the full size USB connector of the Apple computing device, the Apple computing device may display a message stating that the flash drive is an unrecognized or unsupported device. This may be because the Apple computing device doesn't recognize devices that support only the mass storage class USB protocols, even though the device is connected via a standard USB connector.
As a result of having incompatible communication protocols, the flash drive cannot be used to send data to or obtain data from the incompatible Apple computing device, even though the flash drive and the Apple computing device can be connected via a physically compatible connector. In such a case, the Apple computing device may require that the peripheral device support the Peripheral Protocol in addition to the USB mass storage class protocols. The Peripheral Protocol can be, for example, an Apple proprietary peripheral protocol, details of which may be available under Apple's MFi licensing program. Examples of Peripheral Protocols include the accessory protocols referred to in U.S. Pat. No. 8,590,036 entitled “Method and system for authenticating an accessory,” which was filed on Jan. 10, 2012.
To be compatible with a peripheral device, the Apple computing device can further require that the peripheral device support an authentication scheme that requires the peripheral to include a Security IC, such assecurity IC225. A Security IC is an IC that can receive a message from a computing device, such as an iOS device, and can provide a response to the computing device, enabling the computing device to authenticate the peripheral device that includes the Security IC.
Returning to the example, the Peripheral Protocol message passes throughmux215 toiOS interface controller230.iOS interface controller230 is configured, via customization of the IC design ofiOS interface controller230, and/or via software thatiOS interface controller230 executes, to communicate using the Peripheral Protocol.iOS interface controller230 receives and recognizes the Peripheral Protocol commands. In order to establish a communication channel with an Apple iOS device, such assmartphone120,flash drive200 can be authorized bysmartphone120.Smartphone120 sends a message to initiate the authorization process, in response to whichiOS controller130 communicates withSecurity IC225 to obtain authentication data.Security IC225 sends the authentication data toiOS interface controller230, which forwards the authentication data tosmartphone120 to authorize the flash drive and enable data transfers between the flash drive andsmartphone120.
User105, using the iOS interface, initiates a copy command to copy the movie fromflash drive200 tosmartphone120.Smartphone120, utilizing a series of commands, which can include either USB commands, which are handled bystorage controller235, or Peripheral Protocol commands, which are handled byiOS interface controller230, or both USB and Peripheral Protocol commands, initiates the copy of the movie.Storage controller235 reads the movie fromflash memory240 and sends the movie toiOS interface controller230, which forwards the movie viamux215 andfirst connector205, tosmartphone120.
FIG. 3 is a block diagram illustrating an example of a flash drive that integrates the two sets of functionality using one controller module, consistent with various embodiments.Flash drive300 includesfirst connector205,second connector210,mux215,latch220,Security IC225,storage controller335, andflash memory240. In some embodiments,storage controller335 is the same as, or has the same functionality as,storage controller235.Storage controller335 is utilized for a first set of functionality that includes handling the USB protocol and managing communication withflash memory240, as well as for a second set of functionality that includes Apple iOS specific processing and communicating with a Security IC. The second set of functionality was, in the embodiment ofFIG. 2, handled byiOS interface controller230, which is notably not included inflash drive300. In various embodiments, the first set of functionality includes handling a communication protocol other than the USB protocol, and managing communication withflash memory240. The second set of functionality includes handling a communication protocol, such as an Apple peripheral protocol, and communicating with a Security IC.
In the embodiment ofFIG. 3,first connector205,second connector210,mux215,latch220,Security IC225,storage controller335, andflash memory240 are each separate components that are connected to a PCB (not shown), and the PCB electrically connects the pins of the various components. Further,Security IC225,storage controller335, andflash memory240 are each integrated circuits (ICs). WhileSecurity IC225,storage controller335, andflash memory240 are separate ICs in this embodiment, in other embodiments, any and/or all ofSecurity IC225,storage controller335, andflash memory240, as well asmux215 andlatch220, can be integrated into one or more ICs.
Once again referring to the example ofFIG. 1,flash drive300 would handle copying the movie fromlaptop115, and sending the movie tosmartphone120, in a way similar toflash drive200, with some notable differences that are the result of or that enable integrating the two sets of functionality usingstorage processor335. The processing that is handled byiOS interface controller230 andstorage controller235 ofFIG. 2 can be handled bystorage controller335 ofFIG. 3. As wasstorage controller235 in the example ofFIG. 2,storage controller335 is configured, via customization of the IC design ofstorage controller335, and/or via software thatstorage controller335 executes, to communicate using the USB protocol, as well as to manage communications withflash memory240. Unlikestorage controller235 in the example ofFIG. 2,storage controller335 is also configured, via customization of the IC design ofstorage controller335, and/or via software thatstorage controller335 executes, to communicate using the Peripheral Protocol and to communicate withSecurity IC225. Whenstorage controller335 is configured via software and not via customization of the IC design ofstorage controller335,storage controller335 can be the same as or have the same functionality asstorage controller235.
FIG. 4 is a block diagram illustrating an example of a flash drive that integrates the two sets of functionality via customization of the IC design of a storage controller, consistent with various embodiments.Flash drive400 includesfirst connector205,second connector210,mux215,latch220,Security IC225,storage controller335,flash interface controller405, temporary storage memory410, USB/PP/SIC controller415, andflash memory240. In some embodiments,storage controller435 is the same as, or has the same functionality as,storage controller335 ofFIG. 3.
In the embodiment ofFIG. 4,storage controller435 is utilized for a first set of functionality that includes handling the USB protocol and managing communication withflash memory240, as well as for a second set of functionality that includes Apple iOS specific processing and communicating with a Security IC. A sub-module ofstorage controller435,flash interface controller405, manages communication withflash memory240, and a second sub-module ofstorage controller435, USB/PP/SIC controller415, handles the USB protocol, Apple iOS specific processing, and communicating with the Security IC.
WhileFIG. 4 illustrates the two sets of functionality being integrated via customization of the IC design of a storage controller, the functionality can equivalently be integrated via customized software that is executed by a programmable IC, such as a microcontroller or application specific integrated circuit (ASIC), or via a combination of a customized IC design and customized software. Also referred to as modules, the blocks of the customized IC ofFIG. 4 can have equivalent modules in customized software when the functionality is integrated via the customized software.
Once again referring to the example ofFIG. 1,flash drive400 of the embodiment ofFIG. 4 would handle copying the movie fromlaptop115, and sending the movie tosmartphone120, in a way that can be similar to or the same asflash drive300 ofFIG. 3. Afterflash drive400 is connected tolaptop115 and is in the ready state, the movie copy can be initiated bylaptop115 sending a message, such as a USB protocol message, toflash drive400 to initiate communication and to send the first data of the movie. The first data can pass throughsecond connector210 andmux215 tostorage controller435, where it passes to sub-module USB/PP/SIC controller415. When USB/PP/SIC controller415 receives the first data, it can store the first data intemporary storage memory410B, to which it is connected.
Flash memory can be read or written in a random access fashion in units typically sized in the range of 2 KB to 4 KB, sometimes called blocks. The first data being copied fromlaptop115 can be stored intemporary storage memory410B until sufficient movie and/or other data has been received to trigger a write of a block offlash memory240. The first data can alternately or additionally be sent toflash interface controller405, where it can be stored intemporary storage memory410A until sufficient movie and/or other data has been received to trigger a write of a block offlash memory240.
Once sufficient data has been received to trigger a write, the temporary storage memory storing the movie and/or other data can be read and the data to be written to the block offlash memory240 can be sent toflash interface controller405.Flash interface controller405 can write the data to the block offlash memory240. Once the data is written toflash memory240, the corresponding memory of the temporary storage memory holding the data can be made available for other purposes. Additionally, commands that are sent bylaptop115, such as USB commands, can also be stored intemporary storage memory410B until USB/PP/SIC controller415 is able to handle them appropriately.
After being disconnected fromlaptop115, and connected tosmartphone120,flash drive400 can send the movie tosmartphone120. The movie data to be sent resides inflash memory240. At some point after the flash drive is in the ready state,smartphone120 sends an Peripheral Protocol message toflash drive400 to initiate communication. The Peripheral Protocol message passes throughfirst connector205 andmux215 tostorage controller435, where the message passes to sub-module USB/PP/SIC controller415. USB/PP/SIC controller415 receives the Peripheral Protocol commands and can send the commands totemporary storage memory410B until USB/PP/SIC controller415 is ready to handle the commands.
As part of establishing a communication channel withflash drive400,smartphone120 sends a message toflash drive400 to initiate an authorization process, in response to which USB/PP/SIC controller415 communicates withSecurity IC225 to obtain authentication data.Security IC225 sends the authentication data to USB/PP/SIC controller415, which forwards the authentication data tosmartphone120 to authorizeflash drive400 and enable data transfers betweenflash drive400 andsmartphone120. In some embodiments, USB/PP/SIC controller415 processes the authentication data before sending a message based on the processing of the authentication data tosmartphone120 to support authorization offlash drive400 and enable data transfers betweenflash drive400 andsmartphone120.
User105, using the iOS interface, initiates a copy command to copy the movie fromflash drive400 tosmartphone120.Smartphone120, utilizing a series of commands which can include either USB commands or Peripheral Protocol commands, both of which are handled by USB/PP/SIC controller415, initiates the copy of the movie. USB/PP/SIC controller415 sends a message toflash interface controller405, in response to whichflash interface controller405 reads the movie fromflash memory240 and sends the movie to USB/PP/SIC controller415, which forwards the movie viamux215 andfirst connector205, tosmartphone120.
In some embodiments,flash interface controller405 can read the movie data to be sent fromflash memory240 and store the data intemporary storage memory410A.Flash interface controller405 can alternately, or additionally, send the movie data to USB/PP/SIC controller415, which can store the movie data to be sent intemporary storage memory410B. Once USB/PP/SIC controller415 is ready to send the movie data tosmartphone120, it can read the movie data fromtemporary storage memory410B and send the movie data tosmartphone120, or can receive the movie data directly fromflash interface controller405 and send the movie data tosmartphone120. Additionally, commands that are to be sent can be stored intemporary storage memory410B until USB/PP/SIC controller415 is ready to send the commands to the connected device.
Flash interface controller405 can also manage the erasing offlash memory240. As discussed earlier, flash memory has “erase blocks”, an erase block being the smallest unit of flash memory that can be erased at a time. Erase blocks are substantially larger than the smallest unit of memory that can be read or written. For example, NAND flash memory can be read or written in a random access fashion in units typically sized in the range of 2 KB to 4 KB. However, an erase block may be on the order of 128 KB or 256 KB or even larger. As a result, when getting ready to erase data or commands fromflash memory240, a controller that manages communication with a flash drive, such asflash interface controller405, should ensure that only data that is intended to be erased is actually erased.Flash interface controller405 can ensure this by managing the data so that the erase block offlash memory240 that is to be erased exclusively contains data to be erased.Flash interface controller405 can also ensure this by reading the data or commands that are in the erase block to be erased, but are not intended to be erased, and by storing the data or commands intemporary storage memory410B.Flash interface controller405 can then safely erase the erase block containing the mix of to be erased and not to be erased data/commands. Once the erase block is erased, the data/commands that are not intended to be erased can be read fromtemporary storage memory410B and written back toflash memory240.
Those skilled in the art will appreciate that the logic illustrated inFIGS. 1-4 and described above, and in the activity diagram discussed below, may be altered in a various ways. For example, the order of the logic may be rearranged, substeps may be performed in parallel, illustrated logic may be omitted, other logic may be included, etc. Further, the scope of the disclosed technique also includes embodiments implementing the described functionality in these various other ways. Accordingly, the scope of the disclosed technique is intended to embrace all such alternatives, modifications, and variations as fall within the scope of the claims, together with all equivalents thereof.
FIG. 5 is an activity diagram illustrating the use offlash drive400 to copy data from non-iOS computing device505 (NCD505) to iOS computing device510 (ICD510), consistent with various embodiments.NCD505 is a computing device that is not running iOS, such aslaptop115, andICD510 is a computing device that is running iOS, such assmartphone120. While this diagram illustrates usingflash drive400 to copy data fromNCD505 toICD510, data can similarly be copied fromICD510 toNCD505 usingflash drive400.
A user, such asuser105, plugs a connector offlash drive400, such as a male USB connector, into a compatible connector ofNCD505, such as a female USB connector. After being plugged in,flash drive400 powers up and goes through a reset sequence where it in initialized and put in a ready state. In some embodiments, during the initializationprocess flash drive400 reads and executes software fromflash memory240. For example, after going through the reset sequence,flash interface controller405 reads data fromflash memory240. The data can be software to be executed by eitherflash interface controller405 or USB/PP/SIC controller415. The software can be executed to putflash drive400 into a ready state.
Onceflash drive400 is in the ready state, eitherflash drive400 orNCD505 can initiate communication between the two devices. In response to being plugged into the USB connector ofNCD505 and effectively “booting” to the ready state,flash drive400 can determine a protocol to use to send a message toNCD505 to initiate communication between the devices (step518). For example,flash drive400 can determine, based on being plugged into a USB connector, to send a USB command or message toNCD505 to initiate communication (step520). In response to receiving the USB command or message,NCD505 can send a response to establish communication between the devices (step512). In some embodiments or cases,NCD505 can send the message to initiate communication toflash drive400, andflash drive400 can send a response to establish communication.
At some point in time,user105 indicates that he wants to copy data, such as a movie, fromNCD505 toflash drive400. For example,user105 can utilize a user interface of a non-iOS operating system that is running onNCD505, such as the Windows operating system running onlaptop115, to indicate to copy the movie to flash drive400 (step514).NCD505 can send the movie toflash drive400 using the USB protocol and USB protocol commands (step516).Flash drive400 receives the commands at USB/PP/SIC controller415, where the USB commands are interpreted. Based on the received USB commands, USB/PP/SIC controller415 determines to write the movie data to flash memory240 (step522), and can forward the movie data toflash interface controller405, which manages the writing of the data to flash memory240 (step524). After the movie data is written toflash drive400,user105 unplugsflash drive400 from the USB connector ofNCD505.
At a later point in time,user105 plugs a connector offlash drive400, such as a male Lightning connector, into a compatible connector ofNCD510, such as a female Lightning connector. After being plugged in,flash drive400 powers up and goes through a reset sequence; in which it is initialized and put in a ready state. Onceflash drive400 is in the ready state, eitherflash drive400 orNCD510 can initiate communication between the two devices. In response to being plugged into the Lightning connector ofNCD510 and effectively “booting” to the ready state,flash drive400 can determine a protocol to use to send a message toNCD510 to initiate communication between the devices (step526). For example,flash drive400 can determine, based on being plugged into a Lightning connector, to send a Peripheral Protocol command or message toNCD510 to initiate communication (step528). In response to receiving the Peripheral Protocol command or message,NCD510 can send a Peripheral Protocol message to authenticate flash drive400 (step538).
Upon receiving the Peripheral Protocol message,flash drive400 determines that a device authentication has been initiated (step530). The Peripheral Protocol message is received by USB/PP/SIC controller415, where the Peripheral Protocol commands are interpreted. USB/PP/SIC controller415 determines that an authentication has been initiated (step530), and USB/PP/SIC controller415 sends a message toSecurity IC225 to obtain authentication data.Security IC225 sends the authentication data to USB/PP/SIC controller415, which forwards the authentication data to NCD510 (step532) to authorizeflash drive400 to enable data transfers betweenflash drive400 andNCD510. In some embodiments, USB/PP/SIC controller415 processes the authentication data before sending transformed data toNCD510 to authorizeflash drive400. After receiving the authorization data (or, in some embodiments, the transformed data),NCD510 uses the authentication data to validate thatflash drive400 is an authorized device. Once authorized,NCD510 sends a response to establish communication with flash drive400 (step540).
At a later point in time,user105 indicates that he wants to copy or stream the movie fromflash drive400 toICD510. For example,user105 utilizes a user interface of the iOS that is running onICD510, such assmartphone120, to indicate to copy or stream the movie fromflash drive400 to ICD510 (step542). In response to the indication to copy or stream the movie,ICD510 sends a request for the movie to flash drive400 (step544) by sending, e.g., a USB command requesting movie data toflash drive400, where the command is directed to USB/PP/SIC controller415, where the USB command is interpreted. Based on the received USB command, USB/PP/SIC controller415 determines to read the movie data from flash memory240 (step534), and forwards the read request toflash interface controller405, which manages the reading of the movie data fromflash memory240. After reading the movie data fromflash memory240,flash interface controller405 sends or streams the movie data to USB/PP/SIC controller415, which sends or streams the data to ICD510 (step536), where the data is received (step546).
In some embodiments wherestorage controller435 is configured, via software thatstorage controller435 executes, to integrate the various functionality that is implemented oniOS interface controller230 andstorage controller235 ofFIG. 2, a number of issues make successful integration challenging. For example,storage controller435 may be the same as or have the same functionality asstorage controller235, which is not utilized (in the embodiment ofFIG. 2) to handle Peripheral Protocol communication, nor to handle communications withSecurity IC225. Further, when handling data transfer in software at the data transfer application level, the data transfer application may not be notified of error detection made at a lower level, such as by USB level commands, and/or the error detection may not be visible to the data transfer application. As a result, implementing these functions via software that is executed bystorage controller435 may be quite challenging. For example,storage controller435 may not have the performance capacity needed to handle streaming a movie to a computing device for display on the computing device, or may not be able to properly handle errors that occur during transmission of the data.
To overcome a performance limitation, in some embodiments, a Connected Peripheral (CP) channel can be logically created in order to enable the use of Small Computer System Interface (SCSI) commands. A CP channel is a communication channel between two components that enables the two components to communicate using a protocol and/or commands beyond those of the Peripheral Protocol. For example, to overcome performance limitations of using a module not designed to implement the Peripheral Protocol, such asstorage controller435, a CP channel can be implemented in order to enable Small Computer System Interface (SCSI) commands to be used.Storage controller435, being designed for data storage applications, supports SCSI commands, which are not supported by the Peripheral Protocol. By setting up a CP channel, these much higher performance SCSI commands can be used to speed up the data transfer by as much as an order of magnitude, as compared to executing the data transfer using only the protocol and/or commands of the Peripheral Protocol.
To implement the CP channel,storage controller435 can be configured to create two USB end points to use for the CP channel, one logically atflash drive400 and a second atICD510. Once established, the CP channel can be used to send data using commands other than USB commands. For example,storage controller235 may be designed and optimized for storage applications, and may support high performance data transfer commands, such as SCSI commands. The CP channel can be used to transfer the movie data fromflash drive400 toICD510, and/or fromICD510 toflash drive400, using SCSI commands. By utilizing SCSI commands, data transfer rates may be increased by an order of magnitude or even more.
To overcome an issue caused by a data transfer application that handles data transfer to/fromflash drive400 not being notified of transmission errors, or the transmission errors not being visible to the data transfer application, these errors can be detected at the data transfer application level. For example, the USB protocol can include a cyclic redundancy checksum (CRC), which can be checked at the USB protocol level. If an error is detected by the CRC, because this error is detected at a lower level than the data transfer application, the data transfer application may not be notified of the error, and/or the error may not be visible to the data transfer application. Examples of other standard USB error detection mechanisms include detection of an invalid Product ID (PID) sequence, detection of a missed packed, detection of a token packet without a corresponding detection of a data packet that corresponds to the token packet within a bus transaction timeout period, etc. Other standard USB error detection mechanisms can be those called for by a USB specification, such as the USB 1.0, 1.1, 2.0, 3.0, 3.1, etc. versions of the USB specification.
To address this issue, in some embodiments, a check to detect errors that would be detected by a standard USB error detection mechanism can be implemented at the data transfer application level, and the errors can be detected and fixed prior to being checked by the standard USB error detection mechanism. By doing this, errors that would otherwise be detected by a lower level USB error detections mechanism, such as the CRC, can be detected and addressed at the data transfer application level. Further, by fixing the data before the USB error detection mechanism is utilized to detect errors, the data transfer application can ensure that no errors are present that would otherwise be detected by the USB error detection mechanism, and the issues related to errors being detected at the lower level can be bypassed.
As one example of the error issue, iOS may not allow a storage device, such asflash drive400, to be recognized as a storage device when plugged into a connector, such as a Lightning connector. Whenflash drive400 is plugged into, for example, a computing device that runs the Android operating system (OS),flash drive400 can be recognized as a storage device by the Android OS. As a result, much of the data transmission can be handled by the file system of the Android OS. In such a case, when a CRC error is encountered during file transfer, lower parts of the file system can properly handle the error. However, when iOS does not allowflash drive400 to be recognized as a storage device, the file system of the iOS cannot be used to handle data transmission. As a result, when an error such as a CRC error is encountered during file transfer, and with the file system software not available, there may be no other software available to properly handle the error.
This problem can be solved by implementing a file system and including the file system with the data transfer application. When the iOS ofICD510 doesn't allowflash drive400 to be recognized as a storage device, the data transfer application can utilize its own file system to transfer data. Errors such as those that would be detected and addressed by the file system of the iOS (in some cases in conjunction with the iOS) can, instead, be detected and addressed by the file system of the data transfer application (in some cases in conjunction with the data transfer application). The data transfer application software, as well as the associated file system software, can be stored inflash memory240.Flash drive400 can read the data transfer and file system software fromflash memory240, send the software toICD510, and cause the software to be executed byICD510.
Without some form of protection,flash drive400 could be damaged when bothfirst connector205 andsecond connector210 are connected to computing devices. For example, the computing devices connected to the two connectors can attempt conflicting writes. This could result in corruption of the data inflash memory240, or even physical damage toflash drive400. To prevent this, in someembodiments flash drive400 includes protection circuitry to detect when both interfaces are connected. This protection circuitry prevents any damage or malfunction that could result from both interfaces trying to simultaneously access the flash memory. Alternately,flash drive400 can possess a physical mechanism that prevents both connectors from being connected to computing devices at the same time.
As a second example, a first power supply of a first computing device connected tofirst connector205, and a second power supply of a second computing device connected tosecond connector210, can interact, e.g., via a short circuit, and the interaction can damage a component coupled to either the first or the second power supplies. In some embodiments,flash drive400 includes protection circuitry, that prevents the first power supply and the second power supply from electrically interacting to damage any component coupled to either the first or the second power supplies, to prevent damage when each of the connectors of the flash drive are connected to a different computing device.
In some embodiments, when bothfirst connector205 andsecond connector210 are connected to computing devices at the same time,storage controller435 can further be configured to differentiate between a first USB host that is logically atNCD505, and a second USB host that is logically atICD510. For example,storage controller435 can differentiate between the hosts based on the value storage inlatch220, or can differentiate between the hosts based on data that is received from the computing device to whichflash drive400 is connected. The data that is received can be, for example, descriptors, andstorage controller435 can differentiate between the hosts based on the descriptors.
Further,flash drive400 can determine with which of the two connected computing devices to communicate. For example,flash drive400 can determine with which of the two connected computing devices to communicate based on the order that the two devices were connected to the respective compatible connectors offlash drive400, based on the order that communication happens betweenflash drive200 and each of the two computing devices, based on which of the two computing devices indicates that communicating with that particular computing device is higher priority, etc.
FIG. 6 is a block diagram illustrating an example of a flash drive with two controller modules that enables current to be passed from a source device to a mobile device, consistent with various embodiments.Flash drive600 includesfirst connector205,second connector210,flash memory240,interface controller630,storage controller635, power switches650 and655,fuse660, transient voltage suppressor (TVS)665,USB switch670, host detectlogic675, andresistors680 and685.Flash drive600 can further include additional components.Interface controller630 can beiOS interface controller230 ofFIG. 2, as well as other implementations.Storage controller635 can bestorage controller235, as well as other implementations.USB switch670 can be mux215, as well as other implementations. Host detectlogic675, which can be a logic module, can belatch220, as well as other implementations. In some embodiments,flash drive600 includessecurity IC225, which is coupled tointerface controller635.
Storage controller635 is utilized for a first set of functionality that includes handling the USB protocol and managing communication withflash memory240. In other embodiments,storage controller635 handles other protocols for communicating with other devices, such as a Peripheral Protocol.Interface controller630 is utilized for a second set of functionality that includes interfacing with an external computing device, such as an Apple iOS device, a computer running a version of the Windows operating system, a mobile device running a version of the Android™ operating system, etc. In some embodiments,interface controller630 is further utilized to communicate with a security IC or module, such asSecurity IC225.
In the embodiment ofFIG. 6,first connector205,second connector210,flash memory240,interface controller630,storage controller635, power switches650 and655,fuse660,TVS665,USB switch670, host detectlogic675, andresistors680 and685 are each separate components that are connected to a PCB (not shown), and the PCB electrically connects the pins of the various components to enable the components to communicate with each other. In various embodiments, any offlash memory240,interface controller630,storage controller635, power switches650 and655,fuse660,TVS665,USB switch670, host detectlogic675, orresistors680 and685 can be integrated to create one or more components that integrate the functionality of these components, or can be sub-divided to create multiple components that, combined, include the functionality of one or more of these components. Further, these components can be connected to multiple PCBs, with the multiple PCBs coupled together via wires or by another mechanism that enables the components to communicate with each other.
Returning to the example ofFIG. 1,flash drive600 can beflash drive110,lightning connector130 can befirst connector205, andUSB connector125 can besecond connector210. Using the example ofFIG. 1,user105 can plugsecond connector210 into a USB port oflaptop115. Once connected, a power pin ofsecond connector210 is electrically connected to the 5.5V power supply oflaptop115, and the power pin transmits the 5.5V to host detectlogic675.
At this point, no device is connected tofirst connector205, and the power pins offirst connector205 are unconnected. Host detectlogic675 determines which device of devices that are connected toflash drive600, viafirst connector205 orsecond connector210, is the host device to whichflash drive600 communicates. In some embodiments, the host device is a USB host, andflash drive600 sends a message or signal to the host device to establish the host device as the USB host. Subsequent communications between the host device andflash drive600 can be based onflash drive600 being established as the USB host.
An output of host detectlogic675controls USB switch670, which is a data switch, to enable the host device to communicate withinterface controller630 by configuringUSB switch670 to allow data to pass betweeninterface controller630 andsecond connector210. Another output of host detectlogic675, to identify which device is the host and whether there are one or two devices connected toflash drive600, is coupled tointerface controller630 andstorage controller635.
Host detectlogic675 can use any of various algorithms/mechanisms to determine which device is the host when multiple devices are connected toflash drive600. In some embodiments, host detectlogic675 determines which device is the host device based on which device was first connected to and powered upflash drive600. In other embodiments, host detectlogic675 sets, when two devices are connected toflash drive600, the host to the device connected to a prioritized connector. For example, when both first andsecond connectors205 and210 are connected to devices, host detectlogic675 can determine that the device connected tosecond connector210 is the host, even whenflash drive600 was initially connected to a device viafirst connector205, and the device was initially set as the host.
In the example ofFIG. 6, host detectlogic675 determines the host based on a prioritization of the connectors, where a device connected tofirst connector205 is determined to be the host when devices are connected to both first andsecond connectors205 and210. Host detectlogic675 detects that the 5.5V power pin fromsecond connector210 is active, and that the 3.3V power pin fromfirst connector205 is inactive, and determines that the device connected tosecond connector210, which islaptop115, is the host. Host detectlogic675 further determines that there is only one device connected toflash drive600. The output of host detectlogic675 that controlsUSB switch670 is set to a second value to indicate that the device connected tosecond connector210 is the host. The output of host detectlogic675 is electrically connected to the select input ofUSB switch670. A second output of host detectlogic675 is electrically connected to interfacecontroller630 andstorage controller635, and is set to a value that indicates both that the device connected tosecond connector210 is the host, and thatflash drive600 is connected to one device.
When the select input toUSB switch670 is set to the second value,USB switch670 enables the data pins ofsecond connector210 to be coupled tointerface controller630, such that data can be sent back and forth betweenlaptop115 andinterface controller630. The second output of host detectlogic675, which is connected to interfacecontroller630 andstorage controller635, can be sampled byinterface controller630 andstorage controller635 to determine that the device connected tosecond connector210 is the host and thatflash drive600 is connected to one device.
The various components offlash drive600 can be powered by the appropriate power supply pin. Prior toflash drive600 being connected to any device, the voltage of the three nodes to whichresistors680 and685 are connected are all the same, so the voltage of the node between the two resistors is the same as the voltage of the ground node to whichresistor685 is connected. Assecond connector210 is connected tolaptop115, the 5.5V output ofsecond connector210 powers up and current flows throughresistors680 and685 to ground resulting in the voltage of the node between the two resistors increasing relative to the ground node. The node between the two resistors is connected topower switch650, and sets the switch to an appropriate state.
When the 5.5V power is available, the voltage of the node between the two resistors increases, disablingpower switch650 and preventing 3.3V power from flowing fromfirst connector205 tointerface controller630,storage controller635, orflash memory240.Interface controller630 includes a power converter that generates 3.3V from the 5.5V power supply. When the 5.5V power is available,interface controller630 supplies 3.3V power tostorage controller635 andflash memory240. When the 5.5V power ofsecond connector210 is not available, the voltage of the node between the two resistors is at ground, thereby enablingpower switch650 and enabling 3.3V power to flow fromfirst connector205 tointerface controller630,storage controller635, andflash memory240.
Onceflash drive600 is powered up, the components go through a reset sequence, which initializes the components and begins the execution of an application program that is stored inflash memory240 to effectively “boot” the flash drive into a ready state. Related to this “boot” process, an enumeration process is initiated whereflash drive600 andlaptop115 communicate to identify device type. In some embodiments, during the enumeration process,flash drive600 andlaptop115 communicate to determine an allowable amount of power forflash drive600 to draw from the USB port oflaptop115, andflash drive600 limits its power draw accordingly. Limiting its power draw can also includeflash drive600 limiting the power draw of a second device that is connected to the flash drive, and that can draw power fromflash drive600.
At some point afterflash drive600 is in the ready state,laptop115 sends a USB protocol message toflash drive600 to initiate communication. The USB protocol message passes throughUSB switch670 tointerface controller630, which relates the USB protocol message tostorage controller635.Storage controller635 is configured, via customization of the IC design ofstorage controller635, and/or via software thatstorage controller635 executes, to communicate using the USB protocol.Storage controller635 receives and recognizes the USB commands, and acts accordingly to establish a communication channel betweenlaptop115 andflash drive600.User105, using the Windows interface, initiates a copy command to copy some data, such as a movie, fromlaptop115 toflash drive600.
Laptop115, utilizing a series of USB commands, sends the movie viasecond connector210 andUSB switch670 tointerface controller630, which forwards the data tostorage controller635, which acts according to the USB commands and writes the movie toflash memory240.Storage controller635 is also configured, via customization of the IC design ofstorage controller635, and/or via software thatstorage controller635 executes, to manage communications withflash memory240, similar tostorage controller235.
After the movie is copied toflash drive600,user105 plugs the flash drive intosmartphone120, so thatflash drive600 is connected to bothlaptop115 andsmartphone120. Host detectlogic675 determines that both the 3.3V power offirst connector205 and the 5.5V power ofsecond connector210 are active. Based onsmartphone120 being connected to the prioritized connector, which isfirst connector205, the output of host detectlogic675 is set to a first value to indicate that the device connected tofirst connector205, which issmartphone120, is the new host device. As discussed above, in some embodiments, the host device is a USB host.Flash drive600 can send a message or signal to the new host device to establish the new host device as the USB host. Subsequent communications between the new host device andflash drive600 can be based onflash drive600 being established as the new USB host.
USB switch670, based on the switch select being set to the first value, enables the data pins offirst connector205 to be coupled tointerface controller630, such that data can be sent back and forth betweensmartphone120 andinterface controller630. The second output of host detectlogic675 that is connected to interfacecontroller630 andstorage controller635 is set to a value that indicates both thatsmartphone120 is the host, and thatflash drive600 is connected to two devices.
Enumeration starts betweenflash drive600 andsmartphone120 to determine the device type. After enumeration, a communication channel is established betweensmartphone120 andflash drive600.Interface controller630 further determines, based on the value of the second output of host detectlogic675, thatflash drive600 is connected to two devices.Interface controller630 controls the state ofpower switch655 with a select signal that is electrically connected topower switch655. By setting the select signal ofpower switch655 to enable the power switch,interface controller630 enables power to flow fromlaptop115 through the 5.5V power signal ofsecond connector210 throughfuse660 throughpower switch655 throughfirst connector205 tosmartphone120.Smartphone120 can use this power in any of various ways, such as topower smartphone120 or to charge a rechargeable battery ofsmartphone120. Fuse660 can be a resettable fuse.TVS665 and fuse660 are used to help prevent damage from power supply over/under voltage to the components offlash drive600 and the devices that are connected toflash drive600. If excessive current flows throughfuse660, the fuse trips and disables the power flow. Fuse660 can be a resettable fuse.TVS665 helps to protect against over/under voltage by clamping the voltage to within a certain range.
In some embodiments, during the enumeration process,flash drive600 andsmartphone115 communicate to determine an allowable amount of power forsmartphone120 to draw fromflash drive600.Flash drive600 can determine the power draw ofsmartphone120 based on the amount of power that can be provided by the USB port oflaptop115 and based on the power consumption of the components offlash drive600. For example, iflaptop115 can provide ten watts of power toflash drive600, and the components offlash drive600 consume one watt, thenflash drive600 should limit the power draw bysmartphone120 to nine watts or less. Ifsmartphone120 can be set to draw either five watts or ten watts,flash drive600 can communicate withsmartphone120 to set the power draw offlash drive600 to five watts (as setting the draw to ten watts would overload the power that can be provided by laptop115).
In some embodiments, such as an embodiment whereflash drive600 includes a security IC such asSecurity IC225,smartphone120 can send a Peripheral Protocol message toflash drive600 to initiate communication and authorizeflash drive600. The Peripheral Protocol message passes throughUSB switch670 tointerface controller630.Interface controller630 is configured, via customization of the IC design ofinterface controller630, and/or via software that interfacecontroller630 executes, to communicate using the Peripheral Protocol.Interface controller630 receives and recognizes the Peripheral Protocol commands. Whensmartphone120 is Apple iOS device,flash drive600 can be authorized bysmartphone120.Smartphone120 sends a message to initiate the authorization process, in response to whichinterface controller630 communicates with the security IC to obtain authentication data. The security IC sends the authentication data to interfacecontroller630, which forwards the authentication data tosmartphone120 to authorize the flash drive and enable data transfers between the flash drive andsmartphone120.
User105 initiates a copy command to copy the movie fromflash drive600 tosmartphone120.Smartphone120, utilizing a series of commands, which can include either USB commands, which are handled bystorage controller635, or Peripheral Protocol commands, which are handled byinterface controller630, or both USB and Peripheral Protocol commands, begins the copy process.Storage controller635 reads the movie fromflash memory240 and sends the movie to interfacecontroller630, which forwards the movie viaUSB switch670 andfirst connector205, tosmartphone120.
FIG. 7 is a block diagram illustrating an example of a flash drive with an integrated controller module that enables current to be passed from a source device to a mobile device, consistent with various embodiments. In the example ofFIG. 7,flash drive700 is the same asflash drive600, except that the functionality ofinterface controller630 andstorage controller635 have been integrated into interface/storage controller730, which can be an IC. Further,flash drive700 can be the same asflash drive300, and can be a different implementation. Interface/storage controller730 can be the same asstorage controller335, and can be a different implementation.
FIG. 8 is a block diagram illustrating an example of a flash drive with a power management module that enables current to be passed from a source device to a mobile device, consistent with various embodiments. In the example ofFIG. 8,flash drive800 can be the same asflash drive300, as well asflash drive700, and can be a different implementation. Interface/storage controller830 can be the same as interface/storage controller730, as well asstorage controller335, and can be a different implementation. Host detectlogic875, which can be a logic module, can be the same as host detectlogic675, and can be a different implementation.Flash drive800 includes several components/modules that are not included in the illustration ofFIG. 7, including interface/storage controller830, host detectlogic875, USB switch890, and USB power management895.Flash drive800 can further include additional components. In some embodiments,flash drive800 includessecurity IC225, which is coupled to interface/storage controller830, and can communicate using Peripheral Protocol commands.
In the embodiment ofFIG. 8,first connector205,second connector210,flash memory240, interface/storage controller830, power switches650 and655,fuse660,TVS665, USB switches670 and890, host detectlogic875, USB power management895, andresistors680 and685 are each separate components that are connected to a PCB (not shown), and the PCB electrically connects the pins of the various components to enable the components to communicate with each other. In various embodiments, any offlash memory240, interface/storage controller830, power switches650 and655,fuse660,TVS665, USB switches670 and890, host detectlogic875, USB power management895, andresistors680 and685 can be integrated to create one or more components that integrate the functionality of these components, or can be sub-divided to create multiple components that, combined, include the functionality of one or more of these components. Further, these components can be connected to multiple PCBs, with the multiple PCBs coupled together via wires or by another mechanism that enables the components to communicate with each other.
Flash drive800 functions similar toflash drive700.Flash drive800 includes USB power management895, which does not appear in the illustration ofFIG. 7, and which is a power management module/component. Returning once again to the example ofFIG. 1,flash drive800 can beflash drive110,lightning connector130 can befirst connector205, andUSB connector125 can besecond connector210. Using the example ofFIG. 1,user105 can plugsecond connector210 into the USB port oflaptop115. Once connected, a power pin ofsecond connector210 is electrically connected to the 5.5V power supply oflaptop115, and the power pin transmits the 5.5V to host detectlogic875.
At this point, no device is connected tofirst connector205, and the power pins offirst connector205 are unconnected. Host detectlogic875 determines which device of devices that are connected toflash drive800, viafirst connector205 orsecond connector210, is the host device to whichflash drive800 communicates. In some embodiments, the host device is a USB host, andflash drive800 sends a message or signal to the host device to establish the host device as the USB host. Subsequent communications between the host device andflash drive800 can be based onflash drive800 being established as the USB host.
An output of host detectlogic875controls USB switch670 and USB switch890 to enable the host device to communicate with USB power management895 during enumeration, and to enable the host device to communicate with interface/storage controller830 at other times. A second output, to identify which device is the host and whether there are one or two devices connected toflash drive800, is coupled to storage/interface controller830. Host detectlogic875 can use any of the various algorithms/mechanisms described above related to host detectlogic675 to determine which device is the host.
In the example ofFIG. 8, host detectlogic875 determines the host based on a prioritization of the connectors, where a device connected tofirst connector205 is determined to be the host when devices are connected to both first andsecond connectors205 and210. Host detectlogic875 detects that the 5.5V power pin fromsecond connector210 is active, and that the 3.3V power pin fromfirst connector205 is inactive. Based on this, host detectlogic875 determines that the device connected tosecond connector210, which islaptop115, is the host, and that there is only one device connected toflash drive800.
Asflash drive800 powers up, the components go through a reset sequence, which initializes the components and begins the execution of an application program that is stored inflash memory240 to effectively “boot” the flash drive into a ready state. Related to this “boot” process, an enumeration process is initiated whereflash drive800 andlaptop115 communicate to identify device type. During the enumeration process,flash drive800 andlaptop115 communicate to determine an allowable amount of power forflash drive800 to draw from the USB port oflaptop115. This power-related communication is handled by USB power management895.
During these power-related communications, the output of host detectlogic875 that controls USB switches670 and890 is set to a value that enables the host to communicate with USB power management895. USB power management895 communicates with the host to determine an allowable amount of power thatflash drive800 can pull from the USB connector of the host.Flash drive800 then limits its power draw accordingly. Limiting its power draw can includeflash drive800 limiting the power draw of a second device that is also connected to the flash drive. For example,flash drive800 can determine thatlaptop115 can provide ten watts, and can determine thatsmartphone120 can draw either five watts or ten watts. Further,flash drive800 consumer one watt of power. Ifflash drive800 enablessmartphone120 to draw ten watts, then the power being drawn from the USB port oflaptop115 will be eleven watts, which exceeds the ten watt limit. Soflash drive800 communicates withsmartphone120 to limit the power consumption ofsmartphone120 to five watts.
After USB power management895 has completed its communications with the host device, then the output of host detectlogic875 that controls USB switches670 and890 is set to enable the host to communicate with interface/storage controller830. From this point on,flash drive800 functions similar toflash drive700 until a new device is connected toflash drive800. Once a new device is connected and an enumeration process starts with the newly connected device, host detectlogic875 once again sets its output to enable USB power management895 to connect to the newly connected device during enumeration. Once these communications are completed, host detectlogic875 once again sets its output to enable the host, which may have changed e.g. fromlaptop115 tosmartphone120, to communicate with interface/storage controller830. From this point on,flash drive800 once again functions similar toflash drive700, until yet another new device is connected toflash drive700, and another enumeration process begins.
FIG. 9 is an activity diagram illustrating the use of a flash drive to pass current from a source device to a mobile device, consistent with various embodiments.Source device905 is a computing device with a first connector, such aslaptop115 where the first connector is a USB port, andmobile device910 is a computing device with a second connector, such assmartphone120 where the second connector is a Lightning port. While this diagram illustrates usingflash drive800 to copy data fromsource device905 tomobile device910, data can similarly be copied frommobile device910 to sourcedevice905 usingflash drive800.
Source device905 can be any type of computing device that includes a connector, such as a USB port, that can provide power.Source device905 can also be a power adapter, which is not a computing device, but rather is a device whose primary purpose is to provide power. However, whensource device905 is a power adapter and is not a computing device, steps914,916,922, and924 are not possible, and, in some embodiments,step913 is not possible either.Mobile device910, as well as any other mobile device discussed herein, can be any type of mobile device, such as a laptop computer, a tablet computer, a cell phone, a smart phone, a wearable device, etc.
A user, such asuser105, plugs a connector offlash drive800, such as a male USB connector, into a compatible connector ofsource device905, such as a female USB connector. After being plugged in,flash drive800 powers up and goes through a reset sequence where it initializes to a ready state. In some embodiments, during the initializationprocess flash drive800 reads and executes software fromflash memory240. For example, after going through the reset sequence, interface/storage controller830 reads data fromflash memory240. The data can be software to be executed interface/storage controller830. The software can be executed to putflash drive800 into a ready state.
Onceflash drive800 is in the ready state, eitherflash drive800 orsource device905 can initiate communication between the two devices. In response to being plugged into the USB connector ofsource device905 and effectively “booting” to the ready state,flash drive800 can determine a protocol to use to send a message to sourcedevice905 to initiate communication between the devices (step918). For example,flash drive800 can determine, based on being plugged into a USB connector, to send a USB command or message to sourcedevice905 to initiate communication (step920). In response to receiving the USB command or message,source device905 can send a response to establish communication between the devices (step912). In some embodiments or cases,source device905 can send the message to initiate communication toflash drive800, andflash drive800 can send a response to establish communication.
Some peripheral interface standards, such as USB (per, for example, the USB power delivery specification), allow connector ports to provide a range of power levels, and also allow connector ports to draw a range of power levels. For example, a USB port of a first device may allow only 100 milliamps (ma) to be drawn by a connected device, while a USB port of a second device may allow 500 ma to be drawn by a connected device. In some cases the power to be drawn can be negotiated. For example, while the USB port of the first device only allows 100 ma to be drawn initially, it may be possible to negotiate with the first device to have the first device increase the current that the USB port can provide. Similarly, a USB port of a first device may draw 100 ma by default, and may be able to increase its current draw.
For example, a USB port of a first device that can source power is connected to a micro-USB port of a second device that needs to recharge its battery. The two devices can exchange power information, such as during enumeration. The USB port of the first device may initially be set to provide 100 ma. During enumeration, the second device may determine that the USB port of the first device can be set to provide more power, and may request that the first device provide more power, for example, raising the current to be provided from 100 ma to 500 ma. Similarly, the USB port of the second device initially be set to draw 100 ma. Based on determining that the source USB port can provide 500 ma, the second device may raise the current consumption of its micro-USB port from 100 ma to 500 ma.
Even ifflash drive800 consumes an amount of power that is so small that it will not exceed any power limit of any USB port, becauseflash drive800 can pass current from one connected device to a second connected device,flash drive800 needs to know how much power the connector port ofsource device905 can provide.Flash drive800 needs to know this so that it can ensure that the combined power draw offlash drive800, and of a second device that may be connected toflash drive800 at some point in the future, will not exceed the power supply capability ofsource device905. Soflash drive800 sends a message to sourcedevice905 to determine an allowable amount of power that can be drawn from the USB connector (step921).Source device905 sends a response that indicates an allowable amount of power (step913). For example,source device905 may send a response that indicates that it can provide only one power level. In some embodiments,source device905 may send a response that indicates that the USB connector port can be set to provide multiple difference power levels. In these embodiments,flash drive800 can communicate withsource device905 to causesource device905 to set the power level of the USB connector port to a desired level.
At some point in time,user105 indicates that he wants to copy data, such as a movie, fromsource device905 toflash drive800. For example,user105 can utilize a user interface of a source device, such as windows explorer oflaptop115, to indicate to copy the movie to flash drive800 (step914).Source device905 can send the movie toflash drive800 using the USB protocol and USB protocol commands (step916).Flash drive800 receives the commands at interface/storage controller830, where the USB commands are interpreted. Based on the received USB commands, interface/storage controller830 determines to write the movie data to flash memory240 (step922), and manages the writing of the data to flash memory240 (step924).
At a later point in time,user105 plugs a connector offlash drive800, such as a male Lightning connector, into a compatible connector ofmobile device910, such as a female Lightning connector. After being plugged in, host detectlogic875 offlash drive800 determines thatflash drive800 is connected to two devices, and determines to change the host fromsource device905 tomobile device910.Flash drive800 sends a message tomobile device910 to initiate communication (step928).Mobile device910 responds to establish communication with flash drive800 (step938).
As discussed above,flash drive800 needs to ensure that its current draw from the USB port ofsource device905 does not exceed an allowable level.Flash drive800 sends a message to determine a range of power consumption levels to mobile device910 (step930).Mobile device910 sends a response indicating the range of power consumption levels (step939). In some cases, the range may be a single value. In other cases, the range may be multiple discreet levels.Flash drive800 earlier determined an allowable amount of power that can be drawn from the USB port ofsource device905.Flash drive800 also knows how much power it consumes. Based on this, and based on the indicated range of power consumption levels ofmobile device910,flash drive800 determines a power consumption level for mobile device910 (step932).Flash drive800 sends a message tomobile device910 to set the power consumption level thatmobile device910 will draw fromflash drive800 via the connector (step932).Mobile device910 sends a message to cause the powerconsumption level smartphone120 to be set to an appropriate level (step940).Flash drive800 enables power to flow fromsource device905 tomobile device910, such as by controllingpower switch655 to enable power to flow between the two devices.Mobile device910 draws power that is less than or equal to the defined power consumption level (step941).
At a later point in time,user105 indicates that he wants to copy or stream the movie fromflash drive800 tomobile device910. For example,user105 utilizes a user interface of an OS that is running onmobile device910 to indicate to copy or stream the movie fromflash drive800 to mobile device910 (step942). In response to the indication to copy or stream the movie,mobile device910 sends a request for the movie to flash drive800 (step944). For example,mobile device910 sends a USB command requesting the movie data toflash drive800, where the command is directed to interface/storage controller830, where the USB command is interpreted. Based on the received USB command, interface/storage controller830 determines to read the movie data from flash memory240 (step934). Interface/storage controller830 further manages the reading of the movie data fromflash memory240. After reading the movie data fromflash memory240, interface/storage controller830 sends or streams the data to mobile device910 (step936), where the data is received (step946).
During observations of people using smart phones and other mobile devices, observers noted that, when holding their smart phones vertically in their hand, people often held their phones between the base of their fingertips and the inner side of the hand. When holding a smart phone in this way, it was further noticed that many smart phone users would move their pinky finger to the bottom of the phone to stabilize it. When a user holds a smart phone in this way, and slides his pinky finger to the bottom of the phone to stabilize the phone, it was noticed that an empty space is created between the back of the phone and the palm of the user's hand.
FIG. 10 is a diagram illustrating a space that is formed betweensmart phone1005 and a user's hand when the user holdssmart phone1005, consistent with various embodiments.Smart phone1005 is an Apple iPhone that has a Lightning connector port on the bottom edge of the phone. Observers, while developing the technology, observed people using their smart phones and other mobile devices. The observers noticed that, when holding their mobile devices vertically in their hand, people often hold their phones between the base of their fingertips and the inner side of the hand.FIGS. 10 and 11 illustrate, respectively, a bottom-view and a front-view of a user holdingsmart phone1005 between the base of his fingertips and the inner side of his hand.
The observers further noticed that, when holding a smart phone in this way, many people place their pinky finger at the bottom of the phone to stabilize the phone.FIGS. 10 and 11, respectively, illustrate a bottom-view and a front-view of a user with his pinky placed at the bottom ofsmart phone1005 to stabilize the phone. When a user holds a smart phone as depicted inFIGS. 10 and 11, the observers noticed that an empty space is created between the back of the phone and the palm of the user's hand.FIG. 10 illustrates such an empty space formed between the back ofsmart phone1005 and the user's hand.
FIG. 12 is a diagram illustrating a flash drive that is shaped to utilize the space behind a mobile device, consistent with various embodiments, and as viewed from three different angles. In the embodiment ofFIG. 12,flash drive1210 has a J-shape, and has connectors on both ends of the J-shape.Mobile connector1215, which is an Apple Lightning connector in the embodiment ofFIG. 12, extends fromfront portion1225, which is the short end of the J-shape.Connector1220, which is a full size Universal Serial Bus (USB) connector in the embodiment ofFIG. 12, extends from back portion1230, which is the long end of the J-shape.
Whenmobile connector1215 is connected to a mobile device, such assmart phone1005, the flash drive wraps around the mobile device and is located behind the mobile device, as is depicted inFIGS. 13-15.FIGS. 13-15 are diagrams illustrating, respectively, a front-view, a side-view, and a back-view, offlash drive1210 connected tosmart phone1005, and utilizing the space behind the smart phone, consistent with various embodiments. While the flash drive of the embodiment ofFIG. 12 is a particular shape, other embodiments can include any flash drive shaped or configured to enable the flash drive to wrap around a mobile device when connected to the mobile device, such that a portion of the flash drive is located behind the mobile device when so connected.
The portion of the flash drive that is located behind the mobile device can be adjacent to the back surface of the mobile device, as is depicted inFIGS. 14 and 15. When a user holdssmart phone1005, andflash drive1210 is connected to the smart phone as depicted inFIGS. 13-15,connector1220 and a part of back portion1230 offlash drive1210 can fit in the empty space between the user's hand and the back ofsmart phone1210, as is depicted inFIGS. 16 and 17.FIGS. 16 and 17 are diagrams illustrating, respectively, a bottom-view and a front-view offlash drive1210 utilizing the space betweensmart phone1005 and a user's hand, consistent with various embodiments.
Further, when a mobile device is placed in a protective case such that a surface of the case covers the back surface of the mobile device, the portion of the flash drive that is located behind the mobile device (and behind the surface of the case) can be adjacent to the back surface of the mobile device. This is because a first object that is placed adjacent to a second object that is placed adjacent to a third object is, as used herein, adjacent to the third object. Therefore, a portion of a flash drive that is adjacent to a surface of a case that is adjacent to a back surface of a mobile device is, by definition herein, adjacent to the back surface of the mobile device.
In some embodiments, the body of the flash drive has three portions, a front portion, an intermediate portion, and a back portion. The front portion extends from the intermediate portion in a first direction, and has a mobile device connector extending from the end of the front portion. For example, the intermediate portion offlash drive1210 can be U-shaped intermediate portion1235, and the front portion can befront portion1225. In various embodiments, the intermediate portion can be a rectilinear U-shape, a J-shape, or a V-shape, among others. A rectilinear U-shape is a U-shape that is formed of three rectangular pieces. The mobile device connector can bemobile connector1215. The mobile device connector enables the flash drive to connect to and communicate with a mobile device. Examples of mobile devices include a smart phone, a tablet computer, a portable music device, etc.
The back portion of the body extends from the intermediate portion in a second direction, and has a device connector extending from the end of the back portion. The back portion offlash drive1210 can be back portion1230, and the device connector can beconnector1220. In some embodiments, the back portion of the body of the flash drive extends further from the intermediate portion in the first direction than the front portion extends from the intermediate portion in the second direction. In other embodiments, the back portion of the body of the flash drive extends further from the intermediate portion in the first direction than the front portion extends from the intermediate portion in the first direction. In yet other embodiments, the back portion of the body of the flash drive extends further from the intermediate portion in the first direction than the front portion extends from the intermediate portion in the first direction by more than a factor of two.
The first direction and the second direction can be substantially parallel, or the two directions can have an angle between them of up to 45 degrees. The preferred angle between the two directions is between zero degrees and approximately 20 degrees. When the angle between the two directions exceeds approximately 20 degrees, flash drives with longer back portions begin to have trouble fitting in the empty space, the empty space as depicted inFIG. 10, between the smart phone and the hand of a user holding the smart phone. As the angle between the two directions increases, the back portion needs to decrease in length in order to fit in this empty space. At angles above approximately 45 degrees, the flash drive is no longer able to reasonably utilize this empty space.
In some embodiments, the intermediate portion of the body is configured or shaped to cause, when the mobile connector is connected to a mobile device in a first orientation, a portion of the back portion of the mobile device, as well as the device connector, to be located behind the mobile device.FIG. 14 contains an example of a flash drive,flash drive1210, with a portion of the back portion of the flash drive,portion1440, as well as a device connector,connector1220, located behind, and also adjacent to, the mobile device.FIG. 15 also contains an example offlash drive1210 with a portion of the back portion of the flash drive, as well as a device connector, located behind, and also adjacent to, the mobile device. In some embodiments, the mobile connector of the flash drive can be inserted into the mobile connector port of the mobile device with a second orientation. For example, a Lightning connector can be inserted into a Lightning connector port in a first orientation, and also in a second orientation where the Lightning connector is rotated by 180 degrees. In such a case, when the flash drive is connected to the mobile device in the second orientation, the back portion of the mobile device, as well as the device connector, can be located in front of the mobile device and adjacent to a front surface of the mobile device.
In some embodiments, such as the embodiment ofFIG. 18, the flash drive has only one connector, a mobile connector.FIG. 18 is a diagram illustrating a flash drive with one connector that is shaped to utilize the space behind a mobile device, consistent with various embodiments, and as viewed from two different angles. The flash drive ofFIG. 18,flash drive1810, has one connector,connector1815. In embodiments where the flash drive has only one connector, the back portion of the flash drive, such as back portion1830, does not have a connector. In some of these embodiments, the intermediate portion of the body, such as U-shaped intermediate portion1835, is configured or shaped to cause, when the mobile connector is connected to a mobile device in a first orientation, a portion of the back portion of the flash drive to be located behind the mobile device. The portion of the back portion that can be located behind the mobile device can be a majority of the back portion.
Mobile connector1215 is a connector that is configured to connect to and communicated with a mobile device. Examples of mobile device connectors include an Apple Lightning connector, an Apple 30-pin connector, an Apple Thunderbolt connector, a mini USB connector, a mini USB A-type connector, a mini USB B-type connector, a micro USB connector, a micro USB A-type connector, a micro USB B-type connector, and a UC-E6 connector.Connector1220 is a connector that is configured to connect to and communicate with a device. Examples of device connectors include a full size USB connector, a standard USB connector, a standard A-type USB connector, a B-type USB connector, a mini USB connector, a mini USB A-type connector, a mini USB B-type connector, a micro USB connector, a micro USB A-type connector, a micro USB B-type connector, a UC-E6 connector, an Apple Lightning connector, an Apple 30-pin connector, and an Apple Thunderbolt connector.
FIG. 19 is a diagram illustrating a flash drive that can bend to accommodate mobile devices of varying thicknesses, consistent with various embodiments. Different mobile devices may have different thicknesses. For example, an Apple iPod Touch may be 6.1 mm thick, while an Apple 5C iPhone may be 8.9 mm thick. In some embodiments, in order to accommodate mobile devices of varying thicknesses, the intermediate portion of the flash drive can be configured to cause a specific separation distance between the front and back portions of the flash drive. This configuration creates a gap between the front and back portions of the flash drive sufficient to enable the flash drive to wrap around the thickest target mobile device when connected to the thickest target mobile device.
A distance between a front portion of a flash drive, such asfront portion1225, and a back portion of the flash drive, such as back portion1230, can be defined at a number of locations. In some embodiments, an imaginary line or plane can be utilized to define a first distance. For example, inFIG. 12 the side-view shows a dashed line,line1265, that is defined by a first point along a plane wherefront portion1225 joins with U-shaped intermediate portion1235, and a second point along a plane where back portion1230 joins with U-shaped intermediate portion1235.Line1265 can also be part of a plane that can be defined by choosing a third point that lies on one of these two planes.
A first distance, such as first distance1250, can be defined as the distance between two points. The first point is a point on an inside surface of the front portion of the flash drive, such asfront portion1225, that is also on the above discussed line or plane, such asline1265. The second point is a point on an inside surface of the back portion of the flash drive, such as back portion1230, that is also on this line or plane. The first distance can be the distance between the first point and the second point. For example, forflash drive1210, the first distance is first distance1250.
In some embodiments, the front portion transitions to the intermediate portion along one of the two above discussed planes, which can be substantially perpendicular to a line in the first direction. The back portion transitions to the intermediate portion, along the other one of the two above discussed planes, which can be substantially perpendicular to a line in the second direction. In some embodiments, the two above discussed planes are coplanar, and the two planes can be substantially perpendicular to the a line in the first direction and/or a line in the second direction.
In order to enable the flash drive to accommodate a variety of thicknesses of mobile devices, it was determined based on an analysis of a variety of mobile devices of varying thicknesses that a range of practical first distances is between approximately 3 mm and approximately 7 mm, with a preferred first distance of 5.5 mm. In some embodiments, the intermediate portion of the flash drive, such as U-shaped intermediate portion1235, can be shaped or configured to cause a specific first distance, such as a first distance that is in the range of practical first distances. For example, U-shaped intermediate portion1235 can be shaped or configured so that first distance1250 is between 3 mm and 7 mm.
The inside surface of the back portion of the flash drive is the surface of the back portion of the flash drive that is closest to the mobile device, when the flash drive is connected to the mobile device as depicted inFIG. 14. The inside surface of the front portion of the flash drive is the surface of the front portion of the flash drive that is closest to the inside surface of the back surface of the flash drive.
A second distance, such assecond distance1255, can be defined at the distance between two points. A third point can be a point on a center line of the mobile connector, such as a point oncenter line1260 ofmobile connector1215. The point can also or alternatively by a point on a plane that bisects the mobile connector, and that contains the center line. For example, the plane can be the plane that containscenter line1260, and that is perpendicular to the plane of the paper ofFIG. 12. A fourth point can be the point on the inside surface of the back portion of the flash drive that is closest to the third point. The second distance can be the distance between the third point and the fourth point. For example, forflash drive1210, the second distance issecond distance1255.
In order to enable the flash drive to accommodate a variety of thicknesses of mobile devices, it was determined based on an analysis of a variety of mobile devices of varying thicknesses that a range of practical second distances is between approximately 3 mm and approximately 7 mm, with a preferred second distance of 5.5 mm. In some embodiments, the intermediate portion of the flash drive, such as U-shaped intermediate portion1235, can be shaped or configured to cause a specific second distance, such as a second distance that is in the range of practical second distances. For example, U-shaped intermediate portion1235 can be shaped or configured so thatsecond distance1255 is between 3 mm and 7 mm.
In some embodiments, a portion of the flash drive is made of flexible material to enable the front and back portions of the flash drive to be bent apart. For example, a portion of U-shaped intermediate portion1235 can be made of a flexible material to enables U-shaped intermediate portion1235 to be bent to increase or reduce the first distance and/or the second distance, as depicted inFIG. 19. As used herein, a portion of some object or material can be the entirety of the object or material. This enables a flash drive that can be bent to accommodate mobile devices of varying thicknesses. The back portion of some embodiments of the flash drive can fit snugly against the back of a mobile device when the flash drive is connected to the mobile device. The flash drive can also fit a thicker mobile device as well. By bending the flash drive to increase the first distance and/or the second distance, the flash drive can wrap around a thicker mobile device to utilize space behind the mobile device.
Analysis and experiments have determined that materials with a Shore A hardness durometer of between 70 and 95, such as some elastomeric polymers, have sufficient flexibility for use in the flash drive, and that 85 is a preferred Shore A hardness durometer. When the intermediate portion, such as U-shaped intermediate portion1235, is made of a material with a Shore A durometer of between 70 and 95, the intermediate portion can flex and bend sufficiently to enable the flash drive to accommodate an adequate range of thicknesses of mobile devices. A material with a Shore A durometer of 85 was determined to be a good trade-off between having the flash drive bend easily enough to fit on mobile devices of a variety of thicknesses, and yet still be stiff enough to provide to give the user feedback (though the stiffness that the user can feels) that the flash drive should not be bent too far. Analysis of various materials have determined a number of materials, such as elastomeric polymers, that are adequate for use in the flexible portion of the flash drive. These materials include thermoplastic polyurethane (TPU), polypropylene, thermoplastic elastomer (TPE), and silicone, with TPU being the preferred material.
FIG. 20 is a diagram illustrating an exploded view of a flash drive, including a cap, that is shaped to utilize the space behind a mobile device, consistent with various embodiments. In various embodiments,flash drive2000 can beflash drive110, orflash drive1210, or can be different.Flash drive2000 includesPCB2005,inner mold2010,shroud2015, overmold2020, extrusions2025 and2030,cap2035, andlightpipe2040.PCB2005 includes a PCB, a flash memory IC, a controller, a USB connector, a Lightning connector, and wires that couple the Lightning connector to the PCB, among other components. The PCB and the wires couple the various components ofPCB2000. In various embodiments,PCB2005 can include the components depicted in any ofFIG. 2,FIG. 3,FIG. 4,FIG. 6,FIG. 7, orFIG. 8.
Inner mold2010 is part of the intermediate portion offlash drive2000.Inner mold2010 is formed over a portion ofPCB2005. The portion ofPCB2005 over whichinner mold2010 is formed includes a portion of the Lightning connector, the wires between the Lightning connector and the PCB, and a portion of the PCB. In one embodiment,inner mold2010 is formed over 2 mm of the end of the PCB.Inner mold2010 can be made of material with a Shore A durometer of between 70 and 95.Inner mold2010 can be made of any of TPU, polypropylene, TPE, or silicone, among others. To forminner mold2010, a mold in the desired shape is created. The portion ofPCB2005 to be covered byinner mold2010 is placed inside of the mold, and an overmold process, also referred to as an insertion molding process, is used. The overmold material is injected in the form, and is allowed to cure and harden to forminner mold2010.Inner mold2010 is preferably formed of TPU with a Shore A durometer of 85.
In order to helpinner mold2010 stay attached to the PCB ofPCB2005, in some embodiments, two holes are cut in the end of the PCB over whichinner mold2010 will be formed. When the TPU is injected into the mold, the TPU flows into the two holes. After curing, the hardened TPU that formed in these two holes enablesinner mold2010 to stay firmly attached to the PCB.
Lightpipe2040 is formed of a material that conducts light.Lightpipe2040 is inserted inshroud2015, andshroud2015 is slid overPCB2005.Shroud2015 can be made of acrylonitrile butadiene styrene (ABS), among other materials. Placingshroud2015 overPCB2005 serves several purposes. For example, an overmold is formed overPCB2005 in a later manufacturing step, andshroud2015 protects the PCB and its components from the overmold. Further, whileinner mold2010 is attached toPCB2005, the connection may not have the mechanical strength needed to stay attached, given the stresses that are created whenflash drive2000 is bent to fit around a thick mobile device.Inner mold2010 has a narrowed end.Shroud2015 slides overPCB2005, and also slides over the narrowed end ofinner mold2010.
With this configuration, whenflash drive2000 is bent, the portion of the shroud that encapsulates the narrow end ofinner mold2010 also helps to mechanically supportinner mold2010 when the forces that result from bending occur. Rather thaninner mold2010 potentially breaking off of the end ofPCB2005 due to the forces generated by the bend, some of these forces are transferred toshroud2015, which transfers the forces further downPCB2005. Onceshroud2015 is properly positioned over/aroundPCB2005,lightpipe2040 is positioned over an LED on the PCB. Positioned thusly, lightpipe2040 can pass light from the LED to the outside offlash drive2000, where the light can be seen by a user.
Overmold2020 is formed overPCB2005,inner mold2010, and shroud2015 (which is positioned over/around a portion of PCB2005).Overmold2020 can be made of ABS, TPU, polypropylene, TPE, or silicone, among others. Toform overmold2020, a mold in the desired shape is created. The portion ofPCB2005,inner mold2010, andshroud2015 to be covered byovermold2020 is placed inside of the mold, and an overmold process is used to createovermold2020. The overmold material is injected in the form, and is allowed to cure and harden to formovermold2020.Overmold2020 is preferably formed of ABS.
In some embodiments, extrusions2025 and2030 are metal extrusions, such as aluminum extrusions. When overmold2020 is formed, it does not entirely encapsulateinner mold2010 orshroud2015. One end ofovermold2020 is formed pulled back a distance from an end ofinner mold2010. The other end ofovermold2020 is formed pulled back another distance from an end ofshroud2015. Extrusion2030 slides over the end ofinner mold2010 that is nearest to the Lightning connector, where extrusion2030 abuts against one end ofovermold2020. Extrusion2025 slides over the end ofshroud2015 that is nearest to the USB connector, where extrusion2025 abuts against a second end ofovermold2020. Glue is used to attach the two extrusions toflash drive2000.
Cap2035 is a J-shaped cap that can be placed over the two connectors to protect the connectors. Can2035 can be made of ABS, TPU, polypropylene, TPE, or silicone, among other materials.Cap2035 has a hole at each end that is shaped to accommodate the connector that is to be inserted in the hold.Cap2035 has a hole at the middle of the curved portion ofcap2035. This hole can be used to, for example, attachcap2035 to a key ring. Whenflash drive2000 is inserted incap2035,cap2035 snugly holdsflash drive2000.
FIG. 21 is a block diagram illustrating an example of a processing system in which at least some operations described herein can be implemented, consistent with various embodiments.Processing device2100 can represent any of the computing devices described above, e.g.,laptop115,smartphone120,non-iOS computing device505,iOS computing device510,source device905,mobile device910, orsmart phone1005. Any of these systems can include two or more processing devices, as is represented inFIG. 21, which can be coupled to each other via a network or multiple networks.
In the illustrated embodiment, theprocessing system2100 includes one ormore processors2110,memory2111, acommunication device2112, and one or more input/output (I/O)devices2113, all coupled to each other through aninterconnect2114. Theinterconnect2114 may be or include one or more conductive traces, buses, point-to-point connections, controllers, adapters and/or other conventional connection devices. The processor(s)2110 may be or include, for example, one or more general-purpose programmable microprocessors, microcontrollers, application specific integrated circuits (ASICs), programmable gate arrays, or the like, or any combination of such devices. The processor(s)2110 control the overall operation of theprocessing device2100.Memory2111 may be or include one or more physical storage devices, which may be in the form of random access memory (RAM), read-only memory (ROM) (which may be erasable and programmable), flash memory, miniature hard disk drive, or other suitable type of storage device, or any combination of such devices.Memory2111 may store data and instructions that configure the processor(s)2110 to execute operations in accordance with the techniques described above. Thecommunication device2112 may be or include, for example, an Ethernet adapter, cable modem, Wi-Fi adapter, cellular transceiver, Bluetooth transceiver, or the like, or any combination thereof. Depending on the specific nature and purpose of theprocessing device2100, the I/O devices2113 can include various devices, e.g., a display (which may be a touch screen display), audio speaker, keyboard, mouse or other pointing device, microphone, camera, etc.
Unless contrary to physical possibility, it is envisioned that (i) the methods/steps described above may be performed in any sequence and/or in any combination, and that (ii) the components of respective embodiments may be combined in any manner.
The techniques introduced above can be implemented by programmable circuitry programmed/configured by software and/or firmware, or entirely by special-purpose circuitry, or by any combination of such forms. Such special-purpose circuitry (if any) can be in the form of, for example, one or more application-specific integrated circuits (ASICs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), etc.
Software or firmware to implement the techniques introduced here may be stored on a machine-readable storage medium and may be executed by one or more general-purpose or special-purpose programmable microprocessors. A “machine-readable medium”, as the term is used herein, includes any mechanism that can store information in a form accessible by a machine (a machine may be, for example, a computer, network device, cellular phone, personal digital assistant (PDA), manufacturing tool, any device with one or more processors, etc.). For example, a machine-accessible medium includes recordable/non-recordable media (e.g., read-only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; etc.), etc.
Note that any and all of the embodiments described above can be combined with each other, except to the extent that it may be stated otherwise above or to the extent that any such embodiments might be mutually exclusive in function and/or structure.
Although the present invention has been described with reference to specific exemplary embodiments, it will be recognized that the invention is not limited to the embodiments described, but can be practiced with modification and alteration within the spirit and scope of the appended claims. Accordingly, the specification and drawings are to be regarded in an illustrative sense rather than a restrictive sense.