Mod boards

From ZeroPhone
Jump to: navigation, search

ZeroPhone has expansion ports with GPIOs accessible on them, and those ports also expose various interfaces - I2C, I2S and SPI. I've developed different boards for those expansion ports, those boards allow to add hardware to ZeroPhone in order to increase its functionality.

GitHub repository with official mod boards described here

ZeroPhone parts' replacement boards

While ZeroPhone can be assembled from easily accessible parts, some of them can be replaced in order to add some useful functions to a ZeroPhone, or just in case the original board is not available.

TP4056 charging+protection+UART board

Status Designed but not yet tested
Current version v1.0
Category Parts' replacements
Socket Charging board socket (back board)
Interfaces used UART (in parallel with the GSM modem)
Needs soldering Yes (to attach the board)
Software support Not necessary
Interrupt pin needed No

This board is a replacement for the TP4056-based charging+protection board (for LiIon batteries). In addition to the charging+protection functions, it also has a USB-UART chip on it (CP2102N), so that the debug console is accessible from the charging port (MicroUSB on the side of ZeroPhone), with TX and RX LEDs visible. It has to be soldered in place of the original charging+protection board. This board was designed, but hasn't yet been tested.

SH1106 OLED 1.3" breakout board

Status Designed but not yet tested
Current version v1.0
Category Parts' replacements
Socket Display socket (front board)
Interfaces used SPI0-0 (same as the original display)
Needs soldering Yes (to attach the board)
Software support Display library used by pyLCI
Interrupt pin needed No

This board is mostly identical to the OLED breakout that's the suggested one for ZeroPhone (made by Heltec) - actually, it's a reverse-engineered and improved copy of the Heltec 1.3" SPI OLED breakout, in case Heltec breakouts will be hard to obtain. They have the same pinout, too (not requiring a RST line, either, but still having the CS line). It also has reverse polarity protection, unlike the Heltec breakout - in case the SMD jumper header is accidentally miswired. This board was designed, but hasn't yet been tested.

SIM53X0 breakout

Status Not yet finished
Current version None
Category Parts' replacements
Socket GSM modem socket (back board)
Interfaces used UART (same as 2G modem)
Needs soldering Yes (to attach the board)
Software support Not yet tested
Interrupt pin needed No

This board is the often requested 3G addon for ZeroPhone. It's soldered in place of the 2G modem breakout, and needs an additional antenna. The board is not finished yet due to development problems (the battery connector is interfering with the board outline, for example). However, once it's ready and tested, it'll be available for purchase.

Keypad with scrollwheel

