Patent Description:
Conventionally, digital content is distributed using optical media (e.g., compact discs, digital video discs, etc.). However, such optical media can only be accessed by specific devices with suitable disc drives, which are increasingly absent from consumer electronic devices, limiting the ability of content providers to distribute media to consumers in physical form.

While portable hard drives exist, such technology is generally only compatible with a limited number of electronic devices. Further, while Internet delivery of media has been used in some cases, this mode of delivery often sacrifices quality and security or requires Internet connectivity that is not present in all electronic devices.

Different types of file formats are used for different types of media and electronic devices can typically only access limited subsets of these file formats. As the numbers and types of file formats increase, along with different file structures used to execute the different file formats, storage of files on media that can interact with multiple different file structures becomes increasingly difficult. Different media storage devices are formatted to different file structures to allow for interactions with different devices. This creates difficulties in the portability and management of the different media devices. In particular, media devices formatted to work with one device (such as a computer) are often incompatible with other devices (such as a game system or "smart" television). Additionally, often compatibility issues exist between media devices of a single type (such as a computer running a Windows operating system and a computer running a Macintosh operating system).

As the size of media storage unit has increased, the types and sizes of files stored in the memory of a media storage device has grown. Video and audio files typically have a large size and have not historically been stored on media storage devices due to their size. With the increase in storage capacity of media storage devices, video and audio files can now be stored on portable media storage devices. However, as many different devices execute video and audio files, a need exists for a single media storage unit capable of interacting with a number of different external devices.

<CIT> discloses a USB flash storage system comprising a flash memory and a CPU. A Logic Unit Number (LUN) can correspond to one or more partitions. Each partition has a different type of removable or fixed storage function. For example LUN <NUM> corresponds to a CD-ROM, while LUN <NUM> corresponds to a Security Flash Disk and to a Public Flash Disk. File system formats for each partition are determined, including CDFS, FAT16, FAT <NUM>, NTFS, etc. Then, each partition is formatted according to the determined file system.

Described herein are various embodiments of a media storage unit including a microcontroller in communication with a memory having a plurality of memory locations, wherein the microcontroller formats groups of the plurality of memory locations into a predetermined file structure. The media storage unit is configured so as to be compatible with a wide range of devices, allowing for content stored on the media storage unit to be seamlessly accessed by multiple devices.

Other features and advantages of the present invention will become more readily apparent to those of ordinary skill in the art after reviewing the following detailed description and accompanying drawings.

Certain embodiments are shown in the drawings. However, it is understood that the present disclosure is not limited to the arrangements and instrumentality shown in the attached drawings.

For the purposes of promoting and understanding the principles disclosed herein, reference is now made to the preferred embodiments illustrated in the drawings, and specific language is used to describe the same. It is nevertheless understood that no limitation of the scope of the invention is hereby intended. Such alterations and further modifications in the illustrated devices and such further applications of the principles disclosed and illustrated herein are contemplated as would normally occur to one of skill in the art to which this disclosure relates.

<FIG> depicts a media storage device <NUM> connected to a separate external device <NUM>. By way of example, the media storage device <NUM> may include a port (such as a male USB type-A plug) while the external device <NUM> includes a corresponding port (such as a female USB type-A plug). In alternative embodiments, the external device <NUM> and media storage device <NUM> may be connected by other means that will be clear to one of skill in the art, including but not limited to USB type-C plugs, micro-USB plugs, Lightning® connectors, or another wired or wireless interface. The media storage device <NUM> comprises a microcontroller <NUM> and a memory <NUM>. The microcontroller <NUM> interacts with an external device <NUM> and the memory <NUM> to allow the transfer and execution of media from the media storage device <NUM> to the external device <NUM>. The microcontroller <NUM> manages the location where files are stored in the memory <NUM>, and how and when the files are stored and retrieved from the memory <NUM>. The memory <NUM> can be any known type of non-volatile memory, including but not limited to flash memory including NAND or NOR flash memory. The microcontroller <NUM> interacts with the memory <NUM> to structure the memory <NUM> into a predefined file structure.

To author data to the media storage device <NUM>, the external device <NUM> may be a general purpose computer comprising a processor, display and input device(s) such as a mouse and keyboard configured with specialized software. In an alternative embodiment, the external device may be a special-purpose computing device specifically configured to author media storage devices <NUM>. The external device <NUM> interacts with the microcontroller <NUM> by sending instructions and/or requests to the microcontroller <NUM>. The microcontroller <NUM> then responds to those instructions and/or requests and accesses the memory <NUM> as necessary.

