In my experiments thus far, the USB remote functionality interferes with the USB printer connection. If USB remote is enabled, I'm in trouble for my regular script.
Yea - when I thought about my previous comment I realized that might happen. The problem is that USB remote code in the stable branch is a real mess. It's interlocked with the scripting engine and affects when scripting is allowed to run based on the status of the USB 5V power level and not on whether USB remote is enabled or not. That code is so bad that it was completely nuked and the version in the dev / unstable trunk is now a complete rewrite.
However, it seems that USB (in general) is enabled at boot. As such, the camera seems preoccupied with making a connection, rather than running my autostart script.
Once the camera recognizes that there is 5V there on the USB power plug, it probably does just that. The reason I suggested enabling the USB remote is that CHDK blocks the 5V status from reaching the Canon firmware when that happens. The problem with that is that it will never recognize that there is a printer there.
I don't fully understand the set_config constants yet. This is the one used to disable USB (from the script referenced previously). Basically, I think I need this at boot time.
set_config_value 121
What that does is set the USB remote menu item to "enabled" - exactly as if you'd done it from the CHDK menu. But using a 0 (disable) or 1 (enable) here will put you into the problem described above.
Let's try one thing on startup ? Put a long sleep at the start of your script
sleep(30000)
and see if that lets the printer setup before your script gets going ?
Otherwise, it seems like you need the scripting engine to completely ignore the USB voltage status if USB remote is not enabled. I'm not going to volunteer to try to make that work with the "stable" code but I can take a look to see if the dev version will work that way.
UPDATE : I checked the code in the main development trunk and as I expected, the interlocks between the 5V status of the USB port and whether the scripting engine will run or not are gone. You might have better luck with the newer trunk -
http://mighty-hoernsche.de/trunk/