Recent changes Random page
GAMING
Technology
 
Gaming
Entertainment
Science Fiction
Biggest wikis
Hobbies
Music
See more...

Bootable SD card

From CHDK Wiki

Jump to: navigation, search
 

How to prepare the SD card for booting the DISKBOOT.BIN file


After compiling the g7_blinker for the proper LED address you want, do the following with your SD card:

  • Format the card to FAT16 with a desktop computer via a USB card reader and create the DCIM and MISC folders on the newly formatted card. Alternatively, you can format your card with the camera, which should create a FAT16 filesystem. This is a simpler solution for Linux

and Mac users.

  • Important: Due to the limitations of FAT16 this will not work with cards bigger than 4G!

Under MacOS X Leopard, the following series of steps will work:

  • Load your SD card in a card reader (unless your camera appears as a disk drive when you connect it)
  • Open Disk Utility and highlight the volume. Click "Info" and look for "Disk Identifier". For me, it was /dev/disk2s1
  • close the Info window
  • With the volume highlighted (not the "drive"), click "Unmount".
  • From a Terminal command line, run a command like this:
 sudo newfs_msdos -F 16 -v SX100IS -O -b 4096 -c 128 /dev/disk2s1 
  • If you get an error on the Mac command line after running this command like "newfs_msdos: warning: /dev/disk2s1 is not a character device" go ahead and re-mount the drive in the Apple Disk Utility. The drive should still show up as a FAT 16 drive, you can then continue.

Note: Many new cards come with FAT32 filesystem. Instructions below will NOT work for FAT32. Use FAT16.

After this,