To access data on the media storage device <NUM>, the external device <NUM> queries the microcontroller <NUM>, which in turn accesses the memory <NUM>. The microcontroller <NUM> thus intermediates all interactions between the external device <NUM> and the memory <NUM>.

The memory <NUM> in each media storage device <NUM> is divided into one or more logical units, each identified by a single logical unit number (LUN). Each logical unit may contain one or more partitions (or volumes). Media storage devices present themselves to external devices as being either removable or non-removable using a removable media bit (RMB). The RMB is coded in the microcontroller <NUM>. In an embodiment, an RMB of zero indicates that a media storage device <NUM> is not a removable media device, while an RMB of one indicates that a media storage device <NUM> is a removable media device. A media storage device <NUM> may also inform an external device <NUM> whether the media storage device <NUM> is read only or whether the media storage device <NUM> may be both read and written too. In an embodiment, this is accomplished through the use of a read-write (R/W) flag.

Portable media storage devices are typically provided to customers with a single logical unit formatted as a single partition. Further, such devices identify themselves as removable drives (e.g., by having an RMB set to <NUM>). For example, by default, the memory <NUM> of a media storage device <NUM> is be configured as a single "target" or logical unit, with its LUN set to zero. The logical unit will typically be formatted as a single partition using a single file structure, such as by using the File Allocation Table (FAT) file system architecture and the FAT <NUM> file system. Typically, operating systems (such as Windows) only permit a single partition (or logical unit) to reside on a removable media storage device <NUM> (i.e., one with an RMB of <NUM>). Such an operating system is only capable of accessing the first partition or logical unit on a media storage device <NUM>. Problematically, many operating systems (particularly those utilized in special purpose computers, such as those contained in vehicle audio-visual units, game systems, smart televisions and home audio-visual systems) are only able to access a limited number of file structures. Thus, a media storage device <NUM> that is authored so as to be compatible with one device (e.g., a gaming system) could not be accessed by another device (such as a home audio-visual system).

<FIG> depicts a schematic representation of the microcontroller <NUM> configuring the memory <NUM> to a predetermined file structure. The method begins at step <NUM>, wherein the microcontroller <NUM> determines the number of logical units to create on the media storage device <NUM> based on input received from an external device <NUM>. Each logical unit is assigned a unique LUN, with the first logical unit receiving an LUN of zero, the second receiving an LUN of one, and so on. Next, at step <NUM>, the microcontroller <NUM> selects a partition structure for each logical unit and a file structure for each partition based on input received from the external device <NUM>. For example, a single logical unit may be divided into two separate partitions, each with a distinct file structure. The file structure for each partition may be selected from a list of file structures stored on the microcontroller <NUM>. Alternatively, in an embodiment, the external device <NUM> provides the microcontroller <NUM> with information regarding a file structure not previously known to the microcontroller <NUM>, thereby enabling the microcontroller <NUM> to format a partition with the previously unknown file structure. Advantageously, in an embodiment, the external device <NUM> may provide the file structure for each logical unit in addition to each partition. The file structures may include, but are not limited to, FAT, the NT file system (NTFS), the extended File Allocation Table (exFAT) file system, the Hierarchical File System Plus (HFS+), the Apple File System (APS), or any other known file structure. Each file structure is configured to allow the files stored in the memory <NUM> to interact with different external devices <NUM>. The microcontroller <NUM> may store a listing and format for each file structure in the memory <NUM> for retrieval at a later time. In another embodiment, an external device <NUM> provides the file structure to the microcontroller <NUM> for configuration of the memory <NUM>. Each partition of the memory <NUM> may be formatted with different file structures to allow the media storage device <NUM> to interact with different external devices <NUM>. As an illustrative example, the media storage device <NUM> may format a first partition of LUN zero as an NTFS files structure, a second partition of LUN zero as an FAT file structure and a third partition of LUN one as an APS file structure. In one embodiment, the order and arrangement of the different partitions in the memory does not matter. In another embodiment, the order and arrangement of the different partitions in memory <NUM> is predetermined.

In step <NUM>, the size of each partition of the memory <NUM> is determined based on input from the external device <NUM>. In one embodiment, the size of each partition is a fixed amount. In another embodiment, the size of each partition is variable and may be adjusted based on the storage needs of the data stored on the media storage device <NUM>.

