[Galaxy S 4 Q&A, Help & Troubleshooting] Perka:
Thx for this thread :)

As for heimdall it should be like this (atm I ony have the s3 and this is how it works on s3)

sudo heimdall flash --SYSTEM mmcblk0p16_system.img --BOOT mmcblk0p21_boot.img --RECOVERY mmcblk0p22_recovery.img

And to install heimdall in Linux

sudo add-apt-repository ppa:modycz/heimdall
sudo apt-get update
sudo apt-get install heimdall

When you dd a kernel you get the whole partition in that .img, can be solved by unpacking/packing the kernel. 10mb > 8mb no bigge but.

When you dd a modem you get a to big .bin file but you can remove the 00 with a hex editor, if not odin dont flash the modem.bin

Hope I get my I9505G soon :D

EDIT:

perk@s-file-stash ~ $ heimdall --help
Usage: heimdall <action> <action arguments>

Action: close-pc-screen
Arguments: [--verbose] [--no-reboot] [--stdout-errors] [--delay <ms>]
Description: Attempts to get rid off the "connect phone to PC" screen.

Action: detect
Arguments: [--verbose] [--stdout-errors]
Description: Indicates whether or not a download mode device can be detected.

Action: download-pit
Arguments: --output <filename> [--verbose] [--no-reboot] [--stdout-errors]
[--delay <ms>]
Description: Downloads the connected device's PIT file to the specified
output file.

Action: dump
Arguments: --chip-type <NAND | RAM> --chip-id <integer> --output <filename>
[--verbose] [--no-reboot] [--stdout-errors] [--delay <ms>]
Description: Attempts to dump data from the phone corresponding to the
specified chip type and chip ID.
NOTE: Galaxy S phones don't appear to properly support this functionality.

Action: flash
Arguments:
--repartition --pit <filename> [--factoryfs <filename>]
[--cache <filename>] [--dbdata <filename>] [--primary-boot <filename>]
[--secondary-boot <filename>] [--param <filename>] [--kernel <filename>]
[--modem <filename>] [--radio <filename>] [--normal-boot <filename>]
[--system <filename>] [--user-data <filename>] [--fota <filename>]
[--hidden <filename>] [--movinand <filename>] [--data <filename>]
[--ums <filename>] [--emmc <filename>]
[--<partition identifier> <filename>]
[--<partition name> <filename>]
[--verbose] [--no-reboot] [--stdout-errors] [--delay <ms>]
or:
[--factoryfs <filename>] [--cache <filename>] [--dbdata <filename>]
[--primary-boot <filename>] [--secondary-boot <filename>]
[--secondary-boot-backup <filename>] [--param <filename>]
[--kernel <filename>] [--recovery <filename>] [--efs <filename>]
[--modem <filename>] [--radio <filename>] [--normal-boot <filename>]
[--system <filename>] [--user-data <filename>] [--fota <filename>]
[--hidden <filename>] [--movinand <filename>] [--data <filename>]
[--ums <filename>] [--emmc <filename>] [--pit <filename>]
[--<partition identifier> <filename>]
[--<partition name> <filename>]
[--verbose] [--no-reboot] [--stdout-errors] [--delay <ms>]
Description: Flashes firmware files to your phone. Partition identifiers are
integer values, they can be obtained by executing the print-pit action.
WARNING: If you're repartitioning it's strongly recommended you specify
all files at your disposal, including bootloaders.

Action: help
Description: Displays this dialogue.

Action: info
Description: Displays information about Heimdall.

Action: print-pit
Arguments: [--file <filename>] [--verbose] [--no-reboot] [--stdout-errors]
[--delay <ms>]
Description: Prints the contents of a PIT file in a human readable format. If
a filename is not provided then Heimdall retrieves the PIT file from the
connected device.

Action: version
Description: Displays the version number of this binary.