Mod boards and expansion ports

A project log for ZeroPhone - a Raspberry Pi smartphone

Pi Zero-based open-source mobile phone (that you can assemble for 50$ in parts)

ArsenijsArsenijs 09/13/2017 at 14:314 Comments

ZeroPhone, apart from being an open hardware&software smartphone, is hackable and, therefore, has a couple of unused hardware interfaces - like SPI, I2C and I2S. They can be used for electronics tinkering, reverse-engineering and adding features - but what better purpose there could be for them, if not having optional hardware additions to ZeroPhone?

So, first additions have been attempted with ZeroPhone Gamma version - I've designed three boards - one audio filter board (I later found that the power regulator I picked was too noisy), one SPI flash chip board (where I've accidentally miswired the pinout, so it wasn't usable and would burn flash chips inserted into it), and one ATMega programming board (which should work, but didn't have enough silkscreen markings or documentation to actually be useful). For the next version, I'm working on 15 different mod boards, and I'll add some more later- they'll likely be offered as addons during the crowdfunding. Let's see what some of these mods can offer!

---------- more ----------

TP4056 charging+UART board

Currently, the MicroUSB socket on the side of ZeroPhone is only used for charging. One person (that received the ZeroPhone from the ZeroPhone Gamma batch) suggested adding a USB-UART on that port for debugging - so here we are! I reverse-engineered the original TP4056 board and designed in a USB-UART chip, CP2012N in QFN-20 - the smallest one I could find. This board also will require modifying the back board a little bit, bringing the UART testpoints to the bottom of the back board, but that doesn't seem like too hard of a task - though I haven't yet done it =) This board is supposed to replace the original TP4056 board, so some soldering will be required in order to swap the original board for this one - but, for the crowdfunding, I'm sure it won't be too much of a problem, especially with kits, where the board will be supplied separately anyway.

GitHub link

Microphone board

ZeroPhone is lacking in the "audio" part, compared to the smartphones we have: the audio on current smartphones is highly integrated (with lots of audio paths and some specialised ICs for switching them), and ZeroPhones are assembled from widely available parts, those two contradict each other. Currently, there's 1) GSM audio - speaker and microphone connected to the GSM modem, not accessible to the Pi Zero in any way 2) audio output from the Pi Zero on the 3.5mm jack, not accessible to the modem in any way. So, it's kind of limited - especially given that USB sound cards aren't really an option. 

Thankfully, there's I2S on the expansion header - so we can re-use the Adafruit findings about the SPH0645 and make a really simple board with this small and cute microphone. It's going to stick out of the board edge a little bit, but only because that's the only reasonable way of mounting it that I see so far.

GitHub link

RFM12/RFM01 board

GSM and WiFi can't be the only wireless communication standards that ZeroPhone can support. There are widely available RFMxx modules, and, for a start, this is a board that houses such a module, making it easier to add ISM band communications to ZeroPhone. Yeah, there isn't any official software support for Linux, as far as I know, but existing Python libraries will likely work just fine =) Boards for newer&better RFM modules will likely follow.

GitHub link

Infrared receiver/transmitter board

Infrared might be considered dead - but in my opinion, not quite! There are still devices that use infrared, like AC units, those large TVs in cafes, projectors, and I even have an old keyboard that operates on infrared. This board plugs into a 5-pin socket on top of the ZeroPhone and adds some IR LEDs and an IR receiver to the ZeroPhone, and the combo is well-supported by LIRC - in fact, IR signal to key event mapping was my first completed Raspberry Pi project!

GitHub link

SPI flash chip&I2C EEPROM programming boards

SPI flash chips are widely used for storing various firmwares - on laptop&PC motherboards (BIOS/UEFI storage), routers and other embedded devices, boards like ESP8266-modules and, undoubtedly, lots of other interesting tech. Those chips can be read using an SPI port - which ZeroPhone, very conveniently, has on the 13-pin expansion header. What does having this board mean?

  1. Ability to re-flash BIOS on your x86 device - for example, with Libreboot/Coreboot/BIOS with Intel ME neutralized. As of lately, it's harder and harder to flash a custom BIOS through software - that means we have to revert to hardware flashing methods, and this board takes a lot of pain out of hardware flashing.
  2. Ability to fix a router with broken firmware, or revert to a known working one. Sometimes, flashing OpenWRT/Lede/new stock firmware on a router just goes wrong, and router is bricked, sometimes needing something like TFTP over an Ethernet cable and USB-UART to revive it, and sometimes being completely unresponsive to even methods that are claimed to be working. Or, say, you want to play with new firmwares for your router, without having to rely on software failsafes for re-flashing - then flashing firmware into the chip itself is the most reliable way. Also, it makes you able to easily do a safe backup of crucial areas, like RF calibration partitions.
  3. Doing reverse-engineering of new gadgets that use this kind of flash chip - which can be encountered occasionally. 

So, ZeroPhone with this board essentially works as an SPI flash chip programmer. The killer feature of this board is these zero-insertion-force sockets I've found on TaoBao:

With this kind of sockets, you don't need to do any soldering when you're working with the chip, apart from needing to desolder it from and solder it to the target board (say, your laptop's motherboard) - you can simply insert the chip into the socket on the mod board. And, if you get one more socket and solder it onto the target board, there's absolutely no soldering necessary from that point - unplug the chip from socket on the target board, insert into a socket on the SPI flash board, flash new firmware, unplug chip and plug it into the target board. To be honest, I can't wait to demo it once the working version of this board arrives.

Some laptops (for example, one model of Thinkpads I've encountered while helping with a Libreboot install) have a 16-pin SPI flash chip instead of a 8-pin one. I've also found those same ZIF sockets for 16-pin flash chips - so, those are going to be included in the crowdfunding as well =)

There's also a board for working with I2C EEPROMs, widely used for storing configuration parameters in various devices - for example, computer monitors use these to store information about supported resolutions (and make it accessible to the graphics card).

This trio of boards is a good set of boards for various hardware hacking purposes. Any ideas on more boards for hardware hacking?

GitHub link - 8-pin SPI flash adapter

GitHub link - 16-pin SPI flash adapter

GitHub link - I2C EEPROM adapter

These are only some of the mod boards - there are also the 3G modem board, the ENC28J60 Ethernet adapter, some boards to fit into the ESP-12 slot (that's likely going to be free on Zero W-based ZeroPhones), I just wanted to show some examples. If you have any mod board ideas, let me know in the comments, or email me, all that =)


Blecky wrote 09/14/2017 at 04:41 point

Do you have a link to those ZIF sockets?

  Are you sure? yes | no

Arsenijs wrote 09/14/2017 at 11:30 point

There's no link as such, just search TaoBao for sok-spi-8w and sok-spi-16w , there are many various sellers. If you need small quantities, I can forward some of those to you =)

  Are you sure? yes | no

Blecky wrote 09/14/2017 at 11:40 point

Oh cool! I'll see how I go first as shipping will probably be more to get them to Aus from Latvia than to just buy them :P

  Are you sure? yes | no

Arsenijs wrote 09/14/2017 at 11:46 point

It's really cheap to ship things from Latvia. Next time I'm at the post office, I'll ask for the shipping price =) Which ones do you need - 8-pin, 16-pin or both?

  Are you sure? yes | no