I just didn't knew how it worked on other devices, as I only own an SGS. And I thought that mounting in external_sd is considered bad practice (like ext sd is mounted in emmc in non samsung roms). But that's also why there is an option to change the mount point.
This is not mounting in /sdcard/external_sd/, it is mounting in /sdcard/usbStorage/...
As for it being bad practise... according to whom? Douchebags? HTC? Is it ideal? No it isn't, but it's a lot less silly than mounting a secondary card in /mnt/whatever or /emmc or whatnot. Why? Because the Android API has no provisions to detect or use these things, so it's all completely useless to normal apps not specially designed to take advantage of these non-standard paths (which are often hardcoded as well).
From a Linux viewpoint /mnt/whatever would make more sense. From an Android standpoint, /sdcard/whatever is the place to be.
Until such times that a proper mechanism and API is devised by Google to work with this, the only
practical place to mount world-writable disks/partitions/drivers/usbsticks/networkdrives/etc is in /sdcard/... And for USB mounted stuff other Samsung devices happen to use /sdcard/usbStorage/sda (sda1, sdb, etc).
(upon re-reading, the above sounds a bit unfriendly - it is not meant to be unfriendly)
Good to hear, but I'm curious what the problem was, cause if DSLR controller works on other devices with built in host support, that means something is missing here (either in the kernel or in the ICS ROM itself)
There are multiple parts to USB host. You have your basic kernel support that your patch (in combo with your app) offers, then you have the Android USB host APIs (that require USB host kernel, obviously). These are Java APIs officially introduced in Honeycomb (3.1).
DSLR Controller is mostly based on those Java APIs, because it allows you to get raw access to USB devices without root.
Older devices may support only kernel USB host and not the APIs (like various Gingerbread Samsungs). For those, I have backported the Android USB host APIs, BUT this requires root to get permissions on the USB device.
So if you do not have root but a proper 3.1+ Android build, DSLR Controller will work. Else, DSLR Controller requires root.
There is a third class of USB host supporting devices: devices that actually do have the Android USB host APIs AND "advertise" to apps that this works, AND have working USB host kernels, BUT the API doesn't actually work (actually not uncommon!). The SGS with ICS and your kernel falls into this category. DSLR Controller was _meant_ to handle this situation, but I never had a device with this problem so I couldn't test it. And it appears there was a bug in this handling. This is now fixed (literally a one-line fix in the code).
... or, to make a long story short: a bug in DSLR Controller has been fixed
I haven't seen how the backporting was done, so I have no idea either. I did fixed the root hub though, so in build2 connecting the camera should as simple as using only an y cable with power (as fortunately canon use miniusb ports), no external hub is needed.
Will it still work with an external HUB ? (I don't have a y-cable only hubs... any advice on where to get a good one?)