In step <NUM>, the microcontroller <NUM> associates specific memory locations with a specific file structure. In step <NUM>, each memory location is formatted to the predetermined file structure. In step <NUM>, a file is copied to the formatted portions of the memory <NUM>.

<FIG> depicts a schematic representation of the media storage unit <NUM> interacting with an external device. In step <NUM>, the media storage device <NUM> is connected to an external device. In step <NUM>, the microcontroller <NUM> interacts with the external device to determine a file structure for the external device. The microcontroller <NUM> may request the file structure from the external device to determine the appropriate partition to retrieve the media file. In step <NUM>, the microcontroller <NUM> determines which partition to associate with the external device based on the file structure of the external device. The microcontroller <NUM> may also make other configuration changes based on the file structure. As an illustrative example, the microcontroller <NUM> may adjust different settings sent to the external device to make the media storage device <NUM> appear to be a fixed drive opposed to removable media to the external device.

In step <NUM>, the external device is connected to the associated memory location in the memory <NUM> to allow for the execution of the media on either the memory <NUM> or on the external device. In step <NUM>, the microcontroller <NUM> executes the files locally on the memory <NUM> or on the external device. In step <NUM>, the external device presents the media to the user via the external device.

By creating multiple partitions and logical units on a single media storage device <NUM>, the single media storage device <NUM> can interact with a multitude of external devices of different types. This improves compatibility and avoids the need to author separate media storage devices for each target external device.

<FIG> depicts a schematic representation of a preferred embodiment of a method of authoring a media storage device <NUM> to be compatible with multiple external devices <NUM>, wherein each external device <NUM> is a different type of device. The method begins at step <NUM>, when a specialized external device <NUM> (which may be referred to herein as an "authoring device") configured to author the media storage device <NUM> determines the specific data file or files to be authored to a media storage device <NUM> and configures the files for authoring. This determination may be made based on user input, instructions stored locally or instructions received from another device (e.g., using the Internet).

The authoring device may be, by way of illustrative example, a computer running the Linux operating system with specialized software configured to access the microcontroller <NUM> of a media storage device <NUM>. The one or more data files to be written to the media storage device <NUM> may comprise audio (such as a song encoded in the MP3 format) audio-video (such as a music video encoded in the MP4 format), images (such as a photograph encoded in the JPG format), text (such as lyrics encoded in the TXT format) or other data types as will be apparent to one of skill in the art. In an embodiment, the one or more data files comprise uncompressed high definition audio and video with related data (such as song lyrics, liner notes, accompanying artwork or subtitle files). In an embodiment, the authoring device converts the one or more data files into format(s) that will be compatible with multiple external devices. As an illustrative example, the data files could be a series of audio files forming individual tracks for a music album. The data files could be provided to the authoring device in a lossless audio format, such as the Free Lossless Audio Codec (FLAC), and the authoring device will then convert the data files into a compatible music format such as the MP3 format. Similar conversions may be used for video, image and other data file types. In an embodiment, the authoring device is programmed with a list of file types that are known to be compatible with the devices with which the media storage device <NUM> will be used, and all other file types are converted to one of the known-compatible file types so as to maintain the greatest compatibility possible. Once converted (if necessary), the files are arranged into a predetermined folder structure that will be copied to the media storage device. For example, video files may be placed in a folder titled "Video," audio files are placed in a folder titled "Audio," image files are placed in a folder titled "Images," and text or data files are placed in a folder titled "Data.

At step <NUM>, the media storage device <NUM> is connected to the authoring device such that the external device <NUM> is communicatively coupled to the microcontroller <NUM>.

At step <NUM>, the microcontroller <NUM> is instructed to present the media storage device <NUM> as being a fixed, or non-removable, storage device. In an embodiment, this is accomplished by sending a command from the authoring device to the microcontroller to set the RMB for the media storage device <NUM> to zero, such that the media storage device <NUM> will present itself as a non-removable or fixed device. As a result, the media storage device <NUM> effectively presents itself as though it is mounted as a fixed disc (like a standard hard drive) when accessed, rather than as a removable or portable disc. Each logical unit (and each partition on the logical units) on the media storage device will thus report as if it is an individual fixed disc.

At step <NUM>, the authoring device sends a command to the microcontroller causing the microcontroller <NUM> to format the memory <NUM> to have the desired number of logical units. In an embodiment, the microcontroller creates two logical units-LUN zero and LUN one. The first logical unit is formatted to have a predetermined size so as to contain the data file to be written to the media storage device <NUM>. The second logical unit is formatted to contain all of the remaining free space in the memory <NUM> after creation of the first logical unit.