Status Not yet finished
Current version None
Category Parts' replacements
Socket Keypad board socket (front board)
Interfaces used GPIO5 (needs an OLED display that doesn't use the RST pin)
Needs soldering Yes (to attach the board)
Software support Not yet tested (but there's a suitable pyLCI driver)
Interrupt pin needed No

This is a replacement ZeroPhone keypad, modified to have a scrollwheel instead of volume up&down buttons. It uses a small hack for adding one more button to the keypad (activated when pressing the scrollwheel), using the additional interrupt GPIO available for the keypad addons, as well as a 555 timer. It has to be soldered in place of the original keypad, but it's not too hard to swap the original keypad with a modded one - only soldering iron, solder and a solder pump are necessary. This board is not yet fully designed, but will be soon.

Audio boards

Out of the box, ZeroPhone doesn't have lots of audio-related features - one audio output from the Pi Zero (on the 3.5mm jack), and speaker+microphone connected to the GSM modem - those are two separate audio systems that aren't interconnected in any way. Mod boards in this category are either adding new audio sources/sinks/interconnects, or improving the existing ones.

Audio buffer board

Status Designed but not yet tested
Current version v1.1
Category Audio boards
Socket Audio filtering socket (front board)
Interfaces used None
Needs soldering Yes (to attach the board)
Software support Not necessary
Interrupt pin needed No

This mod board is copied from the Raspberry Pi B+ schematic and filters the PWM signal from the Raspberry Pi before it gets converted into audio, making the resulting audio cleaner. It also breaks out the microphone pin from the 3.5mm jack, along with a ground pin. The mod board has to be soldered onto the ZeroPhone front board - but first, two jumpers on the front board have to be cut.

I2S microphone board

Status Designed but not yet tested
Current version v1.0
Category Audio boards
Socket 13-pin socket
Interfaces used I2S (can be used with other I2S boards, but not those that add audio input through I2S)
Needs soldering Yes (to attach the board)
Software support Linux kernel driver
Interrupt pin needed No

This mod board adds a mono microphone (a SPH0645) to the I2S connection of the Raspberry Pi. The microphone is front-facing, but, due to the way the SPH0645 microphone has to be placed, the mod board sticks out the ZeroPhone outline a little bit. The board has to be soldered onto the back board, on the 13-pin expansion socket. This board is *not* compatible with ZeroPhone Gamma, it supports ZeroPhones only starting with ZeroPhone Delta, due to the changes in 13-pin header pinout that had to be made to make this board smaller.

Hardware tinkering boards

8-pin SPI flash chip board

Status Designed but not yet tested
Current version v1.1
Category Hardware hacking
Socket 13-pin socket
Interfaces used SPI0-1 (can't be used with other SPI0-1 boards)
Needs soldering No (might be needed to desolder the chip from original board)
Software support Linux command-line
Interrupt pin needed No

This board allows reading and writing popular SPI flash chips - for example, 25xxx series (Winbond 25Q32B, 25Q64B, SST25VF080B etc.). Those are used as BIOS chips on PC motherboards, and OS storage on routers or other embedded devices (for example, ESP8266 modules with 4MByte flash use those chips). So, for instance, this mod board can be used to unbrick a laptop with BIOS problems, flash coreboot/libreboot on your laptop (or a BIOS with the Intel ME disabled), or re-flash a router if the firmware update process was interrupted because of a power outage. In general, it allows you to easily dump firmware from a device for reverse-engineering purposes, provided the device in question uses a 8-pin SPI ROM (many do).

16-pin SPI flash chip board

Status Designed but not yet tested
Current version v1.0
Category Hardware hacking
Socket 13-pin socket
Interfaces used SPI0-1 (can't be used with other SPI0-1 boards)
Needs soldering Yes (to connect the flash chip to the board)
Software support Linux command-line
Interrupt pin needed No

This board was developed specifically for BIOS chips used on some Thinkpads (like MX25L1605, MX25L3205 and MX25L6405), so that it's easier to flash Coreboot/Libreboot firmware on them. Other than that, the purpose and functionality is pretty much the same as for the 8-pin SPI flash chip board.

24xx EEPROM chip board

Status Designed but not yet tested
Current version v1.0
Category Hardware hacking
Socket 5-pin I2C socket
Interfaces used I2C (can be used with other I2C boards)
Needs soldering Yes (to connect the flash chip to the board)
Software support Linux command-line
Interrupt pin needed No

This board allows to read and write popular I2C EEPROMs - mostly, the 24xxx family, like 24С01/24C02/24C04 etc. Those EEPROMS are mostly used for configuration data storage - in wired/wireless network cards, USB/Bluetooth devices, computer monitors/LCD panels and many more other types of consumer electronics.

Networking/communications mod boards

It's also possible to add more ways to communicate to ZeroPhone - to be able to transmit/receive on radio frequencies, work with infrared signals and connect to wired networks, like RS485 or Ethernet networks.

ENC28J60 breakout mod board

Status Designed but not yet tested
Current version v1.0
Category Networking
Socket 13-pin socket
Interfaces used SPI0-1 (can't be used with other SPI0-1 boards)
Needs soldering No
Software support Linux driver
Interrupt pin needed Yes

This is a small board that accepts commonly used 10-pin ENC28J60 breakouts in order to add an Ethernet port to a ZeroPhone. There's a driver in the Linux kernel that already supports these, so the board only matches the breakout pins to the 13-pin expansion port pins. It needs one interrupt pin.

Infrared RX&TX board

Status Designed but not yet tested
Current version v1.0
Category Networking
Socket 5-pin IR socket (on top of back board)
Interfaces used GPIO4 and GPIO17
Needs soldering Yes (to enable the board)
Software support Linux command-line
Interrupt pin needed No

This is a simple board for the 5-pin header on the top of ZeroPhone, it adds infrared receiver and transmitter hardware, which is supported by LIRC. In order to use the 5-pin header and, as a result, the IR mod board, two solder jumpers on back board have to be shorted with solder (TODO: add pics and directions).

RFM-12/RFM-01 addon

Status Designed but not yet tested
Current version v1.0
Category Networking
Socket 13-pin socket
Interfaces used SPI0-1 (can't be used with other SPI0-1 boards)
Needs soldering No
Software support Not researched yet (but no problems expected)
Interrupt pin needed Yes

This is a small board that works with RFM-12 (ISM FSK transmitter/receiver) and RFM-01 (ISM FSK receiver) boards from HopeRF. It allows ZeroPhone to transmit, receive and intercept communications on 315/433/868/915MHz, depending on which frequency RFM module is tuned for by the factory. It needs one interrupt pin.

Cryptography-related mod boards

ATSHA204 board

Status Designed but not yet tested
Current version v1.0
Category Cryptography
Socket 5-pin I2C socket (needs to be soldered on the opposite side of the socket)
Interfaces used I2C (can be used with other I2C boards)
Needs soldering Yes (to attach the board)
Software support None so far
Interrupt pin needed No

This is an Atmel CryptoAuthentification addon with protected hardware-based key storage, based on ATSHA204A IC, for any purposes the user might want to use it for. This chip can cryptographically sign data, ensuring that messages sent from a certain ZeroPhone can be tied to that ZeroPhone hardware by the user, even if the SD card is copied and inserted into another ZeroPhone. This board is for the I2C socket and is actually meant to be sandwiched between the back board and the Pi Zero, during the assembly (so it's both easy to install and hard to remove, as Pi Zero is attached to the back board with 40 hard-to-remove solder connections).