Windows: Case #1

  • Download the HDHacker utility to execute the following steps.
  • Install and run the HDHacker.
  • Select the proper drive letter corresponding to your SD card in the card reader.
  • Select "logical drive" and "first sector" (as far as I know, it's the default)
  • "Read sector from disk"
  • Save this sector to a file for safety (512 bytes) (I named it: BootSector_G9.bin)
  • Use a hex editor to edit this file
  • Go to offset 0x40 (decimal 64) and type BOOTDISK in ASCII mode (as explained here). Keep in mind that, if you do not see FAT12 or FAT16 around 0x36 (decimal 54) in the hex editor, you probably picked the wrong drive. Do not overwrite anything in that case.
  • Save it as a different file (I named it: BootSector_G9_bootable.bin)
  • Use HDHacker to "load sector from file" this new file containing BOOTDISK information onto your SD card
  • "write sector on disk" Don't forget to select the correct drive letter!

Windows: Case #2

  • Extract from above bootable.zip the "bootable.exe" file
  • Put your SD card into reader or SD slot in computer and copy "bootable.exe" to the SD card
  • SD card behaves as disk and has assigned some letter (for example "F:"). Run shell (on winXP: menu Start - Run..., type "cmd") and change to SD card (by typing "F:" and press Enter in this example case)
  • Run "bootable.exe" You will be prompt to give right syntax as "bootable.exe F:"
  • Confirm and your SD card is bootable (Note: Doesn´t work with SanDisk Ultras "USB-Edition"!)

Windows: Case #3

Use this small GUI Utility created by whim THX

Latest version here or version 1.34 here

More info here

Linux:

  • Start a terminal, if you haven't done so already
  • Determine the location of your card, it is usually something like /dev/sdx. If the card is mounted, you can determine the location from the mount command. Make sure you pick the right one! Replace the x in /dev/sdx appropriately.
  • Make sure your card is unmounted (umount /dev/sdx1)
  • Now, you need to alter the partition's bootsector. There are two ways to do this. This guide assumes hexedit is used, though you can use any hex editor. Keep in mind that, if you do not see FAT12 or FAT16 around 0x36 (decimal 54) in the hex editor, you probably picked the wrong drive. Do not overwrite anything in that case. If you see FAT32, you will have to reformat the card in FAT16 - this can be easily done with mkdosfs -F 16 /dev/your_card_partition. Make sure to copy all the needed images off the card before doing this.
    1. Directly
      • Open your SD card's FAT partition in hexedit: hexedit /dev/sdx1
      • Go to offset 0x40 (decimal 64) and type BOOTDISK in ASCII mode.
      • Save (Ctrl-X in hexedit) and quit.
    2. Indirectly
      • First, extract the bootsector like this: dd if=/dev/sdx1 of=BootSector_G9.bin bs=512 count=1
      • Copy the saved file, so you have a backup: cp BootSector_G9{,_bootable}.bin
      • Open the copy in a hex editor: hexedit BootSector_G9_bootable.bin
      • Go to offset 0x40 (decimal 64) and type BOOTDISK in ASCII mode.
      • Save (Ctrl-X in hexedit) and quit.
      • Upload the bootsector to the card again: dd if=BootSector_G9_bootable.bin of=/dev/sdx1 bs=512 count=1
    3. Indirectly (without hexedit, assuming bash)
      • First, extract the star of the bootsector like this: dd if=/dev/sdx1 of=BS.bootable bs=64 count=1
      • Next, append the required name: echo -n HEXEDIT >> BS.bootable
      • Finally, append the rest: dd if=/dev/sdx1 bs=1 skip=72 count=$[512-72] >> BS.bootable
      • Upload the bootsector to the card again like in the former example: dd if=BS.bootable of=/dev/sdx1 bs=512
    4. Indirectly with script (szymonolko_a_t_o2.pl)
      • Save below lines as script
      • Run it with one argument which is the partition to be made bootable, eg. make.bootable /dev/mmcblk1p1
#!/bin/bash
DEV=$1
if [[ -z "${DEV}" ]]
then
   echo "Usage: $0 partition"
   exit 1
fi
dd if=${DEV} of=1.tmp.bin bs=64 count=1
echo "BOOTDISK" > 2.tmp
dd  if=2.tmp of=2.tmp.bin bs=8 count=1
rm 2.tmp
#512-64-8=440
dd if=${DEV} of=3.tmp.bin skip=9 bs=8 count=55
cat 1.tmp.bin 2.tmp.bin 3.tmp.bin > bootable.bin
rm 1.tmp.bin
rm 2.tmp.bin
rm 3.tmp.bin
dd if=bootable.bin of=${DEV} bs=512 count=1
rm bootable.bin

Mac

    1. If you have darwin ports installed, the instructions for the Linux direct method also work for the Mac, provided you have darwin ports installed
      • Go to MacPorts website and install MacPorts [1]
      • type sudo port install hexedit to install hexedit
      • type man hexedit to familiarize yourself with the commands of hexedit
      • Open Disk Utility and click on the image for the SD card - click on "Get Info" to determine the location of the partition (such as disk4s1)
      • Use Disk Utility to unmount the partition
      • in a terminal window, type sudo hexedit /dev/disk4s1. Press enter (that's fn+return on some keyboards). Type in '40' to go to offset 0x40. Hit enter. Hit "tab" to switch to typing on the ASCII side. Type "BOOTDISK". Hit control-X and type "Y" when prompted to save.
    2. If you don't want to install darwinports and hexedit, you can also use the free 0xED [2], or Hex Fiend, which will work with the indirect way as well. This may be the simplest way for a Mac user to get a bootable SD disk.
      • Go to the Disk Utility. Select your SD card from the list at the left, and click Informations to get the disk identifier (example: disk4s1). Use this in the steps below
      • Using Disk Utility, unmount (don't eject!) your SD card.
      • Open a Terminal window and type: dd if=/dev/disk4s1 of=BootSector_G9.bin bs=512 count=1. This copies a sector of the SD card to your Mac's hard disk.
      • The BootSector_G9.bin file in your Home directory contains your SD card's boot sector. Make a backup of it in case anything goes wrong.
      • Open BootSector_G9.bin with 0xED. Keep in mind that, if you do not see FAT12 or FAT16 around 0x36 (decimal 54) in the hex editor, you probably picked the wrong drive. Do not overwrite anything in that case.
      • If the file is correct, select the Overwrite writing method (Command+Shift+O).
      • Go to offset hex 40 (decimal 64) and press Tab. Type BOOTDISK. Save and quit.
      • In your Terminal window, type: dd if=BootSector_G9.bin of=/dev/disk4s1 bs=512 count=1. This copies the modified file to the boot sector of your SD card.
      • Using Disk Utility, mount the card.
      • Copy the file DISKBOOT.BIN to the SD card. Make sure to use the correct version for your model of Canon camera.
      • Eject the SD card. Slide the tab to the LOCK position

It is necessary to LOCK the SD card to load the CHDK software. In locked mode and booted into CHDK, you are still able to save your pictures on the card!

Now you have a Bootable SD card. The camera will now attempt to load the DISKBOOT.BIN file whenever the camera is started with that SD card (when it's locked).


Further instructions for blinking the firmware:


  • Power off the G9. (Disconnect it from the PC if it was connected before)
  • Take out the SD card.
  • SET THE SD CARD LOCK! (THIS IS VERY IMPORTANT) Now it should be read-only.
  • Insert the SD card again.
  • Turn on the G9. After a few seconds, the AF (or other) led turns on, at least it looks like it. It is actually blinking, but too fast for the human eye to register.


How to stop the blinking?


  • You have to remove the battery to stop the blinking.
  • To use your SD card as before: simply clear the SD LOCK, so it is set back to read/write enabled.


[Back to the G9 page]

Rate this article:
Share this article: