It’s official, Zipit breakout boards are here. You can order yours in the shop I’ve setup. My previous posts about the design process have some info about the board’s functionality and some issues that needed fixing. This post is intended to bring all the info to one spot and explain how it functions. Any new information will be added to this post.
Update: This board is sold out and I won’t be producing anymore. I have a public project on OSH Park with a part list if you want to build your own. Thanks to all who ordered!
My explanations below assume you are looking at the board with the hirose connector away from you and the USB ports closest to you as pictured below.
The Zipit cannot provide 5V for USB host unless the AC adapter is plugged in so the breakout includes a TI TPS61240 boost converter to supply 5V from the Zipit’s 3.3V supply. According to my testing, the Zipit can only supply enough current to get a max of 300-350mAH from the regulator. With wifi on and some CPU load that number decreases. Low power USB devices (like flash drives, keyboards and mice) should be okay. Only 5 components are needed for the regulator circuit: tps61240, input capacitor, output capacitor, inductor and pull down resistor. The enable pin of the regulator is connected to GPIO 54 which requires the circuit to be turned on/off through software. To enable the regulator from the command line:
echo “54” > /sys/class/gpio/export
echo “out” > /sys/class/gpio/gpio54/direction
echo “1” > /sys/class/gpio/gpio54/value
The power header contains two GND pins, DC_IN, 5V Regulator Output, 3.3V (Zipit provided) and 1.8V (Zipit provided) and is located on the lower right of the board.
The Zipit has USB 1.1 Host and OTG support. The breakout has a USB A Socket for host and Micro USB socket for OTG. The D+ and D- pins are connected to a set of jumpers allowing you to switch from the host or OTG port. The D- jumper is on top and D+ on bottom. Move the jumpers to the left for host and to the right for OTG.
The Micro USB port can be used to power/charge the Zipit.
The host port can be powered from the tps61240 regulator (see above) or from DC_IN. The regulator must be used if the Zipit is running on battery. If you keep the Zipit plugged in all the time then it makes more sense to use DC_IN for power as the available current will be higher than the regulator. Use the jumper provided in the center of the board to switch. There is no internal hub on the Zipit so hotplugging USB devices isn’t supported. After connecting a USB device you need to force the Zipit to recognize it by switching the USB mode. If the Zipit is already in host mode you should switch to device mode then back to host mode. If it’s in device mode then switch to host mode and it should be recognized. In slug’s openwrt-gmenu2x distro, you can do this easily with the USB Mode menu item. This can also be done from the command line:
echo “device” > /sys/devices/platform/z2-usb-switch/usb_mode
echo “host” > /sys/devices/platform/z2-usb-switch/usb_mode
Silk screen for the Audio/I2C header is located on the bottom of the board. The labels correspond to the pins as seen on the bottom. For example, MIC_REM is the upper left pin on the bottom and AUDIO_LOUT is the lower right pin on the bottom.
The I2C pins are connected to two 10K resistors on the top. 3.3V power and GND is provided.
Audio connections include Left out, Right out, Headphone Jack Detect, Mic in, and Common. The Mic Remote pin on the header is connected to the AER915 chip.
Microphone input requires a patched kernel.
Until a compiled one is available you can make your own with my patch against anarsoul’s 3.17-wip kernel branch. In the files section at the bottom of this post are 2 kernels with the mic patch applied. To enable the mic input, open alsamixer and set “Left PGA Mux” to Line 2, “ALC Capture Function” to Left, then adjust the “Mic Boost” to your liking. You can test the mic by plugging in headphones and running “arecord -f cd | aplay” which will output mic audio directly to the headphones.
Three GPIO pins (44, 84, 86) can be used to control relays (or anything needing 5V for switching). In the lower left corner of the board you can see the relay header and the GPIO silk screen labels. The circuit is comprised of a 1K pull up resistor, a transistor (MMBT2222A) for switching and a protection diode (SM4004PL-TP). 5V to the relay output is provided by the tps61240 regulator so it must be enabled for the relay header to work (see above).
Silk screen labels for the GPIO header are on the bottom of the board. The GPIO pins are max 3.3V tolerant. The header contains GPIO’s 51, 114, 81, 53, 12, 93, 94, 52 and 50. There is also a GND pin. GPIO 12 can be used as a PWM pin with kernel modifications. The 3.2 kernel in the files section at the bottom of this post has GPIO 12 assigned to pwm-backlight.2 in /sys/class/backlight.
GPIO 42 is connected to ground via 10k resistor on the breakout board. This will provide a logic low value when the breakout board is connected and logic high when removed. You can export the gpio and read it’s value:
echo “42” > /sys/class/gpio/export
echo “in” > /sys/class/gpio/gpio42/direction