ZeroPhone hardware revisions

From ZeroPhone
Jump to: navigation, search

This page describes revisions of ZeroPhone hardware, starting from the current revision - features, bugs, capabilities for modification, as well as features that were removed.

Gamma revision (blue PCBs)

General information

  • Blue PCB color
  • 20 phones were produced, some more phones might have been assembled by third parties
  • First version to be officially supported by first software
  • Individual PCB interchangeability with future PCB versions will be broken due to some hardware bugs
  • Pi Zero pinout for gamma boards

Features

  • SIM800 modem breakout - working, supported by (overly simple) GSM app in ZeroPhone version of pyLCI
  • Simple GSM speaker - working
  • Simple GSM microphone - partially working, see "Bugs" section
  • 1.3" SPI OLED display header - working, supported by pyLCI
  • Officially supported display: Heltec 1.3" SPI OLED display, SH1106-based, 128x64, monochrome - working, supported by pyLCI
  • Battery charging and protection footprint - working
  • JST-PH 2-pin connector for battery - working
  • 7-color RGB LED - working, supported by zerophone_hw Python package
  • 5V DC-DC for USB - mostly working (small hardware fix needed, see "Bugs" section)
  • MiniHDMI socket - working, supported by Raspbian
  • 3.5mm audio jack using Raspberry Pi PWM - working, supported by snd_bcm2835 Linux driver
  • Full-sized USB socket for USB devices (with ability to solder the socket in backwards) - working
  • MCP23017 expander on I2C, for controlling GSM modem, 7-color RGB LED, 5V DC-DC, software power switch, MPU9050 interrupt, sensing charging state - mostly working
    • Expander-to-userspace-GPIO translation done by gpio_mcp23s08 Linux driver
    • Charging detection supported by ZeroPhone Python API
    • Software power switch control supported by BootSetupScript, low voltage cutoff is not yet implemented
    • 7-color RGB LED control supported by ZeroPhone Python API
    • 5V DC-DC control supported by pyLCI (ZeroPhone Python API support is TODO)
    • MPU-9050 INT sensing - untested
  • ATMega328P on front board, for controlling keypad, vibromotor, keypad backlight, VIN reading and an expansion socket - mostly working
    • Keypad reading - working, supported by pyLCI
    • Vibromotor control - untested
    • Keypad backlight control - untested
    • VIN reading (from pins 2 and 4 of Pi Zero) - untested
    • LED on PB5 (Arduino Pin 13) for debugging (while developing ATMega firmware) - working
  • Software power switch that shuts off VBAT by default, until overridden by the OS on boot (will to be used for rudimentary power management, namely, for software battery cutoff). - working
  • MPU-9050 accel+gyro breakout footprint - untested
  • RTC socket - untested

Modification capabilities

Back board

  • 13-pin expansion header with SPI0, SPI1/I2S (usable as GPIOs), 3.3V, DC-DC 5V and TV-OUT, as well as 2 GND pins.
  • 5-pin header on top of the board, with GPIO4, GPIO17 (shared with bottom 5-pin header), 3.7V, 3.3V and GND
  • 5-pin header on bottom of the board, with I2C SDA and SCL, GPIO17 (shared with top 5-pin header), 3.3V and GND
  • 3-pin header on bottom of the board, with DC-DC 5V, 5V charging input and ATMEGA_ADC (ATMEGA_ADC not working). The header is on 2.54 grid with 5-pin header near it.
  • 6-pin ATMega header, with ATMEGA_TXD, ATMEGA_RXD, ATMEGA_VCC, ATMEGA_RST (through 100nF capacitor, swappable with ATMEGA_GPIO), ATMEGA_ADC and GND - not working (see "Bugs" section)

Front board

  • 2x3-pin audio filtering/expansion board socket on front board - with 2x AUDIO_IN and 2x AUDIO_OUT (for left and right channels), as well as 3.3V and GND. Has jumpers shorting IN and OUT pins by default, so those have to be cut beforehand.
  • 5-pin interconnect between front and keypad PCBs, with I2C SDA and SCL, GPIO4 (shared with top 5-pin header on back board), 3.3V and GND
  • ESP12-compatible footprint with GPIO0 and GPIO22-27, as well as 3.3V and GND. If ESP12 is not soldered on the footprint, drop-in boards can be used for various auxiliary functions

Bugs

  • GSM microphone traces were re-traced and now get a significant amount of (GSM?) noise on them (compared to beta boards), so changes will have to be made - until that, it's hard to use the phone for GSM calls
  • 5V DC-DC FET has to be soldered in with Source and Drain reversed (Gate in same position)
  • Battery protection and charging breakout footprint was changed in order to accomodate a what later appeared to be a less popular variant of that breakout, so changes will likely be reversed in next version
  • 6-pin ATMega header is flipped 180 degrees, so pins are misplaced. As a result, ATMEGA_ADC pin on the bottom expansion header does not work (since it's not routed to the right pin of the 6-pin header), usage of ATMEGA_* pins from the back board is limited, and pogo-pin ATMega programming through back board is not possible.

Beta revision (purple PCBs)

General information

  • Purple PCB color (OSHPark)
  • Has plenty of bugs, assembling those PCBs is considerably harder than necessary
  • Back board layout quality is subpar
  • Will not be supported by software
  • One phone was assembled, one half-assembled (this revision is noticeably hard to assemble)

Alpha revision (green PCBs)

General information

  • Green PCB color
  • Proof of concept, was enough to test out the theory and present it on Reddit
  • Lack most functions, such as GSM modem footprint/connections, power management, GPIO expander etc.
  • Front board requires lots of manual fixes, back board is essentially a custom protoboard
  • Some PCBs were sent out, but, hopefully, never assembled =)
  • Will not be supported by software, though SD card image is still availabke