After fiddling around with the two breakout boards I’ve assembled, I think I’ve got everything the way I want it. I’ve made some new useful changes as well as fixed the issues I described in my previous post. The remaining parts needed for the Z2 Breakout relay header arrived today and all is working there. I also did some current testing tonight and thought I’d share the numbers.
The first photo is a close up of both sides with the modifications labeled. Yellow lines indicate where traces have been cut. Power input to the regulator has been rerouted from DC_IN to 3.3V and Micro USB power input has been rerouted from USB_IN to DC_IN. In the new layout, USB_IN is left unconnected at the Hirose connector and is removed from the power header. Another ground is added to the power header.
I added two new features. The regulator enable pin was always connected to input power leaving it always on. If you put the Zipit in suspend mode, 3.3V is still available and the regulator remains on. Most likely if the Zipit is in suspend mode you won’t be using the regulator or anything connected to it. The enable pin is now connected to GPIO 54 (and 10K pull down resistor) so it can be turned on/off from userspace. GPIO 54 is removed from the GPIO Header and replaced with another ground pin. My rc.local is already modified to turn the regulator on at boot and the suspend script to disable/re-enable it.
I also thought it might be a good idea to know when the board is connected. The original Zipit Wireless pinout had GPIO 42 labeled as DOCK DETECT. Sure, that sounds like a good one to use. GPIO 42 / DOCK_DETECT is now removed from the audio header (as well as 1 of the 2 AUDIO_COMMON pins) and connected to ground with a 10K resistor. So a logic low reading on GPIO 42 means the breakout board is connected. This could be very useful to automatically run some scripts when connected (perhaps enable the regulator). The new features reduces the pin count which reduces the board size a smidge. The board is now 1.95” x 1.35” (first board is 1.95” x 1.5”).
The relay headers work without any problems. I tested them with an Omron G5SB-14 Relay and an LED. I used 5V from the breakout to power the LED.
The audio output works great.
I still can’t quite figure out the mic input. The mic I’m using was stolen from some crappy mp3 player/recorder that’s been in a drawer forever. Perhaps it’s bad, or maybe I connected it wrong or maybe I can’t figure out the alsa settings. I’m not too worried about it so I will revisit it another time.
Update: The mic input is tested working. It was a bit of a chore to get it going. I ended up having to trace out both mic circuits (dock and headest pins). Both mic inputs are connected through the mic bias bin of the wm8750 which means you can hookup a condenser mic with no external components. The headset mic is connected to RINPUT2 and the dock mic is connected to LINPUT2. In our kernel we only have RINPUT2 defined as a mic. After changing RINPUT2 to LINPUT2 I still couldn’t get the mic to work. I did some digging in the log files and found some info from gpsfan when he originally got the mic working. There’s another workaround needed in wm8750.c to set a register on the wm8750. Zipit Wireless apparently forgot to connect a pin on the wm8750 so the ADC never enables the mic bias output without the workaround. A kernel fix will hopefully be available soon. Until then you can try to build your own with the following info:
I have not tested I2C yet. Will have to breakout my arduino as I have no I2C sensors to test with.
Update: I2C is tested working. I setup my Arduino as a slave that sends an incrementing number upon request to read and used i2c-tools on the Zipit to send the requests.
Finally, the current tests. I used a DMM to measure current and an inline USB voltage/current display to test the regulator output. First I tested a USB light with Zipit on battery and Wifi on. The USB light draws 113mAH consistantly. Voltage fluctuated between 4.65 and 4.75 volts. Next I tested a USB flash drive (same setup). The flash drive draws ~70mAH when idle and maxed out around 120mAH when copying a 200mb file. Voltage never dropped below 4.6V during either test with the flash drive. The last test was with a Re:load 2 adjustable current load. I first set the load to draw 400mAH (using benchtop power supply) and connected it to the Zipit while it was plugged in to AC power. Voltage from the regulator dropped to 3.6V and Zipit remained on. When I disconnected AC power from the Zipit it shut off. The highest load I could get the Zipit to stay on with (while on battery) was ~350mAH and that’s probably pushing it. My guess is that 300mAH is the max it can handle when on battery and typical use. With Wifi off and low cpu load 350mAH might be possible. So, you won’t be running any of those external hard drives on the Zipit without AC power.
Now, how many people still want one? I’m going to order one more prototype batch (3 pieces) just to make sure everything is kosher (new hirose through holes, regulator & USB input changes). The first 2 people who comment that they want to reserve one of the next proto boards (fully assembled & tested) can get one for $20 (free US shipping, if international shipping there may be extra charge, payment will be via paypal). One board per person for this super duper holiday special :) Be sure to input your real email address so I can get in contact with you.
I’d also like to know what kind of “kits” should be offered. I supect nobody will want a bare board. The hirose is the most difficult solder part, regulator second, then the other smt components. So, this is what I’m thinking (subject to change):
Let me know what you think and how many you might want. If you have another “Option”, please share. The more boards ordered, the cheaper they become.