diff --git a/MediaTypeFromDevice/FromMmc.cs b/MediaTypeFromDevice/FromMmc.cs
index 5532a0c..f097917 100644
--- a/MediaTypeFromDevice/FromMmc.cs
+++ b/MediaTypeFromDevice/FromMmc.cs
@@ -39,7 +39,8 @@ namespace Aaru.CommonTypes
{
public static partial class MediaTypeFromDevice
{
- static MediaType GetFromMmc(string model, byte mediumType, byte densityCode, ulong blocks, uint blockSize)
+ static MediaType GetFromMmc(string model, byte mediumType, byte densityCode, ulong blocks, uint blockSize,
+ bool isUsb)
{
switch(mediumType)
{
@@ -121,6 +122,14 @@ namespace Aaru.CommonTypes
"SCSI medium type is {0:X2}h, setting media type to CD-RW.", mediumType);
return MediaType.CDRW;
+ case 0x40 when isUsb:
+ case 0x41 when isUsb:
+ case 0x42 when isUsb:
+ AaruConsole.DebugWriteLine("Media detection",
+ "SCSI medium type is {0:X2}h and device is USB, setting media type to Flash Drive.",
+ mediumType);
+
+ return MediaType.FlashDrive;
case 0x80:
if(model.ToLowerInvariant().StartsWith("ult", StringComparison.Ordinal))
switch(densityCode)
diff --git a/MediaTypeFromDevice/FromScsi.cs b/MediaTypeFromDevice/FromScsi.cs
index 6b4e776..508b157 100644
--- a/MediaTypeFromDevice/FromScsi.cs
+++ b/MediaTypeFromDevice/FromScsi.cs
@@ -47,9 +47,10 @@ namespace Aaru.CommonTypes
/// The density type byte from MODE SENSE
/// How many blocks are on the media
/// Size in bytes of each block
+ /// Device is USB
///
public static MediaType GetFromScsi(byte scsiPeripheralType, string vendor, string model, byte mediumType,
- byte densityCode, ulong blocks, uint blockSize)
+ byte densityCode, ulong blocks, uint blockSize, bool isUsb)
{
switch(scsiPeripheralType)
{
@@ -74,7 +75,7 @@ namespace Aaru.CommonTypes
case 0x07: return GetFromOdc(mediumType, blocks, blockSize);
// MultiMedia Device
- case 0x05: return GetFromMmc(model, mediumType, densityCode, blocks, blockSize);
+ case 0x05: return GetFromMmc(model, mediumType, densityCode, blocks, blockSize, isUsb);
// MD DATA drives
case 0x10 when model.StartsWith("MDM", StringComparison.Ordinal) ||