At step <NUM>, the authoring device sends a command to the microcontroller causing the microcontroller to set a temporary access status for the logical unit(s), such that all logical unit(s) may be both read from and written to. This allows information on the logical units to be accessed and the logical units to be written to by the authoring device during the authoring process. In an embodiment, this is accomplished by sending a command from the authoring device to the microcontroller to set a read/write flag in the microcontroller <NUM> to "read/write" for each logical unit.

At step <NUM>, the authoring device sends a command to the microcontroller causing the microcontroller <NUM> to format the logical units in the memory <NUM> to have the desired number of partitions and desired file structure(s), which are predetermined at or by the authoring device. In an embodiment, each logical unit is formatted with two partitions: a first partition using the FAT32 file structure and a second partition using the NTFS file structure. In an alternative embodiment, the first partition uses the exFAT file structure and a second partition using the FAT32 file structure As will be clear to one of skill in the art, other partition schemes may also be used in alternative embodiments depending on the target devices with which the media storage device <NUM> is to be used.

At step <NUM>, the authoring device copies the data files to the memory <NUM>. In an embodiment, the data files are copied to the first logical unit, and the second logical unit is left blank. Identical copies of the data files are placed on both the first partition of the first logical unit and the second partition of the first logical unit so as to ensure devices that can only access a single one of the partitions will be able to view the data files. In an alternative embodiment, a first version of the data files (such as uncompressed audio) are copied to the first partition of the first logical unit, while a second version of the data files (such as compressed audio) are copied to the second partition of the first logical unit.

At step <NUM>, the authoring device sends a command to the microcontroller causing the microcontroller <NUM> to set a final access status for each logical unit. In an embodiment, the first logical unit is set to read only, preventing either users or external devices from modifying the content of the first logical unit. This setting applies to both partitions on the first logical unit, thereby preventing either partition from being modified. In an embodiment, this is accomplished by sending a command from the authoring device to the microcontroller to set a read/write flag in the microcontroller <NUM> to "read only" for the first logical unit while leaving the access setting for the second logical unit unchanged. The first logical unit is set to read only to prevent the data files from being modified and to prevent external devices <NUM> from inadvertently adding undesired system or temporary files to the first logical unit when the media storage device <NUM> is accessed. The second logical unit is left as read/write, enabling users of the media storage device <NUM> to save files to the second logical unit while preserving the integrity of the information on the first logical unit.

Claim 1:
A method for authoring a media device (<NUM>) comprising a non-volatile memory (<NUM>) communicatively coupled to a microcontroller (<NUM>) to be compatible with a plurality of external devices (<NUM>), each of a different type; wherein a specialized external device (<NUM>) is configured as an authoring device, the method comprising the steps of:
determining a set of files to be written to the media device;
preparing the set of files to be written to the media device;
setting the microcontroller (<NUM>) to present the non-volatile memory (<NUM>) as a fixed disk compatible with a certain specific operating system when the media device (<NUM>) is communicatively connected to at least one of the authoring devices (<NUM>) by sending a command from an authoring device (<NUM>) to the microcontroller (<NUM>) to set the removable media bit, RMB, to zero;
formatting the non-volatile memory (<NUM>) to contain a plurality of logical units, including at least a first logical unit and a second logical unit;
wherein the first logical unit is configured to comprise a predetermined amount of the non-volatile memory (<NUM>) and the second logical unit comprises the remaining amount of the non-volatile memory (<NUM>);
wherein the size of each partition is variable and may be adjusted based on the storage needs of the data to be authored;
sending a command to the microcontroller (<NUM>) from the authoring device (<NUM>) causing the microcontroller (<NUM>) to set a temporary access status for the logical unit(s) to allow read/write access to the plurality of logical units;
formatting each of the plurality of logical units to contain one or more partitions, including at least a first partition on the first logical unit;
creating a copy of the set of files in at least the first partition of the first logical unit;
setting the microcontroller (<NUM>) to allow read-only access to the first logical unit; and
verifying that the copy is identical to the set of files;
wherein an authoring device is a device adapted to convert one or more data files into formats that will be compatible with multiple external devices;
wherein to author data means to perform such data conversion;
wherein to author a device means to make such device compatible with multiple external devices by means of such conversion.