Yeah, it works, but there are drawbacks. An SD card is a normal block device, with a partition table and everything. What I did was... create a small (32MB) FAT16 partition, bootable and with CHDK on it, create a second, large (~8GB) FAT32 partition for your pictures. Now I hooked the boot code so it would show the camera the FAT32 partition, so it doesn't know about the FAT16 partition after CHDK has loaded. That's all fine, it works transparently. Joy!
The thing is, this is still platform-dependant code. For *every* camera model, this code will have to be traced and modified all over again, so this currently only works on the S5 and (possibly) the A720, I haven't heard of anyone attempting to use that code on other models yet.
Now for the real drawback: Windows is about as stupid as the camera when it comes to reading the SD card's partition table. While it's OK for a camera to not care about several partitions on a memory card, a PC should be able to handle them ALL, since SD cards are really general-purpose devices. In the disk manager it'll show both(all) partitions, but it will refuse to read the FAT32 one (assuming the previously mentioned setup), as Microsoft thought.. let's use the first partition on removable media and let's thwart any attempts at using the second partition in any way whatsoever. I have carefully looked into this and there seems to be NO way of having a >4GB SDHC card boot CHDK on the camera AND be read by Windows. There might be a workaround, but it involves a client-side modification and you might have to insert the SD card twice before getting access to the FAT32 partition and you will have to run the program again to get the camera to boot CHDK again.
Everything works fine on Linux, though, it's just that Windows is pedantic about it. As long as you access your camera through USB, it should be transparent and you should have no problems.
For the record, if anyone has any ideas, here is what I've tried so far:
- Swapping partitions 1 and 2 in the partition table (code only, locations stay the same): results in Windows reading the FAT32 partition, camera reading FAT32 partition and not booting CHDK anymore until this change is reversed
- Partition type: my FAT16 partition's type is currently 0x83 (Linux). Setting it to whatever value doesn't matter, even making it 'hidden' doesn't work. Windows just reads the first partition and completely ignores the partition type (as does the camera, by the way)
- Bootable flag: ignored. FAT32 partition has bootable set, yet the FAT16 partition is read (well, this was a long shot, it's quite logical
)
- Zerofilling the FAT16 partition, just to see if it'll fall back to the second partition: 'This drive is not formatted. Do you want to format it?'
- Assigning a drive letter to the second partition in the Disk Manager: refused
-
GPT: Ignored on removable devices, if at all supported by the platform (currently 64-bits editions only)
- I have the feeling that I forgot something, but I can't remember what.
There seems to be one other option, though... some card manufacturers apparently ship special drivers which will make the card(reader) appear as a fixed device, rather than a removable one. This should fix all problems, but I've been told that it's card(reader?)-dependant and I have been unable to locate any software of this kind.
If you're lucky enough to have a Linux server and still want to use Windows, you could set up a samba share to the mountpoint of your SDHC card and let it automatically mount there.
Edit:
By the way, it might not be entirely clear to everyone... Facts:
- Camera can only boot from the *FIRST* partition (and it must be FAT12/FAT16)
- Windows only reads the *FIRST* partition.
So there is no swapping partitions around. Another idea I got yesterday but forgot to write down is writing a FAT32 plugin for Total Commander. I have seen the ext2/3/reiserfs plugin so I guess it should be possible to make such a plugin. The preferred solution is to have this in the Windows Explorer, but that might not be (easily) possible.
I'll create an ext3 partition on my SD card now, to see if Total Commander will read it. I don't know if Windows actively blocks access to partitions it apparently doesn't want anyone to know about.
Edit2: just verified that Total Commander *WILL* read the (second) ext3 partition on my SD card, though the card needs to be inserted before starting TC ('refresh' doesn't seem to work, though that could be an issue with the plugin itself). This means that it will be possible to access it that way when someone writes a FAT32 driver for that.