I had the same problem. Looking at the source of heimdal revealed that this message is send when no USB device is attached.
And this was in fact the case. lsusb
showed that the kernel is not aware of any USB device related to the Galaxy S:
flo@flo-pc ~/data/cm9-sgs $ lsusb
Bus 002 Device 004: ID 046d:0990 Logitech, Inc. QuickCam Pro 9000
Bus 003 Device 069: ID 1a40:0101 TERMINUS TECHNOLOGY INC. USB-2.0 4-Port HUB
Bus 006 Device 002: ID 046a:0023 Cherry GmbH CyMotion Master Linux Keyboard
Bus 007 Device 002: ID 058f:6254 Alcor Micro Corp. USB Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 005: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 007 Device 004: ID 046d:c521 Logitech, Inc. Cordless Mouse Receiver
After I used a different USB cable and a different USB port, my Galaxy S appeared on lsusb
while it's in download mode:
flo@flo-pc ~/data/cm9-sgs $ lsusb
Bus 001 Device 016: ID 04e8:6601 Samsung Electronics Co., Ltd Mobile Phone
Bus 002 Device 004: ID 046d:0990 Logitech, Inc. QuickCam Pro 9000
....
And heimdall was able to flash a new kernel!
So I have two suggestions:
- try another USB cable, I suspect the original Samsung USB cable to be of low quality
- try another USB port, ideally without a USB hub between the devices