The Neo1973's mini-USB port can be configured to act as a usb host instead of a usb device. This opens up a range of possibilities, such as USB cameras and usb input devices.
This used to require a kernel patch provided as an attachment in Bugzilla, but that same page now details how to do this without any kernel hacking:
Tell the device that it is logically a host:
echo "host" > /sys/devices/platform/s3c2410-ohci/usb_mode
Instruct the device to provide 5 volts:
echo "1" > /sys/devices/platform/neo1973-pm-host.0/hostmode
Note: You may want to run ifconfig usb0 down
prior to switching to usb host mode, as the Neo's usb networking may not like having its USB port disappear. You'll probably want to ssh into your Neo over WiFi or Bluetooth before starting all of this, alternatively use an on screen keyboard.
Three-headed cables are required if you want to power the FreeRunner / USB device whilst in host mode. For many uses the FreeRunner provides sufficient power to make such a cable unnecessary. At the moment, you'll have to manufacture this one yourself. You need to make a cable with three ends:
You connect the Data+ and Data- wires of the Neo and the device, and connect all of the ground wires together and all of the +5V wires together. This powers the Neo and the device, while letting the neo talk to the device. You have to connect 2pcs 15kOhm resistors, one from D+ to ground, and one from D- to ground, to comply with USB-spec for hostmode, as Freerunner is switching off the internal resistors when you enable charging/powering over USB by asserting EN_USBHOST. See schematics, LOCATION:49XX
Just for reference, the USB wires from left to right are:
The Mini_USB-B connector has a fifth pin, the ID-pin. This pin is supposed to be short to ground to signal Freerunner to enter hostmode. For the Y-cable and enabling external power while in hostmode, you may connect a 47kOhm resistor from ID-pin to ground. This is the same trick the OM-wallcharger uses to signal to Freerunner it can charge with 1A. Future kernels should switch to hostmode + external power when seeing this 47k resistor.
You'll need to force the Neo to go into fast charge mode, since it can't do its usual power negotiation over USB.
echo -n "fast_cccv" > /sys/devices/platform/s3c2410-i2c/i2c-adapter/i2c-0/0-0008/chgmode
Note that these instructions are provided in the hope that they are useful but without any warranty!
black GND green 0V white 0V red +5V
black GND green 0V white 0V red 0V
when freerunner acts as a device and
black GND green 0V white 0V red +5V
when it acts as a host.
The adapter works with kingston data traveller 4G memory stick and aiptec pencam webcam. However, for some reason it did not work with any of the tested USB keyboards or mice:
usb 1-2: new full speed USB device using s3c2410-ohci and address 24 usb 1-2: device descriptor read/64, error -62 usb 1-2: device descriptor read/64, error -62 usb 1-2: new full speed USB device using s3c2410-ohci and address 25 usb 1-2: device descriptor read/64, error -62 usb 1-2: device descriptor read/64, error -62 usb 1-2: new full speed USB device using s3c2410-ohci and address 26 usb 1-2: device not accepting address 26, error -62 usb 1-2: new full speed USB device using s3c2410-ohci and address 27 usb 1-2: device not accepting address 27, error -62