dev builds
themes manual
device status forums
mailing lists
IRC bugs
dev guide

Search | Go
Wiki > Main > BigDisk (r5)

How to use a disk >137 GB with Rockbox


With an Archos, it is possible to replace the harddisk with e.g. a 160 GB model, but out of the (Rock)box, only up to 137 GB can be used.

ATA disks have an architecture limit at 137 GB, resp.128 GiB, resulting from LBA 28 bit sector addressing. Larger disks use an ATA6 extension called BigLBA or LBA48 to overcome this. Without this extension being used, the disk appears to have 137GB for compatibility reasons.

Two obstacles prevent easy use of the full capacity in an Archos:
  • Rockbox doesn't use LBA48 (neither does the stock Archos firmware or BootBox), but this is a pure software issue.
  • The USB to ATA bridge chip only does LBA28, we can't change that, no way to reach the upper part over USB.

Rockbox can now be compiled with the option HAVE_LBA48 to overcome the software issue. Because of the USB problem, the way to go is a second partition for the higher part. Rockbox has another compile option, HAVE_MULTIVOLUME, to enable working with a second partition. Only Rockbox can access it up there, not the USB mode. You either have to copy files to it before installing the disk into the Archos, or let Rockbox do it with its cut/copy/paste capabilities (slow).

Step 1: build your own Rockbox

Sorry, you better be able to compile Rockbox. The two options are not compiled in by default, because Rockbox would grow unnecessary for many users who have no benefit from it. At the bottom I've published links to ready-to-go custom builds in my webspace, so users who don't want to compile can try it out, but I don't want to make a habit of updating that.

Depending on what model you have (Player, FM, Recorder V1 or V2), edit the proper config file (config-player.h, config-fmrecorder.h, config-recorder.h, config-recorderv2.h) and add the following 2 lines:
#define HAVE_LBA48

Make a fresh build as usual and install it to the box. Everything should behave normal, no visible change yet.

Step 2: prepare the disk

If the disk is new, you can use the USB mode of the Archos to create the first partition as large as LBA28 allows. (If you already possess it, you probably have done so already.) If done externally, care must be taken that the partition really stays below 128 GiB, to be completely accessible!

The second partition has to be partitioned outside of the Archos, as of now. Maybe one day there will be an fdisk+format plugin so this can be done within Rockbox...

You can use such a cheap 2.5" to 3.5" adapter to connect it to your PC's IDE port, or a USB case/adapter. Create a primary partition in the free space, format it with FAT32, give it a nice volume label (optional). Don't create an extended partition, Rockbox can't use that. While you have it so nicely accessible, copy your all time favorite files (or whatever you want there) onto the second partition. Once back in the Archos, transfer to/from the second partition won't be so comfortable any more.

OK, put the disk back in your Archos and fire it up.

Step 3: using it

The second partition will appear in the Rockbox browser as a "virtual subdirectory" named <HD1>. This name is hard coded atm (for HD0 being the normal root, HD1 the next partition), maybe one day it could be the volume name. You will find its root directory under there. Ondio users already know the concept, from the external MMC card accompanying the internal storage.

Apart from this "decoration", you can do everything you want at the second partition like with the first, read and write, no limitations. The cut/copy/paste functionality is useful to move things around. It is in the context menu of the browser, hold "play" to get there. Bear in mind that if you move files across partitions, they have to in fact be copied. This is handled transparent to you, but of course way slower than just changing a directory link.

Some care must be taken in USB mode. The second partition is not reachable (as mentioned), but Windows tries to. Probably the addressing wraps into the lower part and it reads garbage. Windows suggests to format the partition, don't agree to that! I'm not sure what happens, but likely it would overwrite parts of the first partition instead.

You can hide the second partition from Windows, by changing its type from 0x0C (LBA mapped FAT32) to 0x1C (same, but hidden). This is still possible with the disk inside the Archos, because the partition table is in the very first sector of the disk, the MBR (master boot record). I did that hardcore, with a sector editor, changing the byte at offset 0x1D2 of the MBR. (Hints for nice free partitioning tools are welcome.)

Snapshot builds supporting LBA48

I have created builds of Nov. 9, 2007 with the lba48 defines compiled in. They are attached. Be aware that I had to remove database since the firmware would have been too big if I havn't.


Some potential improvements are left to us developers:

  • Fix the disk info to use LBA48, too. Currently it reports 137GB.
  • speed up file copy by using the big playback buffer instead of the plugin buffer
  • use the volume name for the virtual directory
  • create an "fdisk" plugin for partitioning and formatting, so the disk can stay inside the Archos
I Attachment Action Size Date Who Comment
fmrecorder.zipzip manage 987.3 K 10 Nov 2007 - 14:26 HarrisonTu  
fmrecorder_8mb.zipzip manage 987.4 K 10 Nov 2007 - 14:27 HarrisonTu  
player.zipzip manage 508.0 K 10 Nov 2007 - 14:28 HarrisonTu  
recorderv1.zipzip manage 949.9 K 10 Nov 2007 - 14:30 HarrisonTu  
recorderv1_8mb.zipzip manage 950.1 K 10 Nov 2007 - 14:31 HarrisonTu  
recorderv2.zipzip manage 987.3 K 10 Nov 2007 - 14:32 HarrisonTu  
recorderv2_8mb.zipzip manage 987.4 K 10 Nov 2007 - 14:33 HarrisonTu  
r5 - 10 Nov 2007 - 14:33:26 - HarrisonTu

Copyright by the contributing authors.