Index: firmware/export/config/gigabeats.h =================================================================== --- firmware/export/config/gigabeats.h (revision 30260) +++ firmware/export/config/gigabeats.h (working copy) @@ -75,6 +75,8 @@ that needs spinups and can cause skips when shaked */ #define HAVE_DISK_STORAGE +#define HAVE_MULTIVOLUME + /* Define this if you have a software controlled poweroff */ #define HAVE_SW_POWEROFF Index: firmware/usbstack/usb_storage.c =================================================================== --- firmware/usbstack/usb_storage.c (revision 30260) +++ firmware/usbstack/usb_storage.c (working copy) @@ -1256,5 +1256,5 @@ tb.inquiry->Versions = 4; /* SPC-2 */ tb.inquiry->Format = 2; /* SPC-2/3 inquiry format */ - tb.inquiry->DeviceTypeModifier = DEVICE_REMOVABLE; + tb.inquiry->DeviceTypeModifier = 0; } Index: firmware/target/arm/imx31/gigabeat-s/usb-target.h =================================================================== --- firmware/target/arm/imx31/gigabeat-s/usb-target.h (revision 30260) +++ firmware/target/arm/imx31/gigabeat-s/usb-target.h (working copy) @@ -33,14 +33,6 @@ /** Sector read/write filters **/ /* Filter some things in the MBR - see usb-gigabeat-s.c */ -void usb_fix_mbr(unsigned char *mbr); -#define USBSTOR_READ_SECTORS_FILTER() \ - ({ if (cur_cmd.sector == 0) \ - usb_fix_mbr(cur_cmd.data[cur_cmd.data_select]); \ - 0; }) -/* Disallow MBR writes entirely since it was "fixed" in usb_fix_mbr */ -#define USBSTOR_WRITE_SECTORS_FILTER() \ - ({ cur_cmd.sector != 0 ? 0 : -1; }) #endif /* USB_TARGET */ Index: firmware/common/disk.c =================================================================== --- firmware/common/disk.c (revision 30260) +++ firmware/common/disk.c (working copy) @@ -49,6 +49,7 @@ static const unsigned char fat_partition_types[] = { 0x0b, 0x1b, /* FAT32 + hidden variant */ 0x0c, 0x1c, /* FAT32 (LBA) + hidden variant */ + 0xff, /* added to support extra-well hidden partitions on gigabeat S */ #ifdef HAVE_FAT16SUPPORT 0x04, 0x14, /* FAT16 <= 32MB + hidden variant */ 0x06, 0x16, /* FAT16 > 32MB + hidden variant */