I'm a little confused tbh, as ck says:
It turns out the controller is so low powered that it can only process ~30 shares per second which mean that unless diff is set higher, they work their way into a death spiral before diff catches up. Great...
Which to me sounds like a hardware issue - or is it the firmware that decides how much power is provided to the controller?
It's not a firmware issue. The controller hardware they bundle with it is not fast enough to handle running at low diffs, and most pools start at a lower diff for a while before vardiff pushes them up. If they stay low diff long enough the controller never catches up. I gave them a driver code workaround (i.e. hack) to get over this hurdle. It means they'll (appear to) run at low hashrates for a while until the pool reaches a diff suitable for the device. When they say it's a firmware issue, they mean they'll offer new firmware with an updated cgminer to address the issue.